2007年11月26日

乙一によるジョジョ第4部ノベライズ、「The Book」を読んだ

26日が発売日だったはずですが、すでに売っていた(ライトノベルにはよくあること)ので購入、読了しました。以下感想です。なるべく未読の方に配慮した文章(というより、未読の方に薦める文章)にしたつもりですが、内容に触れる部分もあるので気になる方は閲覧に注意してください。

乙一先生が4部のノベライズをなさるという話を聞いたとき、いくらご本人がジョジョ好きといっても作風が合わないんじゃないかと思った一方で、乙一作品と4部は「日常の中の異常性」という点で通じるものがあるので以外と合うかもしれないとも思ったのですが、前者の不安は杞憂でした。もう一つの不安要素だった戦闘描写も、知略を尽くしたジョジョらしいものになっていて、「ドドド」という音が聞こえてきそうな迫力がありました。原作にないオリジナルの話ですが原作らしさにあふれています。良質のカバー曲のような印象ですね。非常に良く出来たノベライズだと思います。

難点としては、漢字が少ないので少し読みにくいという点があげられます。JUMP J-BOOKS内の作品という位置づけや原作が少年漫画ということもあって仕方ないのかもしれませんが、それにしては装丁の豪華さや値段が少年向きとも思えませんし、原作の第4部自体10年以上も前に連載されていた作品ですし、マーケット戦略にブレがあるように思えます。

原作の登場人物や設定も登場するのでジョジョ第4部を知らないと話がわかりづらいかもしれませんが、そのぶん原作を知っているとニヤリとできる部分も多いです。ジョジョ好きな方はかなり楽しめるのではないでしょうか。

ラベル:ジョジョ 乙一
posted by bakemoji at 02:38| Comment(0) | TrackBack(0) | | このブログの読者になる | 更新情報をチェックする

2007年11月22日

どう書く?.orgの「文字列の均等分割」問題をC#で解いてみた

どう書く?.orgの「文字列の均等分割」問題をC#(2.0)で解いてみました。文字列を指定された数に除算、剰余算を使わないでなるべく均等に分割するという問題です。出題者の方の

この問題は、除算だけでははく算術演算とか、文字列の長さをstrlenの類いで測るとかをしなくても、多分書けるのではないかと思います。

という発言を意識して解いてみました。長さの測定は使用せずに済みましたが、算術演算(インクリメント、デクリメント)がどうしても消せませんでした。以下がそのコードです。

using System;
using System.Collections.Generic;

class Program
{
    public static void Main()
    {
        string s = "82e482df82e682e882e082cd82a982c882ab90a282cc82c882a982f082c882b082ab82ed82d182c281T82a082a982b582ad82e782b782d982c782c98el8c8e8f\82e682d082c982e082c882e882ca82ea82ce96d882cc82b582bd82ad82e782aa82e882e082c482e482ad";
        Divide(4, s);
        Divide(5, s);
        Divide(6, s);
    }

    static void Divide(int n, string s)
    {
        IEnumerator<char> ci = s.GetEnumerator();

        for (int i = 0; i < n; i++)
        {
            foreach(char c in Sub(ci, Skip(i, n, s)))
            {
                Console.Write(c);
            }
            Console.WriteLine();
        }
    }

    static IEnumerable<char> Skip(int offset, int n, string s)
    {
        int i = 0;
        foreach (char c in s.Substring(offset))
        {
            if (i == 0)
            {
                yield return c;
                i = n;
            }
            i--;
        }
    }

    static IEnumerable<S> Sub<S, T>(IEnumerator<S> iterator, IEnumerable<T> counter)
    {
        IEnumerator<T> ci = counter.GetEnumerator();

        while (ci.MoveNext())
        {
            if (! iterator.MoveNext())
            {
                break;
            }
            yield return iterator.Current;
        }
    }
}

戦略としては

  1. 何文字ごとに分割するかを求める
  2. 部分文字列を作成する

というオーソドックスなものです。C#2.0にはIEnumerable<T>を入出力とするようなユーティリティメソッド群がライブラリに用意されていないため、どうしても自作メソッド内でインクリメント、デクリメントを使うことになってしまいました。Pythonでいうrange()、enumerate()、cycle()あたりがあればインクリメント、デクリメントも使用しないで書けると思うのですが。

posted by bakemoji at 14:00| Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

2007年11月13日

Windows Live Messengerに追加できるボット、Windows Live Agents の「まいこ」が素敵

以前記事にしたWindows Live Agentsですが、Live Messenger アドバイザー まいこが素敵です。
maiko_ga.jpg
これはひどい。

ほかにも特殊な反応があるかも知れません。なかなか粋なことをしますね。

posted by bakemoji at 21:05| Comment(0) | TrackBack(0) | Windows Live | このブログの読者になる | 更新情報をチェックする

Windows Live Writer でSeesaa ブログに投稿するさいのメモ

Windows Live Writer でSeesaa ブログに投稿するさいに注意しておくとよいことを自分用にメモしておきます。まだいろいろ試行錯誤中なので誤った情報もあるかもしれません。ご注意ください。

アカウントの設定

まず、Live Writer からSeesaa ブログへ投稿するためにアカウントを設定します。Live Writer を初めて起動したときや[ブログ]>[ブログ アカウントの追加]でアカウントの追加に必要な情報を入力するためのウィンドウが表示されます。まずは[他のブログ サービス]を選択します。続いて、[ブログ ホームページのURL]にはとりあえず自分のブログのURL、[ユーザ名]と[パスワード]にはSeesaa ブログに登録したメールアドレスとパスワードを入力します。

すると、Live WriterがSeesaa ブログに情報を取得しに行きますが失敗し、手動で設定項目を埋めることになります。[使用するブログの種類]は"Movable Type API"を選択し、[ブログのリモート投稿 URL]には"https://blog.seesaa.jp/rpc"を入力します。入力情報が正しければ無事Seesaa ブログから情報を取得でき、記事を投稿できるようになります。

なお、Seesaa ブログのAPIはBlogger、MetaWeblog、Movable Type互換のXML-RPC APIなので、[使用するブログの種類]は"Blogger"や"MetaWeblog API"を選んでも大丈夫かもしれませんが、試していません。

記事投稿後の注意点

記事を投稿したあとは、ブログの表示を確認したほうが良いかもしれません。再構築が行われず、「記事はブログに登録されているが表示はされない」という状態になっていることがあります。

追加情報の設定

キーワード(タグではなく、キーワードマッチ型の広告に使われるもの)やトラックバック、pingサーバへの更新通知などは記事入力エリアの下部にあるプロパティ([表示]>[プロパティ]または記事入力エリア右下のボタン)で指定できます。pingサーバは[ツール]>[オプション]>[pingサーバー]で指定できます。

タグはLive Writerで挿入してもSeesaa ブログには認識されないようです(タグクラウドやタグ検索が正常に動作しません)。記事投稿後にSeesaa ブログ側で設定しなければならないようです。下記情報は誤りでした。

Live Writer でSeesaa ブログのタグを挿入するには、Seesaaブログに準拠したタグプロバイダを作成します。[挿入]>[タグ文字]で表示されるウィンドウの下部、[タグプロバイダ]リストから"(プロバイダのカスタマイズ...)"を選び、[追加]ボタンを押します。新しいタグプロバイダの設定を入力するためのウィンドウが表示されるので、[プロバイダ名]に"Seesaa"、[タグのHTMLテンプレート]に"<a href="/tag/{tag-encoded}">{tag}</a>"、[タグ用HTMLの区切り文字]に" "(半角空白)、[タグリストのHTMLキャプション]に"<div class="tag-word">タグ:{tag-group}</div>"を入力します。

posted by bakemoji at 00:38| Comment(0) | TrackBack(2) | Windows Live | このブログの読者になる | 更新情報をチェックする

2007年11月11日

Windows Live Writer のアドインで記事中のソースコードを彩る

先頃正式版がリリースされたWindows Live サービスのうちのひとつ、ブログ投稿ツールのWindows Live Writer には、ユーザーが作成したアドインを追加できます。今回は、ソースコードを記事に挿入するさいに便利なアドインをいくつか試してみました。

ひとつめは「Code Snippet plugin for Windows Live Writer」アドインです。これはCSSで装飾したソースコードを記事中に挿入するアドインで、C#、VB、MSH、TSQL、CSS、HTMLのコードを装飾してくれます。例えばC#のコードならば

   1: using System;
   2:  
   3: class HelloWorld
   4: {
   5:     public static void Main(string[] args)
   6:     {
   7:         Console.WriteLine("Hello, World!");
   8:     }
   9: }

のようになります。HTMLならば

   1: <span style = "color : #FF0000;">こんにちは、世界。</span>

のようになります。

ふたつめは「Paste from Visual Studio」アドインです。これはその名の通りVisual Studioからコードを装飾のついた状態で貼り付けます。先ほどのC#のコードをVisual Studio上で記述、コピーしたのちにこのアドインを使用すると

using System;

class HelloWorld
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

となります。

どちらのアドインも非常に便利です。「Paste from Visual Studio」はコードフォーマットや対応言語に関してVisual Studioの装飾をそのまま持ってこれる点で有利ですが、「Code Snippet plugin for Windows Live Writer」は行番号も自動で付けてくれる点で勝っています。ソースコードを記事中に書くことが多い方は導入してみてはいかがでしょうか。

posted by bakemoji at 19:03| Comment(0) | TrackBack(0) | Windows Live | このブログの読者になる | 更新情報をチェックする

2007年11月10日

Windows Live Agents について

最近Windows Live Messenger 2008 (8.5) がリリースされました。見た目が少し変わったくらいで変更はほとんどありませんが、同時にリリースされた、Messengerに追加できるボットWindows Live Agentsが面白いです。

Windows Live Agents とは、メッセンジャーにボットのLive IDを追加することでそのボットとチャットしたりボットに検索などの仕事を依頼したり出来る機能です。日本語のボットには現在のところLive Messenger アドバイザー まいこ とエンカルタ辞書サービスがあります。英語のボットはLive Agents チームのブログWikipediaのLive Agentsの項にいろいろ掲載されています。

また、前述のブログではLive Agentsの作成方法についての記事(Tipsカテゴリ)やSDKの配布やリリースノート(Announcementカテゴリ)もあります。Live Agents は自然言語による双方向処理のための技術、BuddyScriptを使って作成するそうです。自分でもボットを作成して見たい方はブログを参照するとよいでしょう。

ラベル:Windows Live
posted by bakemoji at 21:13| Comment(0) | TrackBack(0) | Windows Live | このブログの読者になる | 更新情報をチェックする

2007年11月08日

Another Century's Episode 3 プレイ記 その3

ブラックサレナでVSミッション1対1最強の敵っぽいニルヴァーシュを攻略するときの戦略についてメモしておきます。ブラックサレナで攻略していくなかで生まれた戦略ですが、基本的にはどの機体でも同様の方法でいけると思います。

ニルヴァーシュの特徴として、動きはダッシュ、回避ともに素早く、攻撃は射撃、近接ともに一発が重いかわりに連射性がないです。また、攻撃動作がわかりやすいのでセブンスウェルとエクスペルエアーカット以外の攻撃は見てからかわせます。

基本的な戦術は「こちらはあまり移動せずに攻撃、敵の近接を回避してまた攻撃」です。中距離でほとんど動かずに射撃していると上昇から近接攻撃をしてくるのでこれを回避してなんらかの攻撃を加えます。

上記を繰り返していると車に変形して追いかけてきます。距離1000程度を保って逃げつつ、できたら攻撃します。

車から通常形態に戻ったあとはライフルかセブンスウェルで攻撃してきます。セブンスウェルは発動されてしまうと回避は困難なので、ライフルを撃たせるべく距離1200前後を保って逃げます。ライフルを撃ってきたらかわし、基本戦術に移行します。

セブンスウェルを発動されてしまった場合、エウレカのセリフが始まったらすぐにニルバーシュと逆方向にボソンジャンプすることで回避できることもありますが、狙ってやるのは難しいのでなるべくライフルを撃たせます。

ある程度ダメージを与えると防御力が上がって射撃ではほとんどダメージを与えられなくなります。一気に勝負を決めたいならディストーションアタックで、時間を気にせず手堅く行くならそのまま近接攻撃の回避ざまに射撃で攻撃します。

上記パターンにはめれば時間はかかりますが無傷で倒すことも可能です。実際、難易度ハードでも無傷で撃墜できました。

ラベル:ACE3 ゲーム
posted by bakemoji at 17:46| Comment(0) | TrackBack(0) | ACE3 | このブログの読者になる | 更新情報をチェックする

2007年11月07日

PowerShell 2.0 CTP リリース

でたみたいですね。追加点、改良点の概要はWhat's New in CTP of PowerShell 2.0にあります。

ざっと読んだところ、1.0との互換性に注意しつつ機能強化が図られているようです。基本的には1.0のスクリプトは動作するようですが、新しいキーワード、変数、コマンドレットが追加されたので名前が衝突する場合はパースエラーになったり誤動作の原因になったりしそうです。

気になるのは新しく追加されたOut-GridViewコマンドレット(ソートなどが可能なGUIの表に出力)とGraphical PowerShell(グラフィカルなシェル。開発+実行環境?)が.NET Framework 3.0を要求することです。GUIにWPFを使用しているのでしょうか。

実験環境がないため試せませんが、追加点や改良点を見るになかなか良さそうではあります。ベータ版や正式版のリリースが楽しみです。

posted by bakemoji at 22:52| Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2007年11月03日

C#でテキストエディタを作成したい

ここしばらくはPowerShellやPython / IronPythonに夢中でしたが、最近またC#熱が上がってきてC#で何か作りたくなったのでテキストエディタを作ることにしました。といっても本格的なものではなく、コマンドライン上で動く行エディタです。Unixのedが有名ですね。

なぜ行エディタかというと、テキストエディタViViの作者である津田さんが公開されている技術文書を見て、自分でも作ってみたくなったからです。

そのまま作成してはつまらないのでいろいろ実験することにしています。例えば、行を格納するデータ構造とそれらを格納するデータ構造をそれぞれいくつか作成して性能を比べてみたり、ユーザがコマンドを追加可能にしたりといったことを試してみる予定です。

今後は備忘録として製作の進捗をブログに書いていこうと考えています。最終的には津田さんのようにしっかりした技術文書として公開できると良いのですが。

posted by bakemoji at 03:13| Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は90日以上新しい記事の投稿がないブログに表示されております。