スクエア・エニックスのCTOが書いたプロジェクトマネージメントの資料がスゴイ!
![]()
スクエア・エニックスという開発期間が年単位の超大作を何本も抱える会社のプロジェクトマネージメントというのはみんな興味があると思う。開発に数年かかる規模のプロジェクトだと、初期に発生した数%の誤差が後の工程に影響を与えて、開発者を大量投入せざるを得なくなったり、開発者に殺人的労働を強いたり、発売日の大幅見直しなど、大炎上プロジェクトになります。
資料にも書かれていますが、この規模になると、ほんの僅かの見積もりミスや機能追加によって、当初想定工数から10倍もズレてしまうようです。
スクエア・エニックスでは、どのようにこれらの大規模プロジェクトをどのようにコントロールしているかが書かれています。プロジェクトマネージメントに興味がある人は必読です。
→ ゲーム開発・プロジェクトマネジメント講座
株式会社スクウェア・エニックス CTO 橋本 善久(PDF)
資料で紹介されている推薦図書
公式のAndroid Dev Guideを英語で読めるようになる方法 #android

まぁ、英語を勉強しろって話なんですけどねw ただ、効率的にやりたいじゃないですか。で、どうしたものかなと思ったのですが、英単語の出現頻度を計測して上位単語から暗記したらいいんじゃね?と思った訳です。
具体的には、AndroidのThe Developer’s Guideページ内に含まれるリンクをすべて抜き出す。統計さえとれれば良いので、リンク先のリンクは追いかけてません。左にメニューがあるので大部分のページのリンクは拾えているハズです。
次に、先ほどのリンク先の全ページをクロールし、単語を拾って行きます。
単語の拾い方はちょっとギミックを入れてあり、最後がsで終わる場合、sを削る処理を入れてあります。つまり単純な複数形は丸め込められるようになっています。最後に添付している単語表で、よく分からない単語があった場合、Javaプログラムのパッケージ名か、最後にsを付けると意味が理解できると思います(例:thi -> this)
複数形などの変化形をまとめられるWeb APIとかあれば、ちゃんと処理したかったのですが、見つけられなかったので、知ってる方は教えて下さい。アップデートしたいと思います。(ちなみにシェアウェアのWindowsアプリはありました)
結果
例えば、中学レベルの英単語に加えて、以下の単語を覚えれば、50%以上読めるようになります。
Android
activity
device
intent
view
permission
method
content
value
billing
level
object
layout
market
provider
filter
framework
action
design
ADT
animation
emulator
以降、上位からの単語数とパーセンテージは以下のようになっています。
100 51.3538%
300 70.5175%
500 79.6027%
1000 89.5451%
概ね4回以下しか出てきていない単語は、それまでに出ている単語の変化形かTYPOなので、無視してもよいと思います。そう考えると上位4000単語ほどカバーすればドキュメントがほぼ100%読める事になります。これには中学レベルの英単語やコンピュータ用語、活用形が含まれているので、あなたの英単語力が中学レベルだったとしても、実質的に覚える必要がある単語は500単語ぐらいじゃないでしょうか?
結果データ
結論
誰か、学習のアプリ作って下さいって事です。Androidの場合、近藤昭雄シリーズでよろしく!
Googleの新しいプログラミング言語Dartが発表された #dart

Googleの新しいプログラミング言語Dartがgoto;カンファレンスで発表されました。
公式ページは、http://www.dartlang.org/です。ソースコードはGoogle Codeにあります。
以下、Dart公式サイトの技術概要ページより引用および意訳
———-
技術概要
Dartは、構造化されたWebアプリケーションを作成するための新たなクラスベースのプログラミング言語です。シンプルさ、効率性、およびスケーラビリティを目標に開発されました。Dartは明らかで、読みやすい構文を言語構造に持つ強力な新しい言語機能を兼ね備えています。
主な機能
クラス
クラスとインタフェースは、効率的なAPIを定義するための十分なメカニズムを提供します。これらの構造は、メソッドおよびデータのカプセル化と再利用を可能にします。
オプションの型
Dartのプログラマは、必要に応じてコードに静的な型を追加できます。プログラマーはアプリケーション開発中のいつのタイミングでも型を追加できます。型のない実験プロトタイプから型でモジュール化された完成品に簡単に移行することができます。型がプログラマの意図を語るので、プログラムの説明を少ないドキュメントで行えます。また、型チェックツールはデバッグに役立ちます。
ライブラリ
開発者は、実行時に変更されないことが保証されているライブラリを作成して使用できます。独立して開発されたコードは、共有ライブラリに依存することができます。
ツール
Dartは、実行環境、ライブラリ、および言語をサポートするために構築された開発ツールの豊富なセットが含まれます。これらのツールは、「変更ーデバッグ」という生産的で動的な開発スタイルを可能にします。
デザイン目標
初期のDartのプログラミング言語をここに提示します。次の設計目標は、このオープンソースプロジェクトの継続的な進化と洗練の過程で明らかになります。
- Web用の柔軟な構造化プログラミング言語を作る
- プログラマーがDartに自然で親しみを感じられ、学習するのが容易なように作る
- 確実に、高性能で速いアプリケーション開発ができるような言語構造にする
- ウェブにアクセスできるすべてのデバイス向け(携帯電話、タブレット、PC、サーバー)に作る
- Dartは、主要な現代的なすべてのブラウザで高速に動作させるツールを提供する
これらの設計目標は、現在のWeb開発者が直面する以下の問題を解決します。
- 小さなスクリプトは、しばしば明白な構造のない大きなウェブアプリケーションへ発展します。それらはデバッグするのが難しく、維持するのが難しいです。さらに、異なるチームがそれらに独立して作業できるように、分割することができません。ウェブアプリケーションが大きくなった場合、生産性を確保するのは難しいです。
- その軽量性、迅速なコードを書くためにそれを容易にするためのスクリプト言語は人気があります。一般に、アプリケーションの他の部分との契約は、言語構造自体ではなくコメントの中で伝えられます。その結果、コードの一部だけを読んでメンテすることは、直接の開発者以外に困難です。
- 既存の言語で、開発者は、静的と動的言語の間で選択を迫られている。伝統的な静的言語では、ヘビー級ツールチェーンと柔軟性がなく、過度に制約を感じることができるコーディングスタイルが必要です。
- 開発者は、Node.jsとGoogle Web Toolkit(GWT)のようないくつかのケースを除いて、クライアントとサーバの両方を含む均質なシステムを作成することができていない。
- 異なる言語やフォーマットが面倒なコンテキストスイッチを伴うとコーディングプロセスが複雑になる。
———-
ざっくりと公式サイトを読んで感じたのは、かつてGoogleのエンジニアが発表したJavaVM用の新しいプログラミング言語NOOPに近い匂いがするって事。
ただ、NOOPと違うのはソースリポジトリにかなりのプログラムがコミットされているという点。そこそこ時間が費やされているように感じるが、Go言語に比べるとライブラリが全然無い。Go言語はリリースされた時点でウェブサーバーに必要と思われる各種暗号化処理、ZIPなどの圧縮処理、Json/XML/Base64などのパーサーなど大量のライブラリを抱えていたが、それに比べると必要最低限しか無いように見える。JavaScriptがカバーする(ブラウザ上やNode.js上の)レイヤーに相当するとしても、少なすぎないかな?多言語化ってどうやんのさw
結論
しばらく様子見するか、オープンソースプロジェクトに参加してコミッターになろう!

