ドキュメントが日本語化された

6 月 10 日に開催された Google Developer Day 2008 Japan にて、Google は技術ドキュメントの日本語化の推進を表明いたしました。Google Developer Day を開催した時点で既に多くの技術ドキュメントが日本語化されていましたが、この度話題の Google App Engine のドキュメントが日本語化されたことをお伝えいたします。

Google Japan Blog: Google App Engine の技術ドキュメント 日本語化のお知らせ/Google Developer Day 2008 Japan セッションレポート 前編

id:naoki0311さんのトラックバックで気づきましたがドキュメントが公式に日本語化されました。

元々、比較的平易な英文だったのとサンプル込みで頑張ればなんとかなるとは思っていましたが、日本語化されたのは、嬉しいですね。

最近、あまり触ってませんが(iPhoneにくびったけ)、iPhoneアプリとGoogle App Engineを連携できたらいいなぁと思っています。

ちなみに、公式に日本語化される今までの間、ドキュメント代わりにお世話になっていたのは、

http://d.hatena.ne.jp/hamatsu1974/20080424/1208980226

のサイトです。

最近、Google App EngineといいiPhone SDKといい2008年はアプリケーションインフラ変革の年だなと思います。

後から振り返ったとき2008年に始まったのだなと思えるような。そんな気がします。

Share

フレームワークを作るときの指針

私がフレームワークを作るときの無意識に採用している指針を思いつきで羅列して改めて意識してみる試み。

・めんどくさい事や、高度なことは全てフレームワーク側の責務。

・ユーザ(ここで言うユーザとはフレームワークを利用して開発をする人)は決められたストーリーに沿ったコードを書けばよい。

・だからユーザにオブジェクト指向を意識させない。

・ユーザから見たインタフェースはシンプルでなくてはいけない。

・一言で言えばテンプレートベースの開発。

・○○対策等(SQL挿入等)は可能な限りフレームワーク側で処理を行う。ユーザに、そのためだけのコードを書かせない。

・インテリセンスを有効活用できるようにする。

・コードを書かなくても良いが、書くことも可能である。

・拡張可能である。

・ユーザはSQLを書かなくてよい。書けば拡張できる。

・ユーザはDB製品を意識しなくてもよい。

・複雑さを集中させないための制限を作る。

(例えばコードの中に複数のテーブルを結合するようなクエリはかけない。

そんなのは、問い合わせの目的を名前にしたビューやストアドにすればよいだけだから。)

・フレームワークにする意味がなくなるので、出来るだけルール等の運用に逃げない。

Share

ウィズダム英和・和英辞典1.0.1が登場しました。

購入者として、心待ちにしてました。

ウィズダム英和・和英辞典がまもなく再登場するようです。 – NAL-6295の舌先三寸

評判よりもレビューが早いですね。

レビューまでの過程が長かったのかな。

早速、ダウンロードしてインストールしてみましたが、以前のような不具合は全く無く快適に利用できるようになりました。

嬉しい限りです。

Share

Generic型を動的に生成する方法

WCFを利用したサービスのバックグラウンドで動いてもらうフレームワークを作成するときに必要だったので調べてみると、System.Type型のメソッドにMakeGenricTypeという、そのままのメソッドがあってこれで作成できる事がわかりました。

そこで、ここではList<int>型を作成し、1から10までの値をListに登録するサンプルコードを紹介したいと思います。

普段の実装でこのようなコメントを書くことはありませんがコメントで解説します。

    //List<>の<>内に入れる型のメタデータの配列を生成します。
    //今回はList<int>型を作成したいので、int型のメタデータを生成します。
    System.Type[] genericsTypeArguments = { typeof(int) };

    //List<>のメタデータのMakeGenricTypeメソッドに先ほど作成した
    //int型のメタデータを渡すことでList<int>型のメタデータを作成できます。
    //実は、これを知るまで<>という中に何も入れない書き方ができる事を知りませんでした。
    System.Type integerListType = typeof(List<>).MakeGenericType(genericsTypeArguments);

    //後は通常のメタデータからインスタンスを生成するように
    //CreateInstanceでインスタンスを生成します。
    var integerList = Activator.CreateInstance(integerListType);

    //integerListはobject型であり、動的に作成するというシナリオ上、
    //何のListになったのかわからないので、
    //ListのAddメソッドの情報を取得します。
    var addMethodInfo = integerListType.GetMethod(&quot;Add&quot;);

    //addメソッドを利用するサンプルとして便宜的に1から10までの数と登録します。
    foreach (var value in Enumerable.Range(1,10))
    {
        //Addメソッドの情報からInvokeメソッドを利用して、
        //Addメソッドを実行し、与えられた値を設定します。
        addMethodInfo.Invoke(integerList, new object[] { value });
    }

以上が、ジェネリック型を動的に生成する方法です。

型の配列の要素を現在のジェネリック型定義の型パラメータで置き換え、結果の構築型を表す Type オブジェクトを返します。

Type.MakeGenericType メソッド (System)

Share

iPhoneを使うことによるメリットとデメリット

メリット:

大抵の事においてパソコンを開かなくても良くなった。

あらためてパソコンでメールチェックなんてしなくなったし。

デメリット:

ウェブに入り浸るようになった。

フォントもきれいだしレンダリングもきれい。

パソコンを使う機会が減った。

iPhoneで事足りることが多いからね。

ちょっとかわいそう。

もちろん使ってはいるんだけど。

少なくとも携帯電話使っていたころより便利に楽しく使ってます。

ライフスタイルが少し変わったかな。

Share

iPhoneの新しいファームウェア(2.0.2)が公開されたようです。

前回の2.0.1アップデートから約2週間、iPhone ソフトウェア 2.0.2の提供がはじまりました。すでにiTunesからの更新確認でダウンロードできるようになっています。サイズは248.7MB。アップデート内容として描かれているのは今回も:

* Bug fixes / 不具合の修正

のみ。

iPhone ソフトウェア アップデート 2.0.2 提供開始 – Engadget Japanese

相変わらず秘密主義というかなんというか。

何が修正されたのか知りたいですね。

どちらにしても、家に帰ってアップデートするのが楽しみです。

Share

ウィズダム英和・和英辞典がまもなく再登場するようです。

アップル社の受け入れ態勢が整いましたので、バージョン1.0.1 を提出しました。アップル社のレビューの後にダウンロードできるようになります。アップデート版が利用可能になりましたらご案内いたします。

ウィズダム英和・和英辞典の販売を停止します | 物書堂

購入者として、心待ちにしてました。

Share

Singleメソッドを使うことで単一の要素を返せる事を知った

LINQを使って書くときに結果が必ず1件になることが分かっているのに今まで

var test = Enumerable.Range(1,10).Where(x => x == 5).Select(x => x);
Console.Write(test[0]);

とSelectメソッドを利用した上で、配列としてアクセスしていたが、MSDNを見て(というかインテリセンスでそれっぽいのを見つけてMSDNにアクセスして確認して)いたらSingleメソッドというものを見つけた。

どうも要素が一つに限定される場合はSelectの代わりにSingleメソッドを利用する事で「要素が一つの配列」としてではなく、単一の要素とする結果になるらしい。

という事で、

var test = Enumerable.Range(1,10).Where(x => x == 5).Single();
Console.Write(test);

と書いてみたら配列ではなく単一のint型の変数としてアクセスすることができた。

ちゃんと、いろいろと試してみないといけないなぁと思った。

シーケンスの 1 つの特定の要素を返します。

Queryable.Single メソッド (System.Linq)

追記:

コメント欄で教えて貰ったので、そちらを利用した場合のサンプルも作成してみました。

Singleメソッドの中に条件を記述できる。

var test = Enumerable.Range(1,10).Single(x => x == 5);
Console.Write(test);

明らかに、簡潔に記述できて楽ですね。

Whereであることを明示するか、Singleの中に記述するか迷うところではあります。

SignleOrDefaultメソッドを利用する。

シーケンスの 1 つの特定の要素を返します。そのような要素が見つからない場合は既定値を返します。

Queryable.SingleOrDefault メソッド (System.Linq)

var test = Enumerable.Range(1, 10).SingleOrDefault(x => x == 15);
if (test == 0)
{
MessageBox.Show("存在しない。");
}
else
{
MessageBox.Show(test.ToString());
}

こちらは、要素が存在しない時は、要素にあたる型の規定値を返します。

intの場合は0なので、上記のサンプルの場合0だったら要素が存在しなかったことになります。

0も範囲内に含まれているような状況だと判断に困りますが、Null許容型や参照型は規定値がNullなので、利用しやすいかもしれません。

Share

続・ペリカンの集荷依頼について~インターネット編~

結局、パソコンポで梱包して欲しかったので、ペリカン便の集荷依頼をインターネット経由でお願いした。

そして次の日、ペリカンの人がやってきた。

手ぶらで。

「パソコンポで頼みましたよね。」

と聞いたら

「うちは聞いてない。」

と言われた。

ペリカンの人が持っている控えをちらっと見たら書いてなかった。

私がうっかり間違えて申し込んだのかと思って、メールの控えを調べたらちゃんと

梱包資材・パソコンポ

と、書いてある。

ペリカン便の集荷依頼システムはどうなっているんだ。

その後、私も寝起きで寝ぼけていたので、ペリカンの人の

「うちの事業所まで、毛布にくるんで持って行って、梱包させていただきます。」

というのをうっかり了承してしまった。

裸で持って行かれたので、ちょっと心配(毛布にくるむといったが、目の前でやってくれたわけではない。)

普通は出直してくるものじゃないのか?

あと、車に運ぶまでの間は大丈夫なのか?

ちなみに、着払いだったからか、料金も何も確定させないで持っていこうとしたので、料金は後で連絡させる事にした。

ペリカン便を使うのは初めてだったが、二度と使う事は無いと思わせる出来事だった。

Share

ペリカン便の集荷依頼について

http://www.nittsu.co.jp/pelican/company/service/pc/index.html

リンク先に集荷依頼はこの番号にとフリーダイヤルの番号が書いてあったので連絡したら、集荷の依頼はこの番号では受け付けていないという事だった。

どうも、地域を担当する店の番号を教えるからそこに再度かけ直して欲しいということらしい。

表記に偽りありはどうかと思う。

Share