JJUG CCC Fall 2014に行ってきました

JJUG CCC 2014 Fallに行ってきましたので、軽くまとめます。

イベントの概要

イベントの概要、タイムテーブルなどは、下記のURLを参照してください。

JJUG CCC 2014 Fall

会場の様子等

私は初参加なのですが、休日にも関わらず大盛況でした。
セッションにもよりますが、基調講演が実施されたホールは殆ど満席でしたし、Javaとその周辺技術に対する関心は高いようです。また、個別のセッションは人気や発表の雰囲気に差はあるものの、全体的に「真剣に聞こう」という雰囲気がありました。OracleJava標準の話題が中心で、いまいち現実感が乏しいJava One報告会と異なり、コミュニティ主体で実践的な泥臭い話題が中心なのが理由かなと思います。

また、余談ですが、会場の入り口でスポンサーのOISIXさんが野菜ジュースを配っており、これがなかなか美味しかったです。ネットスーパーらしいので、スポンサーなのが意外ですね。

以降は私が参加したセッションのまとめになります。

K-1 基調講演1 : これからのJavaエンジニアの生きる道 橋本 吉治

当日のスライド

セッションのまとめと補足

Javaはあまり関係なく、これからエンジニアとしてどう生きていくか、という話題でした。
橋本さんは13年間務めたSIerからベンチャーへ転職されたそうですが、その理由は技術の進化の速度が非常に早く、必ず変化が起きる(要するに今の会社ではその変化についていけない)と考えたからとのことです。

主な革新が進む技術領域として、クラウド人工知能Java(Javaのイベントなので・・・)を挙げられています。筆頭であるクラウドは、最近は単に早くて安いだけではなく、自前で構築するのは無理なレベルの高度なサービスが提供されており、最早、「安いから」ではなく、「リッチなサービス」が選択する理由になっているそうです。

私が普段見ている情報サイトinfoworld.com(結構、有名?)でも、クラウド関連の話題は非常にホットです。人工知能と絡んできますが、IBMはWatsonをIBMのBluemix Cloud ServiceのAPIとして提供を開始しています。


IBM debuts first Watson machine-learning APIs

別の記事では、Watsonの利用促進のために、開発者向けに無料のお試しプランを提供する話題もありクラウドは単にコンピュータをいっぱい並べて安く提供することから、高度なサービスを提供する実行基盤に進化しています。
(こうなると、もはやオンプレミスに価値は無いんじゃ・・・。勉強用にはなるけど。)

AIについては殆どわかりませんが、ざっくり言うと、近年のWebの発達で膨大なデータを取得可能となり、実用性が大幅に向上したそうです。AI技術の進化によって、単純な作業(コールセンター等)が徐々に不要になっていく流れで、IBMのWatsonを国内の銀行が導入する話も進んでいるので、AIは避けては通れない技術になりそうですね。
(専門的過ぎて、ほかの技術と兼務できないんじゃ・・・。そうでもない?)

Javaに関しては、言語そのものはともかく、枯れていて性能、信頼性の高い実行基盤(JVM)の価値は非常に高く、「(上で動く言語は別物かもしれないけど)20年使われたものは、50年後も使われるだろう」とのことです。Web業界の流れは非常に早いので、Web業界に追随するために2年毎にメジャーアップデートが入る(そして、10年くらい経った古い仕様が切り捨てられる)流れは変わらなさそうですね。

今後のエンジニアに必要とされる技術は、上記の「クラウド」「AI」「Java」のほかに、グローバル対応のための英語力(+多分、数学力)が主ですが、結局、人間の活動なので「最後は熱い心!」とかっこよくまとめられていました。また、企業が社員を教育する余裕が無いので、コミュニティは非常に重要とのことです。

雑感

セッションの内容は真っ当だし、上記の話を「そんなことは無い!」と真っ向から否定できる人は殆どいないでしょう。
(アンテナの感度が低い、あるいは隔離された世界にいる人は除く)

SIの世界からは全く想像もつかない、厳しい世界ですが、セッション中でも述べられていた通り、デジタル・ビジネスの市場は急拡大するので、キャッチアップできれば、いくらでもチャンスはありそうですね。むしろ同じことの繰り返しにならず、いつまでもやることがあるので、楽しみながら仕事をできると前向きに取り組むべきかな、と思います。

また、管理、パワポ、政治劇がメインのSIerの世界では、上記のようなテクノロジの変化を想像すらできないのではないでしょうか。というか、上記の世界を開発標準とか、開発プロセスに落とし込むのは非常に難しいでしょう。誰も今までやったことがないことに、標準もプロセスもないので、エンジニアがその都度、最良と思われる方法を考える必要があり、アジャイルが最も得意とする世界ですね。

K-2 基調講演2 : Java 2014 将来に向かって Simon Ritter (オラクルコーポレーション Java エバンジェリスト)

スライドが見つからないorz

まとめと補足

Oracleの偉いおじさんによる宣伝です。Oracleはコミュニティを大事にします、世界ではこんなにJavaのイベントが盛んです etc... あまり興味無いので以下略。通訳の人大変そう。

R1-1 私がTDDできないのはどう考えてもお前らが悪い!〜エンタープライズJava開発でのTDD適用の勘所〜

当日のスライド

まとめと補足等

実案件でTest Driven Developmentを導入するときの難しさ、ポイント等が中心となる話題でした。
どんな技術、開発技法でも重要ですが、教科書に盲目的に従わずに割り切るのが重要なようです。このケースでは「テストファースト」の原則も、問題点を認識したうえで「同一Sprint内で記述すれば良い」というように緩和していますね。テストはプロダクトのための手段なので、「テストがプロダクトの品質保証の手助けになっているか(むしろ負担になっていないか)」を常に意識しながら、全体最適を考えてアレンジすると良いようです。

細かい技術的な話題は省きますが、KPTを地道に回す、プロジェクト・メンバにノウハウを伝授する、開発メンバの一体感、チームの養成、信頼関係の醸成等、地道な人間ドリブンの活動が重要ですね。

雑感

セッションの中心はテストですが、実際に開発するうえでテストだけを考えるわけにはいかないので、実質的に上手いアジャイル開発プロセス(この場合、Scrum)の回し方になっているのが印象的です。ScrumのSprint Executionは決まったやり方がなく、開発者を信じて、その都度、最良と思えるやり方で進めるものらしいですが、このケースではお互いに信頼関係があって、皆で同じ目標に向かって進んでいたので上手くいったのでしょうね。遣り甲斐がありそうで、とても羨ましいです。
(そういうところで働いてみたい・・・)


ただし、開発者がもう1〜2桁増えて拠点が分散したら、トップダウンで戦略ゲーム的な進め方をするしかない気がします。このやり方でどこまでスケールするのか興味がありますね。
(大手SIerが得意とするのは後者の戦略ゲーム的な開発。開発者は戦場の駒・・・。)

テスト系の小技(テーブルのΔAssertion, SpringのApplicationContextのCachingとその問題点等)も如何にもありそうな問題に対する対処方法なので、頭の隅に入れておこうかと思います。

R1-2 Spring Boot + Doma + AngularJSで作るERP(統合基幹業務システム)松崎 学

当日のスライド

まとめと補足

AngularJS, Spring Boot等の技術で開発した自社サービスのERPの開発の足跡、技術的な苦労話等がセッションの中心でした。Java EEはコマーシャルサポートや、JSFコンポーネント化技術の生産性を高く評価したが、システムを作り直す上ではスケールアウト(=ステートレス)、動作の早さ等を考慮してAngularJSを選択したとのこと。お客さんの目が肥えていて、ハイレスポンスでないと受け入れられないようですね。


自社開発のSaaSでは、スケーラビリティ、レスポンシビリティは死活問題なので、多少複雑でも、JavaScript MVCを利用する意味があったそうです。逆に、隔離された環境で限られた人が触るツールの場合は、JSFの方が生産性が高いので良いとのこと。

なお、注目のAngularの評価は「エンタープライズでも十分使える」「学習コストは高いがディレクティブが強力」とのこと。ただし、JavaScript MVCは過渡期の技術なので、安定したプラットフォームと比べて、維持保守、マイグレーションのコストは余計にかかるそうです。


また、今回初めて聞いたDomaというO/R Mapperフレームワークは、SQLをゴリゴリかける系なので便利とのこと。「MyBatisじゃだめなの?」との突っ込みが入っていましたが、方言を意識したページング・クエリの自動生成等、かゆいところに手が届く機能があるそうです。機会があれば使ってみようかな。


Doma

雑感

JavaScript MVCは、Web業界向けのおもちゃ(SIerのおじさんたちは、Web業界のことをおもちゃだと思ってます。)ではなく、エンタープライズで使える実用的な道具として使われているのが印象的でした。当日はぼーっとしてたので、すぐに思いつきませんでしたが、今思えば、JavaScriptで記述するビジネスロジックの維持管理方法とか、JavaScript側とサーバ側のモデルの同期化とか、テストどうしてるの、とか、色々聞いてみたかったです・・・。

また、Angular云々よりも、むしろERPシステムの設計、実装をもっと突っ込んで聞きたかったかも。

R2-3 リクルートにおけるソリューション開拓と実装展開 〜Elasticsearchによる検索基盤の展開と新ソリューションの開拓状況 宮川典久

スライドが見つからないorz

まとめと補足


リクルート社内で全文検索エンジンElasticSearchを展開するうえで苦労したところ等の話です。リクルート社内では、Apache Solrと比べてスケーラビリティとリアルタイム性に優れたElasticSearchを展開中で、リクルートの要件に合わせて独自に作りこんでいる部分もあるそうです。


リクルートは紙媒体がメインなので、紙面の発行前に検索結果を変えるわけにはいかず、媒体ごとにインデックスの面管理を実施しているとのこと。

雑感


会社の宣伝ときれいなパワポがメインぽかったので、ぬーぼーと聞いてました。むしろ、もう一人の発表者、伊藤さんの自作ツールRedPenのほうが使いどころがありそうで気になりました。

H-4 Javaエンジニアのためのアーキテクト講座 鈴木雄介

当日のスライド

まとめと補足


Java One報告会でも圧倒的な存在感を示していた鈴木雄介さんのセッションです。現代的なITサービス(≠ITシステム)に求められる要件、サービス運営モデル等、抽象度が高い話がメインですが、非常に聞き応えがありました。

最近のトレンドは「仕様が固定的なシステムから、絶えず進化を続けるITサービスへの移行」であり、当然、求められるスキルセットがかなり異なります。ITシステムでも十分難しいですが、IT「サービス」となると、企画、業務、運用、開発と、視点が異なる人たちの利害関係を調整しつつ、サービスをデザイン、運営しなければならないため、膨大なスキル、知識が必要となるそうです。
(スライドのP25あたりを参照)


技術面で言うと、一つのサービスは複数のアプリケーションから構成され、それぞれ最適となる実装は異なるので、否応でもMicroservice Architecture的な設計にせざるを得ないようです。また、設計パターンとしてDomain Driven Designを挙げられていますね。
(私の解釈では、DDDは重厚なUnified Processと、その周辺のモデリング技法に対するアンチテーゼなのかな、と思ってましたが、認識が浅いようですorz)

雑感


一番聞き応えがあって、脳みそが刺激されるセッションでした。ITサービス運営のモデルは、ただのポンチ絵パワポ遊びではなく、実装(含む、人間)を深く理解したうえでの高度な抽象化であり、素晴らしいですね。まだv0.1とのことですが、個人的にはScrum的なPortfolio管理の視点の含めると、「ITサービス運営のモデル」から、「ITサービスを運営する企業の企業活動のモデル」に進化するのではないかと思います。このモデルは特定のサービスに閉じていますが、実際は同一(あるいは他社)のサービスが相互作用しながら発達するわけですし。
(スコープを広げすぎ?)


もう一つ気になるのが、サービスと言っても様々な局面があることです。
(立ち上げ、発展、方向性の修正、他サービスとの連携、新サービスへの移行、統合、サービスの停止 etc... バリエーションが多そう)
そうすると、同じアーキテクトが同一サービスのライフサイクル終了までずっと張り付いているのは現実的ではなく、アーキテクトはどこまでプロダクトの責任を持つべきか悩ましい気がします。
(生き物に近いので、ITシステムよりも手離れが悪そう。飼い犬的な・・・。)


また、サービスのフェーズで必要とされるスキルは異なるはずで(統合、移行はレガシー・モダナイゼーションに近いのでは)、アーキテクトチーム内でも人の入れ替えは頻繁に発生すると思われます。そうすると、重厚なドキュメントが必要になり、アジャイル的なやり方って短期決戦以外は向いていないのでは、とか。

11/18 見づらかったので、見やすいように修正、一部雑感を追加