Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

マイクロソフトのクラウドでのJava EE、そしてJavaエヴァンジェリストへのインタビュー...マイクロソフトのね。 #てらだよしおがんばれ

こちらのブログエントリの翻訳です。

Java EE in Microsoft's Cloud or Interview With Java Evangelist ...At Microsoft : Adam Bien's Weblog

著者のAdamさんおよびインタビューされている日本マイクロソフトの寺田佳央@yoshioteradaさんに翻訳許可をいただいております。

マイクロソフトクラウドでのJava EE、そしてJavaエヴァンジェリストへのインタビュー...マイクロソフトのね。

Adamさん(以下A):寺田さん、自己紹介してください!

寺田さん(以下寺):Adamさん、こんなすばらしい機会をいただきありがとうございます。私は2015年7月から日本マイクロソフトJavaエヴァンジェリストとして働いています。日本Javaユーザグループの幹部メンバーでもあります。http://www.java-users.jp/

マイクロソフトに入る前、日本のサン・マイクロシステムズGlassFishエヴァンジェリストとして働いていました。サンがオラクルに買収されてからは、5年間日本オラクルJavaJava EEエヴァンジェリストとして働きました。日本オラクルでの仕事としては、日本のJavaに関連した技術カンファレンスやイベントの計画や管理、スピーカーをすることなどでした。カンファレンスやイベントは、たとえばJavaOne TokyoやJava Day Tokyo、日本にあるJavaユーザグループでのイベントなどです。

その間に作ったプレゼンテーション資料としては、たとえばこちらにあるものです。http://www.slideshare.net/OracleMiddleJP/presentations?order=popular

www.slideshare.net

私のブログとして日本でよく知られているものは、こちらです。http://yoshio3.com/

yoshio3.com

2013年のJavaOne サンフランシスコでも話しています。http://www.slideshare.net/OracleMiddleJP/javaone-2013-san-francisco-asynconcurrencyonee7

www.slideshare.net

2015年7月に日本マイクロソフトに入社しました。日本でのJavaエヴァンジェリストという立場は継続しています。

A:寺田さんは以前から日本でJava EEエヴァンジェリストとして働いていました。日本ではJava EEはよく使われているのですか?

寺:Java EEは日本でもよく使われるようになりました。Java EEが公式にリリースされた2013年6月から、Java EE関連の日本語書籍がたくさん出ましたし、日本オラクルでは毎年Java Day TokyoというJavaの技術カンファレンスを開催しています。Java Day TokyoでのJava EE関連のセッションは、たいてい全セッションが満席になります。多くの日本の開発者が私のプレゼンテーションを参照しています。http://www.slideshare.net/OracleMiddleJP/presentations?order=popular

日本の開発者で自分のブログにJava EE関連の内容を書いてくれる人もいます。たとえば、“Java EEアドベントカレンダー”を日本の開発者は毎年作っています。過去4年分の成果はこちらです!

Java EEアドベントカレンダー (2012-2015)

2012: https://atnd.org/events/33783

atnd.org

2013: http://www.adventar.org/calendars/152

www.adventar.org

2014: http://qiita.com/advent-calendar/2014/javaee

qiita.com

2015: http://qiita.com/advent-calendar/2015/javaee

qiita.com

私はJava EE 6が公式にリリースされた2009年からJava EEを紹介し始めました。当時はJava EEに関心を持つ開発者はほとんどいませんでした。まだStruts/Spring/Hibernateや日本オリジナルのフレームワークを使っていました。それから状況は劇的に変わりました。最近は日本の開発者はJavaでWebアプリケーションを開発するにあたり次の3つの選択肢から選ぶことが多いです。Java EEか、Spring(MVCまたはBoot)、Playフレームワークのどれかです。

A:日本ではどのアプリケーションサーバが一番使われていますか?そしてその理由は?

寺:難しい質問ですね。昔私はGlassFishエヴァンジェリストだったので。私の周囲にいる開発者にはGlassFish/Parayaを開発環境として使っている人が多いです。Tomcatを使っている人もたくさんいると聞いたことがあります。エンタープライズ環境ではアプリケーションサーバは非常に重要です。こうした環境では、WebSphereやWebLogicJBoss EAPがよく使われます。最近では先進的な開発者はクラウド環境においてアプリケーションサーバをインストールしません。アプリケーションサーバをインストールする代わりに、スタンドアロンのJARファイルを作ります。マイクロサービスとするために、JARファイルにWebコンテナ(組み込みコンテナ)を同梱しています。つまりこういったことは要求がどんなものかによって変わりますので、開発者や企業はニーズに合わせてベストなものを選択するでしょう。

A:寺田さんは今マイクロソフトJavaエヴァンジェリストとして働いています。正確にはどんな仕事なのでしょう?

寺:2つの役割があります。初めに、マイクロソフトの文化がより開かれたものに変わったことをマイクロソフトの顧客以外の方に知ってもらうことです。これは、新しいマイクロソフトに対して、新しいファンになってもらうためです。2014年にサティア・ナデラがマイクロソフトのCEOになってから、マイクロソフトは劇的に変わりました。たとえば、サティアはたとえば「マイクロソフトLinuxを愛しています」というようなびっくりするメッセージを共有しています。さらにAppleの大きなイベントのキーノートでiOSで動作するOfficeの発表などを話しています。

私は大学生の頃からUnix OSとJavaで作業をしてきました。なのでマイクロソフト製品はあまりよく知りません。でも今のマイクロソフトではそのことは問題になりません。OSとプログラミング言語にかかわらず、今はMicrosoft Azure上でどんな言語とOSにも対応するサービスを提供しています。たとえば、AzureではJavaPHPPerlRuby、Node.jsを実行するLinuxFreeBSD仮想マシンをデプロイすることがでいます。

最後に、私はサン・マイクロシステムズを会社として愛していました。なぜならサンは次世代のIT技術をリードし、作り出していたからです。サンのように、マイクロソフトも今最新のIT技術を作り出すために変わってきています。私がマイクロソフトのファンになり今マイクロソフトを愛しているのはこれが理由です。マイクロソフトの変わったところとマイクロソフトのプラットフォームでJavaを推進していることを新しいコミュニティに知ってもらうのは楽しいですね。

2つ目の役割は、マイクロソフトJavaエヴァンジェリストとして、開発者と管理者の両方にマイクロソフトのプラットフォームでJavaを使用することについて、技術的な情報提供を始めることです。過去の経験はまさにこれにぴったりです。たとえば、Azureで実行している仮想マシンのうち25%がLinuxであることはご存知かもしれません。もちろんJavaのWebアプリケーションはそこで実行できます。最近では世界中の開発者がDevOpsやマイクロサービス、Dockerといった新しいテクノロジに強い関心を持っています。そしてもちろんこれらはAzureでも動作します。私はJavaのDevOps (AzureでのGitやJenkins、Docker、Tutum)のデモストレーション動画を作りました。https://youtu.be/K-AFA5D_0OM

youtu.be

Java用のAzure SDKを使ってAzure上に各自のサービスを作ることもできます。たとえば、このJSFサンプルです。これは私が作りました。Azureストレージにファイルをアップロードするものです。https://github.com/yoshioterada/JavaEE7-App-On-Azure

github.com

アクティブディレクトリを使うことで認証サービスを作れます(大規模エンタープライズの85%がアクティブディレクトリを使っています)。アクティブディレクトリを使い、モバイルで2段階認証を使って多段階認証アプリケーションを作れます。Java開発者とミッションクリティカルなエンタープライズアプリケーションにとってこれはとても役立ちます。

A:JavaOneで寺田さんはマイクロソフトクラウドGlassFish / Parayaをプッシュする方法をプレゼンしましたよね。あれはどのくらい難しかったですか?

GlassFish/Payaraを実行するためには、以下の3つの簡単な選択肢のどれかを使うことをおすすめします。2015年のJavaOneでは3番のデモを見せました。

  1. IaaS (インフラストラクチャ as a サービス)
  2. クラウドサービス (定番)
  3. Azure上のDocker

1ではHyper-Vの仮想環境でLinux (Ubuntu,やCentOSなど)またはWindowsサーバを作れます。Azureの管理ポータル画面にあるウィザードの基本設定に基づいてとても簡単に作れます。仮想マシンを作った後、自分自身で新しい仮想マシンGlassFish/Payaraをインストールできます。

2ではクラウドサービス(定番のPaaS)がPaaSタイプのサービスを提供しています。独自のJDKアプリケーションサーバ、対象となるアプリケーションを含んだパッケージをデプロイしてWindowsサーバ上で実行できます。Windowsサーバ OSはマイクロソフトが管理しています。デプロイするアプリケーションをパッケージングするために、EclipseIntelliJプラグインを使えます。アプリケーションサーバTomcatGlassFish、Liberty、JBoss、Jettyから選ぶか独自のサーバを設定することができます。

3ではAzure上のDockerはCoreOSまたは各インストール上で実行することができます。最近私はDockerコンテナ上でGlassFishを使うデモを見せました。DockerコンテナはAzureポータルマーケットプレイスから作成したCoreOSで実行します。Azure管理ポータルを使えばたった20分でGlassFish環境を構築できます。でもはこちらです。デモ動画 https://www.youtube.com/watch?v=xjs0EiETZfc 必要なファイルすべて https://github.com/yoshioterada/GlassFish-Docker

www.youtube.com

A:Java EEはどのように生産的なのですか?

寺:Java EEの生産性のためには、私はNetBeans IDEを勧めます。NetBeansGlassFishを使う日本語のデモを作りました。https://www.youtube.com/watch?v=qkOPAwr0YqY

www.youtube.com

ご覧の通り、何の設定もなしにAjaxのWebアプリケーションをたった11分で作れました。同じアプリケーションを作成するには、GlassFishを同梱したNetBeansをインストールするだけです。これは開発者が開発環境を用意する際にとても役立ちます。Java EEはWebアプリケーション開発に必要なものをすべて持っています。もしHTML 5をよく知らなくても、WebフレームワークとしてJavaServer Facesを使えます。そしてHTML 5をもっと使いたくなったら、JAX-RS RESTful Webサービスを使えます。Java EEでは拡張性の利点があります。たとえば違うフレームワークが使いたくなったら、アプリケーションにそれを含めることができます。こうした理由で私は標準技術としてJava EEを使うことを開発者に勧めています。

A:Java EE標準は寺田さんにとってどのくらい重要なことですか?あなたのコードがプロプライエタリアプリケーションサーバの機能(たとえばGlassFishWebLogic Serverの機能)に依存していたら?

寺:Java EE標準はエンタープライズ開発者にとってとても重要です。世界中に非標準の技術は多くありますが、それらは非常に注意して使うべきです。後方互換性やプロジェクトロードマップ、管理コストや活発さは注意して考慮する必要があります。Java標準は後方互換性にとても気を払っており、それはJava EEにも言えます。プロジェクトロードマップはスペックリードによって誰にでも共有されています。また、Javaの仕様はすべてJCPプログラムによって決定されます。これはとてもオープンで見える化されています。誰でも各仕様に貢献できます。たとえば"Adopt A JSR"プログラムに加入したりといったことです。https://java.net/projects/jjug/pages/Adopt-a-JSR-JP

コードはすべてJava EE互換アプリケーションサーバで実行できます。機能としてはセキュリティだけが例外です。Java EE 7まで、開発者はプロプライエタリな認証/認可の実装を書いて設定する必要がありました。Java EE 8の公式リリースではこれを解決しました。JSR-375 (Java EE Security API)という仕様です。

A:Java EE 8のAPIを見てみましょう。寺田さんにとって一番興味深い/重要なAPIはどれですか?

Java EE 8なら、私はそのプレゼンテーションも作っています。http://www.slideshare.net/OracleMiddleJP/java-ee-8-41541611

www.slideshare.net

私は本当にJava EE 8のリリースを楽しみに待っています。このリリースで世界中で役に立つ機能がたくさん来ることになります。たとえば、私はJSR-353(JSON-P)やJSR-367(JSON-B)、JSR-365(CDI)、JSR-371(MVC)、JSR-375(Security)に興味があります。JSON-Bを使うと、JSONデータをもっと簡単に扱えます。また、JSONポインタとJSONパッチはJSON-Pの次のバージョンで使えるようになり、とても便利です。Java EE 6からCDIJava EEでもっとも重要な機能の1つとなりました。CDI は型安全な疎結合やイベント処理だけではなく、今後 CDI にはより多くの機能が含まれていくことになるでしょう。EJBのような巨大なフレームワークにならないためにも、CDIの軽量バージョンが次のバージョンで利用できるようになるでしょう。

最後にセキュリティですが、認証/認可の標準APIを提供します。それが使えるようになれば、アプリケーションからプロプライエタリなセキュリティのコードをすべて取り除くことができます。

A:記事や操作動画、ほかにも私たちに紹介してもらえるものはありますか?

寺:

英語 [エントリポイント] : AzureでのJavaクラウド開発者のための、オプションがたくさんあります! | Microsoft Azure Blog https://azure.microsoft.com/en-gb/blog/lots-of-options-for-java-cloud-developers-with-azure/

azure.microsoft.com

Brian Benz : 世界でのマイクロソフトJavaエヴァンジェリスト

Twittter : @bbenz

SlideShare : http://www.slideshare.net/brianbenz/presentations,

LinkedIn: https://www.linkedin.com/in/brianbenz

私の情報

日本語の(私の)ブログ : http://yoshio3.com/microsoft-azure/

SlideShare : http://www.slideshare.net/tyoshio2002/

Twittter : @yoshioterada

GitHub : https://github.com/yoshioterada

寺田さん、インタビューいろいろありがとう。マイクロソフトJavaへの情熱を燃やし続けてね!