来場者全員に向けて講演された「Main Stage」
今回のSpringOneでは、大ホールに毎朝参加者が一同に会してMain Stageというセッションを聴講するという形態になっていました。Main StageではSpringやPivotal Cloud FoundryといったPivotalプロダクトのアップデート情報や、その日以降に開かれるセッションの紹介、デジタルトランスフォーメーションに取り組む企業の事例紹介などが扱われました。
セッション初日のMain StageにはPivotalのCloud R&D部門副社長のOnsi Fakhouriさんが登壇し、Pivotalのミッションの中心となる信念として「学び」について語りました。
Onsiさんは「学び」を自分の現在地から進むべき方向を探索し、選択し、移動するという3ステップの繰り返しであると定義した上で、「『学び』こそが複雑な現実に対処する方法である」といいます。そして効率的・効果的に学ぶためにSpring、Cloud Foundryといったツールやプラットフォームと、プロセスとカルチャーの変革を助けるPivotal Labsがあると述べました。
![現実の世界は複雑であると語るOnsiさん](http://cz-cdn.shoeisha.jp/static/images/article/10621/10621_04.jpg)
その他、SpringとPivotal Cloud Foundryの新機能について紹介してくれました。それらについてはそれぞれ個別にまとめて後述します。
Pivotalのメンバー以外では、MicrosoftでVisual Studio Codeを開発しているErich Gammaさんの講演が大変興味深いものでした。
Erichさんは2011年までのEclipseの開発、Microsoft入社後に取り組んだウェブブラウザ上で動作するエディター"Monaco"の開発を振り返り、そこから得た学びとVisual Studio Code(以下、VS Code)に至る流れを語りました。
Monacoの開発を通して学んだことは、ブラウザ上での開発環境が開発者達の求めていたものではないということでした。デスクトップアプリとして開発者の手に馴染むプロダクトの再検討をする中で、エディターとIDEの中間でエディター寄りの位置にスイートスポットがあるという考えに至ったそうです。
Eclipseから学んだことは、拡張を本体と同一のプロセスで走らせるべきでないということでした。拡張の動作が不安定な場合に本体も引きずられてしまうためです。
そこでVS Codeでは、拡張を別プロセスで走らせてRPC(Remote Procedure Call)で会話する形態となったといいます。
また、VS Codeでは多言語のサポートのためにLanguage Serverという仕組みを使用しています。従来、エディターやIDEごとに各々実装されていた言語サポートを独立したサーバープロセス(以下、Language Server)として用意し、各エディターがLanguage Serverと対話するように変更することで、さまざまなエディターに対して同一の言語サポートを提供できるようになったと述べます。
各言語コミュニティがさまざまなLanguage Serverを開発しており、HeadlessなEclipseをバックエンドに用いたJavaサポートも提供されているそうです。PivotalもSpring Boot、 Cloud Foundry、Concourse CIをサポートしたLanguage Serverを提供していると述べました。
![Java向けのLanguage ServerはEclipseベース](http://cz-cdn.shoeisha.jp/static/images/article/10621/10621_05.jpg)
最後に、Azure上に構築したTo-Doアプリケーションを題材にデモを実施し、VS CodeからJUnit・Javaデバッガーを利用できること、さらにSpring Boot固有のサポートもあることを示しました。
これまで多くのSpring開発者がSpring Tool SuiteかIntelliJ IDEAを使用していたと思いますが、VS Codeが新しい有力な選択肢であることを認識させてくれた講演でした。