SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

Spring 5.0は来春リリース! クラウドネイティブ開発、マイクロサービス化など最新技術・事例にあふれた4日間

世界最大規模のSpring Frameworkイベント「SpringOne Platform 2016」参加レポート


セッション「Cloud Native Java」

基調講演で登壇したJosh Longさん(以下、Joshさん)は、「Cloud Native Java」と題したセッションも行いました。 彼は、昨年度の日本Springユーザ会(JSUG)主催イベント「Spring In Summer」や、 JSUG勉強会でも来日して講演しているので、ご存じの方もいらっしゃるのではないでしょうか。 また、昨年11月から米O'reillyより、Joshさんが執筆中の書籍『Cloud Native Java』がEarly Release版として同社のWebサイトで販売されています。

セッションはこんな感じの部屋で行われています
セッションはこんな感じの部屋で行われています

このセッションでは、スライドはほとんど使われませんでした。 代わりにJoshさんは、Spring Bootのひな形を生成するサイト「Spring Initializr」を利用し、ライブコーディングで Spring Bootアプリケーション、Configサーバ、Edgeサービスなどを瞬く間に構築してみせ、会場を沸かせました。 聴講者には、Spring Bootを使うとクラウドネイティブなアプリケーションがいかに簡単に開発できるかがよく伝わったと思います。 ライブコーディング中にアプリケーションが動作しなくなるという、ライブならではのトラブルがあったのですが、 すぐに原因を見つけて修正した冷静な判断力はさすがの一言です。

全体を通じて、Spring Bootの開発スピードの速さを体感する場となりました。

セッション「Spring Cloud on AWS」

Amazon Web Services(AWS)の各種サービスをSpringで効果的に利用する方法について、 Spring Cloud for AWSのコミッタであるAgim Emruliさん(以下、Agimさん)が講演しました。

Agimさんは「依存性の注入(Dependency Injection)」 「アスペクト指向開発(Aspect-oriented Dev)」「可搬的サービスの抽象化(Portable Service Abstractions)」 という3要素により、オブジェクトをシンプルにして扱うのがSpring流のプログラミングスタイルであると述べ、これを「Spring Triangle」と表現しました。

Spring Triangle
Spring Triangle

Spring Cloud for AWSはこのような要素を取り入れ、 Springユーザーが慣れ親しんでいるスタイルでAWSのサービスを利用できるように設計されているそうです。 例として、Springのプレースホルダを用いてAmazon EC2のインスタンスの管理情報をインジェクションする機能や、 Springのキャッシュ抽象化機構を通してAmazon ElastiCacheを利用する機能などが紹介されました。

AWS CloudFormationとの連携機能の紹介もありました。 AWS CloudFormationは、AWSリソースの設定をテンプレート化しておき、プロビジョニングするためのサービスです。 Spring Cloud for AWSは、AWS CloudFormationが各リソースに対して 自動生成する物理名を解決する機能を備えているため、開発者は物理名を意識せずに 論理名を使ってリソースにアクセスできるようになっています。

その他にもさまざま機能が紹介されましたが、全体として、Springユーザーであれば自然と使いこなせるよう工夫されているように感じました。 AWSに載せるアプリケーションを開発する際、使用を検討してみてはいかがでしょうか。

セッション「A Lite Rx API for the JVM」

このセッションでは、Project ReactorのLeadであるStéphane MaldiniさんとCommiterのSébastienさんが、Reactive APIに関する説明を行いました。

セッション「A Lite Rx API for the JVM」のオープニング
セッション「A Lite Rx API for the JVM」のオープニング

最初に、「Reactiveとは何か」から解説がありました。 Reactiveとはイベントドリブンシステムに有益な定義であり、 Reactive Manifestoで明確に定められています。 この定義に則って、即応性、耐障害性、弾力性、メッセージ駆動を備えたシステムを「Reactive Systems」と呼びます。

また、Reactiveプログラミングでは、「Reactive Stream」と「Reactive API」という2つの技術要素を備えた環境で行う必要があり、処理は非同期、ノンブロッキングで実行されるものとなります。そのため、Reactiveプログラミングのコードは関数型になるのが一般的とのことです。

Reactive Streamとは、非同期処理の中でデータの流れを定義したもので、次の4つのAPIから成ります。

  • Publisher
  • Subscriber
  • Subscription
  • Processor

これらはすでに様々なライブラリで取り込まれており、JDK 9のjava.util.concurrent.Flowクラスにも含まれています。

Reactive APIとは、ストリームを流れるデータの加工をするためのもので、次のような複数のライブラリが存在します。

  • Reactor 3.0
  • RxJava 1.x
  • Akka Stream 2.x

これらのうち、Reactorが最新のAPIです。Springとのエコシステムを構築し、既存のSpring MVCなどと同様の使い勝手を実現しているため、 スムーズに使い始められるとのことでした。

そして、「Mono」や「Flux」といったReactorの中心的なAPIを紹介した上で、GitHubで公開されているハンズオンで実際に触ってみましょう!という案内がありました。

Reactiveプログラミングは最初の一歩を踏み出しにくいかもしれません。 まずは上記のハンズオンを使い、コードレベルで体感すると理解が進むのではないかと思います。

次のページ
セッション「Task Madness - Modern On Demand Processing」

この記事は参考になりましたか?

イベントレポート連載記事一覧

もっと読む

この記事の著者

SpringOne Platform 2016参加チーム(SpringOne Platform 2016サンカチーム)

【NTTデータ】池谷智行、川崎真弘、倉元貴一、佐々木啓祐、本橋賢二 【NTT】岩塚卓弥 【Pivotalジャパン】槙 俊明

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

本橋 賢二(NTTデータ)(モトハシ ケンジ)

米国駐在時に、OpenStackやOpen Compute、Open Networking Foundationなど、クラウド(IaaS)に関するオープンイノベーションに取り組む。特に、OpenStackは創設メンバーの一人として設立当初より深く関わり、Austinで開催されたOpenStack初回...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9631 2020/02/20 16:33

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー