2007年08月31日

Final Fantasy XII IZJS プレイ記その4

リヴァイアサンへ連行されるもアーシェ王女を救出し、ついでにパンネロも加えて脱出。ついにレギュラーメンバー全員が揃いました。王女殿下たっての希望で今度は砂漠を越えたところにあるレイスウォール王墓に向かいます。

砂漠を抜けてレイスウォール王墓にたどり着くとガルーダに襲われます。ですが途中レアモンスターから盗んだシールドアーマー装備のバルフレアとフランが圧倒的な強さで粉砕。ガルーダを弱体化させるイシクロの実を使う必要もありませんでした。王墓に入ると今度はデモンズウォールが襲ってきます。確かちょっと強い剣が手に入るので倒してもいいのですが、剣を装備できるメンバーがいないため逃げました。2回目のデモンズウォールはミストナックを使って速攻で撃破しました。そのまま奥まで進んで召喚獣ベリアスも撃破。覇王の証である破魔石、暁の断片を手に入れます。

遺跡を出たところでまたもや帝国の戦艦に連行されます。今度はシヴァです。アーシェの護衛だったウォースラがジャッジギース(というよりその後ろにいるヴェイン?)と、破魔石と引き換えに王女の即位とダルマスカの再興をするという密約を交わしており、破魔石をギースに引き渡します。破魔石の駆動に感化したフランの暴走に乗じて戦艦から脱出しようとしますが、それを阻止しようとするウォースラと戦闘に。硬いバルフレアとフランが活躍してウォースラも難なく撃破。脱出します。

破魔石という力を手に入れたアーシェ殿下、使い方がわからないので使い方知ってそうなガリフ族に会いに行くから護衛してとのこと。なんだかんだで護衛することに。ガリフの地ジャハラはラバナスタの南、ギーザ草原を越えた先にあるそうなので、次はそこへ向かいます。

ジョブについてですが、アーシェは黒魔導師、パンネロは白魔導師にしました。パンネロはモンクか機工士か白魔導師かで迷いましたが、一人くらい回復選任のメンバーがいてもいいだろうと考え白魔導師にしました。アーシェについてはナイトと赤魔導師も候補にあったのですが他に物理攻撃系が4人もいるので魔法攻撃専門の黒魔導師にしました。

正直なところ、ぼくはアーシェの復讐志向には全く共感できません。アーシェは目には目を、歯には歯をってわけでダルマスカは帝国に復讐するよ!みたいなことを言ってるんですが、アーシェ個人の復讐心をダルマスカの総意みたいに言うのはどうなのでしょうか。帝国から来た執政官のヴェインは裏の目的はあるにしてもしっかりダルマスカを治めてくれるみたいですし、アーシェはいらぬ火種を起こそうとしているようにしか思えないからです。なので、このあたりから続くアーシェ殿下の復讐のための「力」探求の旅は進めるのが億劫です。まあそんなことを言ってもどうしようもないので、そのまま進めます。

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

2007年08月29日

Final Fantasy XII IZJS プレイ記その3

ビュエルバに到着し、ゲストメンバーにラモンが加入。ラモンがいると経験値が分散されてしまうのですぐにバッガナモン一味に会いに行きます。非常に厳しい戦いでしたがグラディウス装備のヴァンによる圧倒的な攻撃力、フランのスロウとケアル、バッシュの豊富なHPによる壁という連携で辛くも勝利を収めました。別に倒さなくてもよいのですが、イベントシーンにトレジャーが見えて中を確認したかったので頑張りました。中身はギルでしたが……。

ラモンと別れたあとはオンドール候に会いに行かずに骨相手にお金稼ぎとレベル上げ。全員がレベル20を越えたあたりで切り上げ、続いてモブ退治に入ります。テクスタ、花サボテン、レイス、ニワトリス、ニーズヘッグ、ロックタイタスと、この時点で戦えるものは全て倒しました。相変わらずスロウが大活躍です。風属性の効かないニワトリスには大苦戦しましたが、ほかはわりと楽に戦えました。

モブを全て倒してやることがなくなったのでオンドール候に会うとそのまま戦艦リヴァイアサンへ連行されてしまいました。リヴァイアサン内にはパルチザンやクロスボウといった武器(おそらくリヴァイアサン脱出後店に並ぶレベル)が落ちているのでそれを拾いつつ探索。アーシェ王女が仲間に加わったところで今回は終了。

アーシェのジョブに悩んでいます。赤魔戦士、ナイト、黒魔導師のどれかにしようと思うのですが。

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

2007年08月27日

Microsoftの新検索インターフェース「Tafiti」について

CNET Japanのニュースを見て興味を持ったので、Microsoftの新検索インターフェース「Tafiti」を試してみました。動作にSilverlight1.0が必要で少しためらいましたが、もう1.0はもうRCですし大丈夫かなとインストール。無事ページが表示されました。

いろいろなニュースでも報じられているように、見た目は非常に美しいです。また、アニメーションも豊富です。リング状に配置されたウェブ、画像、ニュースなどの検索アイコンをクリックすると、リングが回転するとともに検索結果が選んだアイコンにあわせて変わったりします。家のものより性能の良い学校のPCで実行したというのもありますが、それほど重さは感じませんでした。ただ、アニメーションははじめのうちは目新しく感じられて良いですが、何回も使っているうちにおそらくうっとうしく感じるようになりそうです。

IE7だけでなく、Firefox2.0でも問題なく動作しました。クロスプラットフォームに関してはSilverlightアプリケーションということで達成されているようです。

以下、いくつかのスクリーンショットです。最初のページはこのような感じで、シンプルです。
start.jpg
検索結果画面です。左側中央に検索対象を変えるアイコン、右側に「シェルフ」と呼ばれる検索結果の保存場所があります。Office クリップボードのような感覚です。
results.jpg
シェルフをクリックして保存しておいたページの一覧を表示したところです。ここから保存しておいたページを開いたり、削除したりできます。なかなか使いやすいです。
shelf.jpg
Firefoxでも動作します。表示に関しても崩れた部分などは見当たりませんでした。シェルフなどの機能も問題なく動作します。
firefox_shelf.jpg

Silverlightのデモとしてはかなり良くできているのではないでしょうか。なかなか楽しみですね。

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

2007年08月25日

Final Fantasy XII IZJS プレイ記その2

ラバナスタ王宮からガラムサイズ水路、ナルビナ地下牢、バルハイム地下道と街によることも出来ずに戦いばかりで大変でした。続いてバッシュが正式にメンバーに加わりさらわれたパンネロを助けにビュエルバに向かうことになりましたが、戦力が整ったので西ダルマスカ砂漠でお金とライセンスポイントを稼ぎました。高値で売れるあまい果実を落とすアルラウネをチェインし続けるためにうろうろしていたら、ダイヤの腕輪を取れました。ただ、ダイヤの腕輪って確か終盤のトレジャー以外はあまり意味がなかった気がするんですよね……。とりあえず、雷系の魔法を使ってくる敵用に使うことにします。

ある程度あまい果実がたまったら、次はレアモンスターのリンブルウルフを狩ろうとウルフをチェイン(リンブルウルフの出現条件はウルフのチェイン)。FF12ではリンブルウルフからかなり強い風属性のダガー、グラディウスを盗めたのでそれを狙ってのことです。狙い通りグラディウスを盗み、あやうく全滅されそうになりながらもなんとか倒しました。FF12 IZJSではガンビット屋に最初から「○○が弱点の敵」や「○○を吸収しない敵」を売っているので、属性武器を使いやすくなりました。これでしばらくはシカリのヴァンが主力です。

ジョブも固まってきました。バルフレアはFF12のときにモーションが気に入って槍を使わせていたことから今作でも槍を使わせようとウーランにしました。フランは弓を使わせたかったので弓使いか時空魔戦士かで迷いましたが、時空魔法全てを使いこなす上に重装備とボウガンを装備できて攻守ともに強そうな時空魔戦士にしました。 まだ序盤とはいえ強敵相手ではスロウがけっこう活躍しますしボウガンは威力高いし、かなり強い気がします。バッシュは「世を捨て情けを捨て、君主のために命をかける剣士」というのが似合っている気がしたのでもののふです。バッシュは力は強いですが魔力が低いので、刀は正直微妙のような気がしますがまあなるようになるでしょう。刀を持った姿は非常に格好良いですし。

次はビュエルバです。湧き出る骨相手にレベル上げするのが楽しみです。

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

2007年08月22日

「FINAL FANTASY XII IZJS」を購入しました

FINAL FANTASY XII INTERNATIONAL ZODIAC JOB SYSTEM(以降FF12 IZJS)を購入しました。FF12は持ってるんですが、ジョブシステムが面白そうなこと、英語音声が良さそうなことから購入に踏み切りました。

現在はダラン爺の指示により、ギーザ草原で太陽石を手に入れたところです。ヴァンのジョブは見た目が身軽なのでシカリにしました。FF12のときは短剣は長剣の劣化バージョンにしか感じませんでしたので短剣メインのシカリは将来的に戦力不足になりそうで不安ですが、イメージ先行でいくことにします。

英語音声に関しては、ヴェインが少し声が軽すぎるような気もしますが、他はおおむね良好です。それと、新しく追加されたハイスピードモードも非常に便利です。動きは多少かくかくしますがさくさく進むので、広大なマップを行き来するのが大変楽になりました。クリアまでの時間もだいぶ短縮されそうです。

今までのところ元のFF12よりおおむね快適で良い印象です。さて、ジョブの縛りによってモブや召喚獣などのモンスター狩りがどうなっているのか、楽しみです。

ファイナルファンタジーXII インターナショナル ゾディアックジョブシステム(シークレットDVD同梱)ファイナルファンタジーXII インターナショナル ゾディアックジョブシステム(シークレットDVD同梱)
販売元 : Amazon.co.jp ゲーム
価格 :
[タイトル] ファイナルファンタジーXII インターナショナル ゾディアックジョブシステム(シークレットDVD同梱)
[ブランド] スク..
>>Seesaa ショッピングで買う
ラベル:ゲーム FF12
posted by bakemoji at 23:20| Comment(0) | TrackBack(0) | FF12 | このブログの読者になる | 更新情報をチェックする

2007年08月20日

PowerShellにおけるオブジェクトの拡張について

オブジェクトの動的な拡張については、PythonやJavaScriptといった動的言語に慣れている方にはお馴染みですね。PowerShellでは、Add-MemberコマンドレットやPSObjectを利用してオブジェクトを拡張できます。まずは、Add-Memberコマンドレットを使用する例です。

PS > $x = 1
PS > $x | Add-Member ScriptMethod Greet { "Hello, my number is $this."  }
PS > $x.Greet()
[System.Int32] に 'Greet' という名前のメソッドが含まれないため、メソッドの呼び出しに失敗しました。

失敗してしまいました。Add-Memberコマンドレットを使用する場合、拡張したいオブジェクトがPSObjectかどうか(-is [PSObject])に注意が必要です。PSObjectならばいいのですが、PSObjectでない場合はAdd-MemberのpassThruスイッチを指定してAdd-Memberが値を返すようにしないと拡張したオブジェクトを使用できません。

PS > $x -is [PSObject]
False
PS > $x = $x | Add-Member -passThru ScriptMethod Greet { "Hello, my number is $this."  }
PS > $x.Greet()
Hello, my number is 1.
PS > $x -is [OSObject]
True

Add-Memberは入力が非PSObjectだった場合PSObjectでラップして拡張するので、新しく作られたPSObjectをpassThruスイッチを指定することで取得するのです。$xはPSObjectでラップされたので、さらにオブジェクトを拡張するときは-passThruは必要ありません。

つづいてPSObjectを利用してオブジェクトを拡張します。これには、PSObjectプロパティを使用します。PSObjectプロパティは特殊で、PSObjectでないオブジェクトに対してPSObjectプロパティを取得しようとすると、エラーにならずにそのオブジェクトがPSObjectでラップされます。例を見てみましょう。

PS > $x = 1
PS > $x -is [PSObject]
False
PS > $x.PSObject

Members             : {CompareTo, Equals, GetHashCode, ToString...}
Properties          : {}
Methods             : {CompareTo, Equals, GetHashCode, ToString...}
ImmediateBaseObject : 1
BaseObject          : 1
TypeNames           : {System.Int32, System.ValueType, System.Object}

PS > $x -is [PSObject]
True

最初は$xはただのInt32であるため$x -is [PSObject]はFalseを返しますが、一度PSObjectプロパティにアクセスしてからは$x -is [PSObject]がTrueを返すようになっていますね。

それでは、$xを拡張してみましょう。先ほどと同様に、Greetメソッドを追加します。

PS > $method = New-Object System.Management.Automation.PSScriptMethod `
>> Greet, { "Hello, my number is $this." }
>>
PS > $x.PSObject.Members.Add($method)
PS > $x.Greet()
Hello, my number is 1.

メソッドを追加できました。オブジェクトの拡張には基本的にはAdd-Memberコマンドレットを使用しますが、PSObjectプロパティを利用するやり方はプログラマには馴染みやすいかもしれませんね。

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

2007年08月18日

PCを買い換えたい

現在、自宅のPCは

  • Windows XP SP2
  • Celeron 2.4GHz
  • DDR RAM 512MB
  • オンボードグラフィック

といった構成で、現代的なスペックと比べるとさすがに厳しくなってきました。そろそろ買い換えたいのですが、新しいPCの構成や価格、データの引継ぎなど、色々考えることが多くてなかなか腰があがりません。

たぶんこのまま来年ぐらいまで買わないのだろうなぁ。

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

2007年08月09日

PowerShellにおける列挙と.NETの列挙子について

PowerShellには、列挙子を利用したコレクションの列挙方法として制御文のforeachとForEach-Objectコマンドレットがあります。 基本的にIEnumerableインターフェイスを実装した型ならば列挙してくれますが、プログラマブルな趣味、もっぱらスクリプティングForEach-Objectって・・・でも述べられているように、文字列とハッシュテーブルは列挙してくれないようです。 「PowerShell イン アクション」によると、スカラー性を維持したいためだそうです。 また、制御文のforeachとForEach-Objectコマンドレットの違いとして、foreachが値の配列を一括で生成してからループするのに対して、ForEach-Objectは値を一つ生成するごとにループするそうです。 ForEach-Objectの方が大きなファイルの処理に向いていますね。

とりあえず、簡単な例でIEnumerableを実装すれば列挙可能かどうか実際に試してみました。C#で以下のクラスを作成し、dllにします。

using System;
using System.Collections;
using System.Collections.Generic;

namespace Mojibake
{
    public class Test : IEnumerable<int>
    {
        public IEnumerator<int> GetEnumerator()
        {
            for (int i = 0; i < 5; i++)
            {
                yield return i;
            }
        }
        
        IEnumerator IEnumerable.GetEnumerator()
        {
            for (int i = 0; i < 5; i++)
            {
                yield return i;
            }
        }
    }
}

あとはPowerShellからdllをロードして実行します。

PS > [void][Reflection.Assembly]::LoadFile("C:\...\test.dll")
PS > $test = New-Object Mojibake.Test
PS > foreach ($i in $test) { $i }
0
1
2
3
4
PS > $test | foreach { $_ }
0
1
2
3
4

また、列挙にはIEnumeratorを利用するため、IEnumerator<T>のみを実装しているような場合は列挙してくれないようです。上記のクラスTestのIEnumerable.GetEnumerator()メソッドを以下のように変更します。

IEnumerator IEnumerable.GetEnumerator()
{
    throw new NotSupportedException("IEnumerable.GetEnumerator() is not supported.");
}

C#ではforeachで問題なく列挙できますが、先ほどと同様にPowerShellでロードして列挙を実行すると

PS > $test | foreach { $_ }
コレクションの列挙中に次の例外がスローされました: "IEnumerable.GetEnumerator() is not supported."。

このように、例外が発生してしまいます。まあ、PowerShellにおいてジェネリックな列挙に意味があるかというとあまりない気もしますが。

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

2007年08月08日

PowerShellにおけるコレクションの平滑化とコンマ演算子について

PowerShellでは出力オブジェクトのコレクションが場合によって平滑化されるようです。

PS > $xs = (1, 2), (3, 4), (5, 6)
PS > $xs.length
3
PS > $xs | foreach { $_.length }
2
2
2

$xsは長さ2の配列を要素にもつ長さ3の配列です。では、ForEach-Objectコマンドレットで単純に各要素を返した結果を$ysに代入するとどうなるでしょうか。

PS > $ys = $xs | foreach { $_ }
PS > $ys.length
6

要素数が6とでました。代入に伴い、配列の配列が平滑化されてただの配列になっていますね。このほうが便利な場合もありますが、そうでないときもあります。構造を保ったまま代入するにはどうしたらよいでしょうか。

平滑化を阻止する方法の一つに、コンマ演算子を利用する方法があります。単項のコンマ演算子は、被演算子を要素として持つ配列を生成します。これをパイプラインオブジェクト$_につけることで配列を配列のまま受け取ることが出来ます。

PS > $ys = $xs | foreach { ,$_ }
PS > $ys.length
3
PS > $ys | foreach { $_.length }
2
2
2

配列の配列を$ysに代入することができました。

今度は、ForEachコマンドレットで配列を返すことを考えましょう。

PS > $xs = 1..5 | foreach { $_, ($_ * 2), ($_ * 3) }
PS > $xs.length
15
PS > $xs | foreach { [string]$_ }
1
2
3
2
4
6
3
6
9
4
8
12
5
10
15

$xsには配列の配列を代入したつもりですが、ここでもやはり平滑化されています。これもまたコンマ演算子を利用することで解決できます。

PS > $xs = 1..5 | foreach { ,($_, ($_ * 2), ($_ * 3)) }
PS > $xs.length
5
PS > $xs | foreach { [string]$_ }
1 2 3
2 4 6
3 6 9
4 8 12
5 10 15

$xsに正しく配列の配列が代入されました。

PowerShellは他言語経験者にとって学習しやすい言語だとは思いますが、それでもやはりこういったユーザを驚かせる動作はところどころ存在しますね。使いこなすうえで注意が必要です。

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

2007年08月05日

「Windows PowerShell イン アクション」について

Windows向けの新しいシェル、Windows PowerShellの、製作者自身の手による解説書です。現在第4章まで読み終わりました。

いわゆるレシピ集、Tips集といったものではなく、エンジンの動作や言語の仕様に関する解説書です。レシピはWebをあさればでてきますが、言語の詳細な解説はWebではなかなかないので、日本語で読めるのはうれしいですね。著者も述べていますが、「どういった機能があるか」だけでなく、「どうしてそうしたか」という設計の思想や理由についても書かれているのが素晴らしいです。

PowerShellに興味のある人はもちろんのこと、内部のメカニズムに興味のある人に特におすすめです。

Windows PowerShell イン アクション [イン アクションシリーズ]Windows PowerShell イン アクション [イン アクションシリーズ]
販売元 : Amazon.co.jp 本
価格 :
[タイトル] Windows PowerShell イン アクション [イン アクションシリーズ]
[著者] Bruce Payette
[種類] 大型本
[発売日] 2007..
>>Seesaa ショッピングで買う
posted by bakemoji at 02:43| Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2007年08月02日

未完

ぼくはようやく登り始めたばかりなのだ。
この果てしなく遠いブログ坂を……

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

広告


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

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

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


×

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