SHOEISHA iD

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

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

【デブサミ福岡2015】セッションレポート(AD)

【デブサミ福岡2015】Microsoft <3 Javaで広がる今後の世界

Developers Summit 2015福岡 講演レポート

  • このエントリーをはてなブックマークに追加

開発生産性を高めるJavaとコンテナ型サービスDockerの組み合わせ

 Dockerは、2014年10月に発表されたDocker社との提携により、AzureにおいてLinuxのコンテナとして提供が開始された。本セッション参加者への会場アンケートでは、本番環境で使っている人はまだ少ないようだ。マイクロソフトはDockerに強くコミットしており、次期Windows Serverで採用するとしている。

 DockerはJava界からも注目されている。寺田氏が世界最大のJavaイベントJavaOne 2015のセッションを検索したところ約400中25がヒットした。また世界で約100人いるJavaチャンピオンの一人Adam Bien氏は「JavaとDockerを組み合わせると非常に開発生産性が高い」と自身のブログに書いている。同じくJavaチャンピオンであるMarkus Eisele氏は「組み合わせにより、非常に素晴らしいサービスをいち早く提供できるようになる」と記述している。

 寺田氏は「Dockerが提供され、注目されている背景には、開発環境の統一が困難という事情がある」と語る。例えば、JDK、Tomcat、MySQLを使う場合、バージョンの組み合わせは無数にある。それはテスト環境、本番環境でも起こっている。

 この問題解決のために行われてきたのは、管理台帳に記載しての管理化や、仮想マシンイメージの共有だ。しかし、管理台帳を利用した場合、記載内容に従い人間が直接操作をするためミスが発生する可能性がある。また台帳に対する更新漏れによって、台帳の記載内容と実際の環境で設定が異なる事態も発生する。仮想マシンで共有した場合、1つのイメージを渡すのに数十ギガ必要かもしれない。さらには、仮想マシンに対して施した変更に対する追従が困難だ。こうした問題を解決するのが、アメリカのDocker社が開発・提供するコンテナ管理ソフトウェアDockerだ。

 コンテナ型サービスは、仮想マシンに対して以下の利点をもっている。

  • サイズが小さい
  • オーバヘッドが低い
  • 移植性が高い
  • 開発・運用の効率改善

 そこから"Immutable Infrastructure"、"Microservices Architecture"、"DevOps"といった言葉と共にDockerが使われる場面が多くあるという。

 Dockerではミドルウェア、Webアプリケーションのデプロイ方法などのシステム構築を全部コード、スクリプトで書く。以後、システムの構成変更は、コードに対して実施する。

 Dockerコンテナの構造だが、まずホストOS(現在はLinux)があり、その上にDockerのエンジンをインストールする。その環境で、スクリプトで作成したコンテナをどんどん動かしていく。

 Azureでは、Dockerのエンジンを動作させるために、いくつかの方法を提供している。例えば、Dockerコンテナを稼働させるために最適化した、CoreOS(軽量Linux)というものを組み込んでいる。CoreOSは、Azureのポータルから選択すれば、エンジンがインストールされた形でサービスが立ち上がる。

 Dockerを使うにはDockerfileを作る。ADD、COPY、FROMなどのコマンドに対して引数を書き、環境構成を作る。一回そのテキストファイルを作ると、それを元に同じコンテナを作っていくことができる。

 また、例えばJDKやGlassFishなどの新バージョンが出たときは、そのURLを書き換えてやれば差分だけ取ってきてくれる。同様にWebアプリケーションのデプロイで、アプリケーションの部分が変わった場合、warファイルだけを取ってきてサービスを提供できるようになる。

 ここで寺田氏はデモを披露した。AzureポータルのMarketplaceに選択肢があり、そこでCoreOSを選び、必要な構成、設定情報などを記入する。リソースグループを設定し、リージョンとして東京、東日本を選択し、OKボタンを押す。寺田氏は「選択するインスタンス・タイプは結構重要で、システム構築する(後述:docker build)際の時間の差や、サービスのパフォーマンスに影響するので、必要に応じて選んでほしい」と語った。続けてDockerfileを作れば、準備はOKだ。

 Dockerfileからのイメージ作成は、docker buildというコマンドの実行で行う。コンテナの起動はdocker runを使い、自分が作成したイメージファイルを指定すれば、自動的に立ち上がる。

 基本的に、設定ファイルを作り、コマンドを2個叩けばいいだけだ。これで環境が統一しやすくなる。

Azure上にはJavaで利用可能なサービスが多数用意されている

 Docker以外にも、AzureのSDK提供により、いろいろなサービスをJavaから制御できるようになっている。すべてOSSのJavaプロジェクト管理ツールMavenによるもので、POMファイルにちょっとした設定をすれば、普通に開発ができる。

 このAzureSDKの中で、扱いやすいとして寺田氏のオススメはブログサービスで、デモも披露された。またAzure上でPaaSとして提供されているSQLサーバをJavaから普通に扱うことができることも強調された。

 続けて寺田氏が紹介したのが、Visual Studio Onlineだ。これは開発ツールではなくチームで開発する際に必要な機能がまとめられたもので、SaaSとして提供されている。これにより、今まで面倒だった大規模なチーム開発におけるツール構成が、より簡単になる。

 最後に寺田氏は、「Azureを試して使い勝手が悪いと感じたことがあれば、フィードバックしてほしい」と呼びかけた。「今のマイクロソフトのすごさは、フィードバック対応力だと思っています。ちょっとしたことでもいい。フィードバックが次の時代のAzureをよくしていきます」と語り、セッションを閉じた。

 Microsoft Azureに対するフィードバック先はコチラ。

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

  • このエントリーをはてなブックマークに追加
この記事の著者

京部 康男(Biz/Zine編集部)(キョウベ ヤスオ)

翔泳社メディア事業部 統括編集長、Biz/Zine(ビズジン)の統括および、EnterpriseZine(エンタープライズジン)に関わる他、カンファレンス、セミナー、書籍などの企画・制作に従事。

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9085 2015/11/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング