今月の Software Design : 2013/05 (その4)

 「今月の Software Design 」の5月号の投稿の第4回目です。

 今回は、OpenFlow の話と、今月から始まった iPhone アプリ関連の新連載記事、そしていつもの濃ゆ〜い記事について要約と感想を書きます。

 フォーマットはいつも通り以下の通りです。

 

○ 記事のタイトル
( 1 行目 ) 記事の要約
( 2 行目以降 ) 感想

 

○ OpenFlow を実装してみた! (バーチャルネットワークコントローラ 2.0 開発の実際)

 NTT データが行う SDN ビジネスを推進する為に開発しているバーチャルネットワークコントローラ 2.0 (VNC 2.0) についての紹介をしています。記事では、VNC 2.0 のアーキテクチャと開発する上で何が難しくて、どうしたのかといった開発裏話的な内容と、VNC 2.0 の機能について紹介しています。VNC 2.0 が提供している機能としては、(記事を読む限り)オーバレイネットワークに対応した L2 仮想ネットワークの構築と、それを GUI から管理するのが目玉のようです。また VNC 2.0 自体、Trema や Floodlight といったフレームワークを利用せず、Java ベースでフルスクラッチしたみたいです。

 VNC 2.0 とはどうやら、通常の OpenFlow コントローラを機能拡張して、記事で書かれているようなネットワーク負荷を考慮した経路計算なんかを支援するフレームワークみたいです。VNC 2.0 を構成する VNC-AP と VNC-NOS のうち VNC-NOS は OpenFlow コントローラそのものですね、VNC-NOS の上位に存在する VNC-AP でいろいろとリッチな処理をして NOS-API と読んでいる Northbound API を通して制御するというアーキテクチャになっているみたいです。

 こういう取り組みは非常に良いと思いますし、中身がどんなもので、どんな事をしているのかキチンと書いてくれているので VNC 2.0 が一体何なのかという事がよく伝わってきます。

 ただ一つ謎なのが、VNC-NOS を Trema 等のフレームワークを使わずにフルスクラッチしたと言っていますが、諸所のフレームワークを使った場合とほとんど同じアーキテクチャにしたのは何故だろうかと。Java でこんなありきたりな設計するんだったら Floodlight 使えばいいじゃんと思ってしまいます(恐らくですが Floodlight の記述が複雑過ぎて使えないと判断したんじゃないでしょうか)。

 

○ プログラム知識ゼロからはじめる iPhone ブックアプリ開発

 今月からスタートした新連載の記事です。初回の副題は「コード0(ゼロ)で写真集アプリを作ろう!」ということで、XcodeGUI 操作だけで作るアプリの作り方を紹介しています。まず MacPC 選びからはじまり、Xcode のダウンロードと起動、そしてビューの作成や画面遷移などの簡単なロジック組みを GUI で行う方法を紹介しています。

 面白いです。記事にもある通り、プログラミングを全くした事がない初心者向け記事ですが、学びがある良い内容だと思います。例えば、写真集アプリという事で画像ファイルを表示させる際、全画面の白紙画像を生成して、縮小した画像ファイルを貼り付け、画面遷移ロジックを施すといった処理を繰り返すといった、とても原始的な事をやっていますがこれがいいです。初心者向け記事だというのに、変にファイラーを起動して云々といった事をやってカッコつけたくなるところ、敢えて原始的なやり方をさせる所が流石です。

 ところでこれを読んでふと思ったのですが、似たような光景を10年以上前にどこかで見た記憶があります。そこにはメッシュ状ウィンドウの画面にマウスポインタがチョコンと鎮座していて、こいつをグリグリいじってやることで、ウィンドウが出来てボタンがくっつき、ラベルが貼られて・・・といった感じで GUI アプリが完成します。かの有名な Visual Basic です。当時はエンジニア連中に非常にバカにされていたように記憶しているのですが、Xcode はどうなんでしょうか。

 

○ ハイパーバイザの作り方

 前回はユーザランドのプログラム処理の話で、ゲスト OS をメモリに乗っけて、諸所のデータ構造を初期化するとこまでの処理をしたところらへんまでの話だったと思います。今回は、起動したゲスト OS がデバイスアクセスをする等でハイパーバイザに処理が移り、ゲスト OS に処理が戻る処理についてコードを用いて説明してくれています。

 いつも通り syuu さんの記事は濃いです。いつも「Linux カーネル観光ガイド」を書かれている青田さん、そして今月号の第二特集の第四章を書かれた新家さんも相当濃い内容を書かれていますが、syuu さんの記事は更に濃いです(「温故知新 IT むかしばなし」も別の意味で濃いですが)。

 今月号の内容については『GNU/Linux でいうところの、コンテキストスイッチからユーザプログラムを復帰させる処理っぽいな〜』くらいな印象でしたが、恐らく記事で書かれている 4 割も理解できるか怪しい感じです。とりあえず、ゲスト OS が何か ioctl 呼び出したら VMExit が vmm.ko に飛んできて、VMEntry で処理を返すという仕組みだけ把握しました。

 

○ 開眼シェルスクリプト

 諸所の事情から awk を倦厭する読者に向けて、どんな入力に対しても「何かよくわからないけど awk で乗りきれる!」という自信がつくまでの間にそびえる壁を超えるための学習のヒントを紹介しています。記事では、この壁を超えるための演習として4つの(ありがちな)問題を設定しており、それぞれの問題を解くためのオーソドックスなパターンからトリッキーなパターンに至るまで、それぞれの問題を解く awk スクリプトについて解説してくれています。

 今月も awk ですが、これまでとは趣を異にしています。これまでは『こんな面白い事が awk で簡単にできちゃうぜ!』といったように処理自体に注目させて、その処理の解説の中で awk のテクニカルな話を織り交ぜるといった感じでした。対して今月号は、awk 処理自体にスポットを当てて『awk はこんな事をこんな感じに(簡単に)書けちゃうぜ!』といった感じで、より原理的な内容です。