Posted by & filed under いろいろ, 開発.


新卒向けカリキュラムを考え中の記事を書いたのが去年の8月末です。あれから半年以上、時間が経つのは早いものです。

先月、講義がひととおり終わりました。時々、講義資料のメモをここで公開しましたが、公開していなかった初回の講義メモを公開します。

なぜプログラマは0から数え始めるか、という簡単な謎かけで講義を始めました。ある知識(メモリのアドレス。2進数。ビット数を省略する文化など)を知っていればわかりますが、たぶん知らないだろうと思って質問しました。予想どおり知識はなかったのですが、簡単に正答したので驚きました。今時のなぜなぜ思考はあなどれないと思いました。

さて講義ですが、教えられるほうも初めてですが、教える側も(本格的な講義としては)初めてなので苦労もありました。パーフェクトJavaを書いたので、教えるのは簡単だろうと思っていましたが、そうでもなかったです。本に書いてあることそのままを口頭で話しても仕方ないと思いながら、言いたいことはだいたい本に書いてあるというジレンマがありました。

プログラミングでもっとも大事なのは分割統治だと繰り返し伝えました。プログラミングでは複雑さをいかにてなづけるかが重要で、そのためのもっとも効果的な手段が分割統治だからです。

最近、ある生徒のコードレビューをしていますが…分割しすぎです…。デザインパターンの弊害を見る思いです。

しかし、コードレビューにより、意味のある分割とそうでない分割を考えるきっかけになりました。この問いは意外に深いものです。意味のない分割のアンチパターンを分析しています。次回、人に教える時には役立ちそうです。それから、コードを読んでもっとも違和感があるのが命名です。命名に比べればロジックの巧拙は誤差です。命名は分割にも関連します。そのクラスの役割(責務)は何なのか、という問いかけに通じるからです。これも長年業界にいすぎて改めて考える機会が減っていた名前づけについて考えるきっかけになります。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


Java-based な OpenFlow コントローラとして Jaxon を開発しました.

http://jaxon.onuos.org/

一般的に「OpenFlow コントローラ」と言った場合には, OpenFlow Controller を実現するアプリケーションフレームを指します.
Jaxon は Java での OpenFlow アプリケーションフレームワークになります.

ご存知 (かどうかは知りませんが) OpenFlow は Switch を制御するための共通規格で, SDN (Software Defined Network) を実現するもっとも有力かつ現実的な方法として注目されています.

最近では, Software Design で連載されている NEC (の中の人) が主に開発している Trema プロジェクトが有名ですが.
他にも NettleFloodlight プロジェクトなんかがあります.

その中でも, Nicira ネットワークが古くから開発している OpenFlow コントローラに NOX というものがありまして, こいつは C++ と Python による OpenFlow コントロールアプリケーション作成のフレームワークを提供しており, 秀逸なモジュールのアタッチメント構造が特徴です.

さて. 某所で Java での開発を行っておりまして, こいつから直接ネットワーク制御を OpenFlow を使ってやりたいのですが, Floodlight は当時かなりショボいモジュール設計で (現在は NOX に近いモジュール構造が備わっています), NOX の機能を Java から呼び出す仕組みをつくることにしました.

それが今回の Jaxon になります.
アプリケーション側でのコード量を減らすようにする事と, Jaxon-NOX 間でのコミュニケーションコストを低く抑えるように設計しました.
Jaxon では OpenFlow protocol のコードは書かないで, NOX とアプリケーションとの間でのメッセージのやりとりの橋渡しのみを行います.

Jaxon と NOX での言語に違いがあるので, プロセス間通信のような仕組みが必要になってきますが.
NOX 間でのコミュニケーションをシンプルに実装するために, JNA を使って単純な関数呼び出しといった仕組みでメッセージの受け渡しを行います.
JNA は Java から共有ライブラリをロードする仕組みで, NOX の core 機能を共有ライブラリに閉じ込め, そいつとユーザが作成したアプリケーションとのメッセージのやりとりを軽量に行うことができます.

これを使って, どのようにしてコントローラが書けるかや, サンプルコードやその解説については, コミュニティサイトに (比較的丁寧に) 書きましたが.
日本語版や Tips をこの場を借りて, 今後ちょこちょこ書き溜めていこうと思います.


関連文書:

Posted by & filed under 開発.


前回の「Linux/ApacheでNTLM認証」の続きです。前回はLinuxの話でしたが、今回はWindowsとApacheでのNTLM認証です。WindowsならIISが楽ですが、人間、楽ばかりしていてはいけません。

まず、Apacheを動かすWindowsサーバをADのドメインに参加させます。僕は、ドメインに参加済みのマシンをもらったので、どうやって参加させるか知りません。きっとWindowsなので簡単なんだと信じています。

[続きを読む…]


関連文書:

OpenStreetMap

Posted by & filed under いろいろ.


アリエルネットワークにはGoogle Mapsを使った支配の歴史があります。

六本木に移転して1年以上経ちました。各所から、六本木を支配しないのかと言われてきました。

しかし今はもうGoogle Mapsの時代ではありません。OpenStreetMapの時代です。そもそもOpenStreetMapにアリエルがないと不便です。なのでプロットしました。

アリエルのオフィス位置にプロット(星みたいなマーク)はできましたが、入力したタイトル文字が表示されません。近くの妙像寺の文字は表示できているので何か方法はあると思います。誰か方法がわかったらアリエルネットワークの文字を表示してください。ついでに六本木周辺の使えるレストランをプロットしておいてください。

OpenStreetMapで「アリエルネットワーク」を検索するとオフィスが見つかります。でもなぜかChiyoda。港区なのに。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


今週、Sencha Touch 2 が正式リリースされました。公式ページもすっかり Version 2 仕様に変わっています。

昨年10月にプレビュー版がリリースされて以来、アップデートを追いかけてきたので、個人的には目新しさよりは、なにやら安堵感(?)の方が大きい印象です。。大胆な仕様変更やデグレードに泣かされたこともありましたが、これからは安心して使えますね ;)

実際のところ、Sencha Touch は非常によくできたフレームワークだと思います。正式リリースで導入に関心を持った方もいらっしゃると思うので、半年間使ってみた感想を徒然にまとめてみました。

# 内容は、個人の見解に基づくものです。
# この記事はステマではないです。私は Sencha 社との関わりは全くありません。

Cons

初めて Sencha Touch を見た時、綺麗な UI が非常に印象的で、なにやら未来の WEB を予感させるものでした。伝統的なサーバーサイド寄りのアーキテクチャはスケールに難があると感じているので、クライアントサイド寄りでアプリを作る仕様も気に入ったポイントです。そういう意味では、当時比較していた HTML ベースの jQuery Mobile は若干古いモデルのように感じました。

とはいえ、使っていくうちに良い点だけでなく、悪い点にもいろいろ気づかされることになります。

– パフォーマンスはやはり遅い

パフォーマンス改善は Sencha Touch 2 の目玉ポイントではありますが、それでもやはり、ネイティブアプリに比べるとパフォーマンスは見劣りします。ただ、これは、Sencha Touch に問題がある、というよりは、CSS3 周りが原因のような気がします。検証のために、CSS3 のいくつかの装飾を外した CSS を適用すると、動作が結構軽くなりました。

– サイズが大きい

ライブラリのファイルサイズは結構大きいです。正式版の JavaScript ファイルは圧縮した状態でも 567KB でした。電波状況の悪いところでこの容量のファイルを受信するのは結構厳しいです。幸い、JsBuilder というライブラリのビルドツールが同梱されていてるので、利用しない機能を外してコンパイルすることで、サイズをある程度小さくできます。

– 学習コストが高い

機能豊富な裏返しとして、覚えることは結構多いです。でも Sencha 社もいろいろ対策を考えているようで、学習のためのドキュメントやビデオが非常に充実しています(※英語ですが。。)。また GUI でアプリを開発できる Sencha Designer という IDE や便利なコマンドラインツールも開発していて、フレームワークを利用しやすくするための改善を地道に続けている印象です。

悪いところを一通り挙げたので、今度はよいところを。。

Pros

– 企業が開発・サポートを行っている

なんだそれは、と言われそうですが。。ただ、まだまだ黎明期で、混沌としたモバイル WEB アプリ周辺の現状を考えると、企業がしっかりと開発・サポートを行っているのは、とても心強いです。フォーラムにあげられる投稿へのレスポンスも早く、対応も真摯で、非常に好感の持てるものでした。

– デザインが綺麗

コンポーネントは高品質で、見た目も、他のライブラリと比べて断然綺麗だと思います。また、「Sencha Touch 2 Recipes:2 オリジナルのテーマを作る」でも紹介しましたが、テーマのカスタマイズがとっても簡単です。これは Sass/Compass の力も大きいと思うのですが、それをライブラリに組み込んで提供する発想は秀逸だと思います。

– フルスタック

初見の印象通り、モバイル向けの WEB アプリを作るにあたって、機能不足を感じることはありませんでした。また、MVC アーキテクチャに則ったおかげで、メンテナンスし易いコードベースができたように感じています。便利なユーティリティ関数も充実しています。軽量ライブラリを組み合わせる発想もあるかと思いますが、フルスタックで必要な機能が揃っているのは、選定に頭を悩ませなくて助かります。

まとめ

Version 2 になった Sencha Touch ですが、ネイティブアプリと同等のユーザビリティを提供するのは、実際のところ、まだ難しいと思います(懸命なマーケティングに水を差すようですみません)。Sencha Touch に限らず、ネイティブアプリ並みの操作感をスマートフォンの WEB ブラウザで実現するのは、かなり困難なチャレンジかと。

ただ、Sencha Touch の今回のバージョンアップはそれに近づく一歩で、将来的には、スマートフォンの WEB アプリはネイティブアプリよりも主流の存在になっていくのでしょう。(と、ヤコブ・ニールセンが最近言っていました。)

そして、Sencha の開発チームは、これからもフレームワークを素敵に改善し続けてくれるはず!

最後に個人的な感想をもうひとつ加えると、Sencha Touch を使って開発するのはとても楽しいです :)


関連文書:

Posted by & filed under 開発.


NTLM認証っていうのはWindowsのドメイン認証情報をつかっていろんなシステムにシングルサインオンする仕組みです。設定によってはWindowsにログインすれば、社内のシステムに個別にログインせずにアクセスできるっていうシロモノですね。ブラウザはIEしか対応していないって思っていたのですが、FirefoxやChromeでも動きました。今回はクライアントはブラウザからアクセスして、Webアプリケーションにシングルサインオンするまでのお話です。

[続きを読む…]


関連文書:

Posted by & filed under .


昔、献本してもらうのは雲の上の人の話だと思っていた時代は、ただで本がもらえてうらやましいと思っていました。自分も年をとり、世の中もクラウドの時代になって、献本される機会が時々あります。かつて思ったように、ただで本をもらえて嬉しい気持ちもありますが、読んで書評を書くプレッシャーが一緒に付いてくるのを知りました。

このプレッシャーから解放されるために、読む前に紹介だけします。読んだら感想を書きますが、いつになるか保証はできません。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under 開発.


あんまり大きな変更はないけど、一応リリースしました。
変更点としては、

  • WebSocketAppクラスでmaskキーのgenerationをカスタマイズできるようになった
  • コマンドラインツール、wsdump.pyがついた。

[続きを読む…]


関連文書:

Posted by & filed under 開発.


前回に続いてトーキョーギークスタイル(TGS)に登壇しました。「Webアプリのアーキテクチャの歴史と進化」について話しました。セミナー資料を公開します(過去文書含めて、上部の「ドキュメント」メニューからたどれます)。

セミナー後、Webアプリの歴史がDIまでって中途半端じゃないですかと指摘を受けました。その指摘は正しいと思います。私的メモではもう少し先のPlay Frameworkまでの史観を作っていました。

セミナーでの説明をDIでやめた理由は、それ以上話すと内容が更に散漫になりそうだったことと、評価の定まっていない動向を語るのに躊躇したこと、そしてそもそもPlay Frameworkを語って新しい動向も知ってますアピールをして自己満足したいだけではないかと自己分析してしまったからです。

ここに書く分にはどうでもいいので手元で作っていた私的史観を下記に載せます。

こういう史観を公開すると、あの技術が抜けている、けしからんと憤る人がいそうです。

その技術に思い入れの強い人であれば憤りは理解します。でもあまり怒らないでください。Webアプリも10年以上の歴史があります。その間のすべての言語、すべての動向まで把握はできません。史観に対して、表層しか知らない技術も取り上げて網羅性を上げる努力をする立場と、知らないものを分かっているかのように書くのは不誠実だと思う立場の違いがあります。個人的には後者のスタンスです。だから抜けはあります。不完全だと憤らず、別の視点があればコメントなり、自分のブログで引用して修正するなりしてもらえればと思います。明らかな認識間違いは指摘してもらえれば助かります。

そもそもJavaとRubyだけで語っているので、そういう制約付きの史観と思って見てください。


関連文書:

  • 関連文書は見つからんがな

Posted by & filed under .


「Emacsのトラノマキ」の原稿を公開します。画面上のメニュー「ドキュメント」からたどれます。

現在一時的に京都で修行している深町さんが書いた記事です。タイトルは「元Vimmerが考えるEmacsの再設計」です。Vimからの解脱体験とEmacsの悟りを記録した貴重な記事です。

今月のSoftware Design(2012年3月号)の「Emacsのトラノマキ」は、大山さん執筆の「VimユーザによるVimユーザのためのEmacs」という記事です。Vimずくしです。偶然でしょうか。わかりません。時には世俗に触れるのも重要です。


関連文書:

  • 関連文書は見つからんがな