なぜNTTデータがSpring Frameworkの入門書を手がけるのか?
――『Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発』はNTTデータの皆さん(槙さんは執筆中に転職)が執筆されましたが、最初におうかがいしたいのは、なぜNTTデータがJavaのOSSフレームワークであるSpring Frameworkのノウハウを広めるための入門書を手がけたのかということです。
本橋:NTTデータはもともとTERASOLUNAという独自のフレームワークを開発し、10年以上使用しています。これはSpring Framework、Apache Struts、MyBatisを組み合わせて作ったものです。10年前にはいろいろなJavaのフレームワークが登場しましたが、現在、私たちとしてはSpringとJava EEの二強時代に入っていると感じています。
Springは商用システムでの導入実績も多く、かなり洗練されてきて、そのまま商用システムレベルで使えるようになっています。そこで、NTTデータでは独自のフレームワークを開発するところから脱却して、OSSベースのフレームワークをなるべくそのまま使って商用システムを開発しようという方向転換をしました。
私たちはほぼSpringを使っているので、Springを皆さんに使っていただくことが重要です。なぜなら、この勢力が大きいほど、シェアが高いほど、使用する開発者が多くなり、これを利用したアプリケーションや事例も多くなります。長期で使っていくうえでは、仲間を増やす活動が大事なんです。
その意味で、Springを使い始める取っかかりになるものとして本書を執筆しました。私たちが蓄積してきたノウハウを本にすることで、多くの人にSpringを知ってもらい、いま以上に使っていただくことを目指しています。いままでだと実践的なノウハウは社外に出さなかったんですが、これからは私たちは隠さずすべて出していきます。その代わり、皆さんにもSpringを使っていただきたい。そうしてもらえれば私たちは嬉しいですし、コミュニティにも役立ちますし、ひいてはソフトウェア開発業界にとっても意義があると思います。つまり、業界貢献の一環として本書を執筆したわけです。
――ノウハウを社外に出して、それを使ってもらいたいと。NTTデータには具体的にどんなメリットがあるのでしょうか。
本橋:Springを多くの人に使っていただくと、まずは廃れないというメリットがあります。廃れると人が離れていくので、あまりメンテナンスされなくなり、セキュリティの問題が残ったままだったり機能追加が行なわれなくなったりしてしまいます。とにかくいろんな企業にも使ってもらって人気を保っておくことで、フィードバックが活かされてソフトウェアの品質が向上し、機能追加も行なわれます。すると私たちも恩恵を受けられることになります。これが一番大きなメリットです。
また、大学生や若い社会人がSpringを勉強したり、これで開発したりしてもらえるようになると、私たちが社員を採用するとき最初からSpringを知っている人を雇えますし、協力会社にも仕事をお願いしやすくなります。とはいえ、やはりメインで考えているのはSpringのシェアを拡大することによるメリットですね。
――NTTデータのノウハウを社外に出すことは、社内的には大丈夫なのでしょうか。
本橋:あまり大丈夫ではないかもしれません(笑)。本書のほかにも約2,000ページあるガイドラインを公開していますが、単に公開するだけだと、どうしてそうするのかと問われます。NTTデータのお金でこうした活動をしているので、活動が何に繋がるかをきちんと説明する必要があります。
この活動の目的は大きく三つあるんです。一つは仲間作り。そのためにガイドラインを公開したり本を書いたり、今後は記事を書いたりもしていく予定です。また、コミュニティ活動もやっていて、Springのイベントを計画しています。もう一つはSpringの品質向上です。Spring自体に魅力を持たせるために、バグの報告はもちろん、セキュリティの問題を解決したらレポートを送っています。最後の一つは、私たち自身がSpringコミュニティでNo.1の存在になることです。そうすることで、お客さんから声をかけていただいたり、開発者の皆さんが弊社で仕事をしたいと思っていただけたりするようになればいいなと。
ノウハウの共有はこれらの活動の一つとして位置づけています。ですから、ノウハウを出すことで得られるメリットが、出さないことによるメリットよりも大きいということを社内で説明しています。いまはけっこう納得してもらっていて、公開自体に疑問を持たれることはなくなっています。が、実はお客さんのほうから言われることがあるんですね(笑)。ガイドラインには有用な情報がたくさん書かれているのに、これを無償で公開するのは何か裏があるのでは、と。そんなことはなく、いまお話しした目的がすべてです。
――皆さんもノウハウの公開に関しては納得のうえで執筆されたのでしょうか。
本橋:開発者は自分の自己表現の一つでもあるので、嫌だという人は少ないですね。ただ、技術に投資している側からすれば、本当にメリットがあるのかを気にかけるのは当然です。
池谷:書いている側としてはむしろ共有したいですね。自分の発見したこと、自分しか知らないことを発信することは一技術者として大きなモチベーションになるので大賛成です。
本橋:企業によってはSpringでバグを見つけても、報告するプロセスや社外に出す仕組みがないこともあるようですね。弊社の場合はバグやセキュリティの問題を見つけたら必ず報告しなければなりませんし、機能改善も積極的に議論しています。逆にノウハウを閉じると、開発自体がやりにくくなります。開発者のモチベーション的にはいまのほうが健全かなと思います。
商用システムを開発している人がSpringに入門するために
――皆さんはどういう読み手を想定されて書かれていましたか?
池谷:まずは、Springの名前は知っているけれど実際に何かを作ったことがない、DIなどのSpringの基礎を知らない人ですね。また、Spring Bootは使ったことがあっても中がどういう仕組みになっているか知らない人です。そうした人がSpringの仕組みを理解できるように心がけていました。
開発者向けか趣味で作っている人向けかというと、やはり我々と同じ業界で仕事をしている人にフォーカスしていますね。
――タイトルに「徹底入門」とあるので、本当の初心者も本書を手に取ってくださると思いますが、そうした方にはSpringを使ううえでどんなメリットがあると伝えたいですか?
本橋:Springは最新の技術動向に追従していますし、開発者も多く、学んでおけばビジネスに使えます。Javaで開発するのであればSpringさえ知っていれば食いっぱぐれしないで生きていけるのではないでしょうか。本書の内容で、たいていの開発現場で使われる機能は網羅しています。
Springだけ集中して学べば、アプリケーションを開発するときに必要なことがすべて分かるようになりますね。昔は画面だったらこれ、データベースアクセスはこれ、といろいろなものを使わなければならなかったんですが、Springにはすべて包含されています。また、最近注目されているマイクロサービスの実現もSpringで整っています。ほかのフレームワークではそこまで網羅していませんし、最新技術も追いかけられていないでしょうから、初心者が最初に取り組むにはもってこいですね。私が20代なら間違いなくSpringを選びます。
Spring Bootから始めた人もSpringの仕組みを知る必要がある
――本書ではSpring Bootについての章も設けられていますが、Spring Bootではどういうことができるのでしょうか。
池谷:よく、Spring Bootでは商用システムの開発に向かないという勘違いをされることがありますが、Spring BootとSpring本体は別物ではなく、Spring Bootでミッションクリティカルなものが作れないわけではありません。Spring本体で作れるものがより便利に作れるようになったということですね。
本橋:Springはプロジェクトがたくさんあるので、初心者がやると設定や依存関係で脱落してしまいがちです。そこをSpring Bootが勝手にやってくれるので、とりあえずSpringを使ってみたい人には最適ですね。書いたコードがすぐ動くのがSpring Bootです。
槙:そうなんです。Spring Bootは特に設定することもなく、簡単に開発ができてしまいます。ですから、Spring BootからJavaのアプリケーション開発を始めた人も多いそうですね。執筆陣はSpringの知識を下から積み上げてきたので、技術の勘所や仕組みを分かったうえで使えます。しかし、Spring Bootから始めた人はいきなりアプリケーションを動かせるので、困ったときやトラブルにどう対処したらいいのか分からない方も多いんです。
Springの基本を知らないがゆえに、Springの問題なのかSpring Bootの問題なのか区別がつかず、どこを調べたらいいか分からずに困っている人をよく見かけました。このような人たちに「ここは押さえてほしい」という思いを込めて執筆しました。
池谷:仕事で作る場合、障害が発生したり機能を追加したりしたいとき、技術的な裏付けといいますか、中の仕組みを理解しておかなければいけないので、Spring Bootだけを知っていればいいということにはなりません。ですので、本書でその仕組みを知っていただきたいですね。
初心者はまず手を動かしてから仕組みを理解しよう
――では、本書はどう読み進めていくのがいいのでしょうか。
槙:初心者が最初から読み進めるとむしろ理解しにくいと思うので(笑)、「Chapter13 Spring Boot」や「Chapter14 チュートリアル」から始めて、動くものを味わってから、そのあと中身を知るために最初から読んでみるのがいいと思います。
池谷:「Chapter2 Spring Core(DI×AOP)」の内容だけだと作れるアプリが地味で面白みに若干欠けるので、そこで挫けてしまうかもしれませんね(笑)。ここが重要なんですけれども。
槙:そうです、「Chapter2」はすべてのSpringユーザーが知っておかないといけないことが詰まっていますから。
川崎:勉強会などでSpring Bootを面白いと思った方は「Chapter13」から読んでみて、実際にアプリを作ってみるのがいいと思います。基礎から学びたい人は「Chapter2」の「DI」と「AOP」から読んでみて、残りはほかの章を読んだあとに戻ってきてからでもいいかもしれません。
本橋:自分はどう読んでいくのがいいのかを見定めてほしいですね。
――読んでいる途中で挫けそうになったり、モチベーションを保てなくなったりしたときはどうすればいいですか?
槙:「Chapter13」や「Chapter14」を読んだうえでそうなるとしたら、Springを使うのはちょっと厳しいかもしれません(笑)。
本橋:すべてを読む必要はなく、実際に開発を始めて、実装したい機能などがあれば辞書的に本書を使ってもらえばいいと思います。細かく読んでいると私でも疲れますから、ざっと読んでおくだけでもいいでしょうね。
槙:中身をきっちり理解しなくてもいいので、頭の中にインデックスを作っておけばいいと思います。
Springに興味がある人と一緒にコミュニティを盛り上げたい
――最後に、これからSpringを始めたいという方に向けてメッセージをいただけますか?
池谷:ボリュームが多くて読むのはたいへんかもしれませんが、全部読めば間違いなくSpringプロフェッショナルになれる情報が書いてあるので、本気で学びたい人はぜひ読んでください。本書を読めばSpringは充分使いこなせます。
槙:本書はSpringを世界一詳しく書いた本だと思います。機能が網羅されていて、内容も業務で通用します。本書はSpringのアプリケーション開発者にとって必携になるのではないでしょうか。「Chapter14」の「おわりに」に、読んだあとの次のステップについてメッセージを書いたので、そこも押さえてください!
小島:Springを使っている人は気になるところから読んでみてください。いろいろ網羅されているので、要所で参考にするだけでも有用です。
川崎:やはりボリュームは多いですが、Springはこれですべてというわけではなく、ほかにもSpring Cloudなどもあります。これで終わりではなくこの先に進んでいくために、みんなでSpringを盛り上げていければいいなと思います。
本橋:私も、皆さんに本書を読んでいただいて、一緒にSpringコミュニティを盛り上げていきたいですね。Springに興味があって、商用システムの開発をしている方は仲間になりましょう!