goto アーフス 2011

2011年10月26日

goto(以前はJAOOとして知られていました)は、長年私のお気に入りのカンファレンスです。彼らは長年にわたり、効率的でフレンドリーな組織と組み合わさった高水準のコンテンツを維持するために素晴らしい仕事をしてきました。そのため、カンファレンスの過剰摂取が一般的にカンファレンス恐怖症につながっている一方で、アーフスへのやや複雑な旅行に出発するときには、それでも心地よい期待感を感じます。

今年の私の仕事は、共同発表のチュートリアルがいくつかありました。 Jez Humble との 継続的デリバリー と、Rebecca Parsons との進化的なアーキテクチャです。前者はかなり踏み慣らされていますが、進化的なアーキテクチャは私たちの最初の試みでした。しかし、どのように機能したかに満足しています。Rebeccaは来年このチュートリアルをもっと広く行うだろうと考えており、一見の価値があります。

いくつかのセッションが私の心に残りました。外部から多くの注目を集めたものの1つは、Google Dartに関する基調講演でした。これは、Lars BakとGilad Brachaによって発表された新しい言語と仮想マシンです。本質的に、Dartは主にブラウザ内のJavaScriptアプリケーションを構築することを目的としています。JavaScriptにコンパイルするか、Dart仮想マシンで実行されるソースまたはコンパイルされたバイナリでアプリケーションをデプロイできます。JavaScriptへのコンパイルにより、現在のブラウザとの最大の相互運用が可能になりますが、Dart VMがインストールされているブラウザにバイナリを送信すると、ロード時間が短縮されます。GoogleはVMと言語の両方をオープンソース化しており、これによりブラウザにDartを含める際の摩擦が最小限に抑えられるはずです。

Lars BakとGilad BrachaがDartプログラミング言語を紹介しました

この言語は、Cのような構文と単一継承オブジェクトモデルを備えた保守的なオブジェクト指向言語です。最も直接的な珍しい特徴は、型の扱い方です。動的に型付けされる言語ですが、ソースに型を追加できます。これらの型はコンパイラの出力を変更しませんが、チェックされ、型エラーがある場合は警告が生成されます。さらに、型はIDEにインテリジェントな補完などの機能を提供するのに役立つ情報を提供できます。(私はギルドの引用されたセリフが好きでした。「型チェッカーはロボトミーを施された定理証明機です」)

基調講演で発表された以上のDartは見ていませんが、それに基づいて見たものは気に入りました。JavaScriptを置き換える必要があると確信しています。強力な機能を備えた言語ではありますが、使いこなすのが難しい醜い言語です。最近同僚がそれをうまく要約しました。彼はJavaScriptをうまく使用したプロジェクトに取り組んでいましたが、たとえうまく書かれたJavaScriptでも十分に明確なコードではないと感じたため、代わりにCoffeeScriptを使用しなかったことを後悔していました。Dartはずっときれいに見え、そのデプロイアプローチは、古いブラウザとの互換性を維持しながらDart VMを使用する明確なメリットを提供します。これは、JavaScriptが今後何年も存在するため、不可欠です。

将来の先駆けとなった別のセッションは、デンマークでの処方薬の保管にRiakを使用することに関するKresten Krab Thorupの講演でした。既存のシステムはMySQLデータベース上に構築されていますが、そのスケーラビリティについて懸念しています。Riakのピアツーピア分散設計は、複数のセンター間でデータベースを実行するためのより良いモデルを提供しました。これは成長すると考えるテーマです。リレーショナルデータベースは単一の大きなサーバーという考え方で構築されましたが、ますますコモディティサーバーのクラスターが見られるようになり、データストレージの再考につながっています。この処方箋情報は、データアクセスが主に患者の処方箋の完全なリストを取得することであるため、このストレージアプローチに非常に適しています。これはシステムにとって自然なD D D_ Aggregateになります。

また、彼らの移行アプローチも興味深いと感じました。システムは自然にイベントインターセプションに適しており、これにより、MySQLシステムから実行しながら、Riakシステムが更新負荷を処理できることをテストするために、受信イベントを使用してMySQLとRiakの両方のストアを同時に設定できました。

過去1年ほどで、DatabaseThawがゆっくりと着実に進んでいることは明らかです。ますます多くの人々が、データストレージがもはやSQLデータベースの自動的な領域ではなく、現在では思考を必要とする選択肢になっていることに気付き始めています。すべてのケースに対して正しいデータストレージソリューションは1つではないため、状況に合ったものを選択する必要があります。ただし、その見返りは、はるかにシンプルで、より生産的なプログラミングモデルまたはより優れた水平スケーラビリティです。リレーショナルテクノロジーの不適切な使用によって妨げられている別のグループの人々と話したときはイライラしました。彼らの顧客はNOSQLオプションを利用した方がはるかに良かったでしょう。

また、The GuardianでのGraham TackleyとそのMongoの使用についても詳しく聞きました。Mongoは彼らにとって非常にうまくいっており、将来の仕事のための強力な選択肢であるようです。私は、新しいプロジェクトでのScalaの使用と、Java環境からの開発の前進としての言語に関する彼らの肯定的な経験についてのGrahamの講演を聞きました。私はそのような話をいくつか聞いたことがあり、ScalaがJVMプラットフォームで開発を行っている組織にとって真剣な選択肢であると感じるのに十分です。

私が最後に言及するセッションは、Tudor GirbaMooseに関する講演でした。これは、コードベースの品質を評価するためのツールです。私はここ数年、Mooseについて断続的に聞いてきました。Erik Dörnenburgは、システムヘルスチェックでの作業を拡大するにつれて、それについて話してきました。Tudorの講演は非常に優れたパフォーマンスであり、Neal Fordの最高のプレゼンテーションと並ぶものでした。

このツールも非常に魅力的でした。非常に洗練されたデモから、ツールがどの程度使いやすいかを判断するのは難しいです。そして、Mooseは明らかに非常に洗練されたツールです(そして、そのようなツールは習得が難しいことがよくあります)。私が最も感銘を受けたのは、コードを評価する上での明らかな適用性ではなく、LispおよびSmalltalkコミュニティの考え方の中心にあったが、その後衰退したツールの一般的な哲学を具現化していることでした。

この哲学では、ツールのユーザーは、自分のニーズに合わせてツールを形成するために、ツールの核心をいじることを期待されている人物と見なします。これを実現するために、ツールは検査と変更のためにソースコードを開放するだけでなく、迅速なフィードバックによる機能強化を容易にします。私が思い浮かぶ最も一般的な例は、ユーザーに可鍛性のあるツールとして扱うことを推奨するemacsです。MooseはSmalltalkで記述されており、Tudorの講演でも同じ哲学が強く感じられました。数分で新しい関数を実装することで、ツールのファーストクラスの機能を迅速に構築できます。

受賞歴のある継続的デリバリーの本(Jez HumbleとDave Farley)の両方の著者を写真に撮る珍しい機会 - DaveはLMAXでの彼の仕事について話していました

そのような可鍛性のあるツールはあまり普及していません。それらは、ツールを真に歌わせる方法を学ぶことをユーザーに熱心に求めていますが、この努力は個人のニーズに合わせて真に調整できるツールという報酬を伴います。