クラウドサービスの利用はこれからのエンジニアの必須スキル
――『プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで』は、GCPの特徴や機能だけでなく、インフラの基礎知識も解説した、まさにこれから学びたいプログラマのための本です。
著者の中井さんは外資系ベンダーでLinuxエンジニアとして仕事をしたあと、Linuxディストリビューターのエバンジェリストを経て、現在はGoogle CloudのSolutions Architectとして活動されています。また、阿佐さんは金融系シンクタンクなどで銀行・証券向け、製造業向けのインフラエンジニアを経験されたあと、記事や技術書を執筆されながら約8年間の専業主婦を経て、今はTIS株式会社のR&D部門である戦略技術センターで、広報や人事などをされています。
まず最初に、本書を執筆するに至った経緯について教えていただけますか?
中井:昨年の夏頃にGCPの仕事に関わり始めて、まず感じたのは「GCPの世界観を伝える、わかりやすくて実用的な入門書が欲しい!」ということでした。
GCPには、Google自身が社内で活用しているアプリケーション開発者向けのクラウド基盤を一般のデベロッパーにも開放するという思想があり、GCPを通して最新のインフラ技術を学べるという、とてもおもしろい特徴があります。
ただ、その一方で、初心者には敷居が高く感じられることもあるようでした。そこで、初心者向けのわかりやすい解説に定評のある阿佐さんに相談させていただいたところ、「技術を根本から理解して使いこなす面白さや喜びをより多くのエンジニアの方に伝えたい」という点で深く共感していただき、本書の執筆に取り組むことになりました。
――どんな目標や課題を持っている方を対象にした本でしょうか。
阿佐:本書はGCPを利用したことのないプログラマを対象にしています。GCPに限らずクラウドサービスを利用することは、これからのエンジニアの必須スキルといっても過言ではないと思います。
特に、これからコンテナ技術を使ったマイクロサービス型のアプリケーション開発を行いたい場合や、機械学習を使ったアプリケーション開発を行いたい場合は、GCPは最適なクラウドだと考えています。
中井:GCPは、Googleのアプリケーション開発者がリアルに活用するインフラ技術をクラウドサービスとして提供するものです。クラウドを活用したアプリケーションのアーキテクチャーを知るには、最高の教材と言えるでしょう。
伝統的な仮想マシンを用いた実行環境から始まり、コンテナ技術の活用やAPIサービスとの連携など、GCPを活用して、クラウドを前提としたアプリケーション開発に取り組みたいという方にお勧めしたい内容です。もちろん、Googleのインフラ技術を知りたいというインフラエンジニアの方にも楽しんでいただけると思います。
知識のフルスタックエンジニアを目指す
――本書の狙いはどういったところにあるのでしょうか。特にタイトルの「プログラマのための」について教えていただけますか?
阿佐:クラウドを利用したアプリケーション開発では、プログラマからみるとインフラレイヤーが抽象化されるため、どのような技術が使われているかを知る機会が減ります。しかし、システム全体を俯瞰してみると、決してインフラが消えてなくなったわけではなく、裏では高度な技術によって支えられているプラットフォームがクラウドベンダーによって提供されているわけです。
これらの基本的なしくみを知らずにアプリケーション開発を行うと、インフラリソースを考慮した効率のよい実装やアーキテクチャー選定ができない場合も考えられます。
ただし、アプリケーションエンジニアは、あくまでも対象となるビジネスやサービスを提供するためのアプリケーションの実装に注力すべきで、インフラの構築や運用に実工数を割くべきではないと考えています。そのため、最低限知っておきたいインフラ技術の基礎知識を、クラウドサービスを通して効率よく学べるように、ポイントとなる部分をまとめたものが本書になります。
中井:「フルスタックエンジニア」や「DevOps」など、インフラエンジニア、アプリケーション開発者、そして、運用担当者の役割分担や協力体制に関わる話題がよく取り上げられるようになりました。GCPのクラウド環境には、スケーラブルで高負荷にも耐えうるアプリケーションを開発するためのツールやミドルウェアが整備されており、アプリケーション開発者はインフラの整備や運用に煩わされず、本来の役割であるプログラミング(コード開発)に集中して取り組むことができます。
しかしながら、アプリケーション全体のアーキテクチャーを正しく設計するには、その背後にあるインフラの仕組みを理解することがなによりも重要です。本書では、アプリケーションの特性に応じて、最適なアーキテクチャーを実現するための基礎知識を提供することに主眼を置いており、インフラエンジニアだけではなく、アプリケーション開発者の方にも広く役立てていだける書籍になっています。
クラウドの活用がますます広がる中、ITエンジニアの方々には、ぜひ「知識範囲としてのフルスタック」を目指していただきたいと考えています。
――では、本書の内容について教えてください。また、読者は読み終わったあとどういうことができるようになるのでしょうか。
阿佐:GCPを使ったアプリケーション実行基盤の構築ができるようになります。
本書はGCPの主要サービスである仮想マシンサービス(Google Compute Engine)、コンテナインフラのフルマネージドサービス(Google Container Engine)、そしてPaaSサービス(Google App Engine)を中心に、これらのサービスの背景となる基礎技術の説明から始まり、それぞれのサービスの説明、そして各サービスを使ったアプリケーション実行環境の構築手順という流れで解説が進みます。
特にクラウドサービスを使いこなすうえでは、「サービスをどう組み合わせるか」というアーキテクチャーが重要です。基本的なクラウドデザインパターンにもとづき、オーソドックスな構成を例に、実際に手を動かしてシステムを構築する流れを理解できる、というのが本書の大きな特徴です。
また、第5章では、機械学習を使ったアプリケーション開発にも触れています。これからビジネスのシーンで機械学習を活用したアプリケーション開発ができるようにステップアップしたいというエンジニアの方には、良いきっかけになるのではないかと思います。
GCPはYouTubeの基盤と同じものが利用できるサービス
――GCP自体についてもうかがいます。その強みはどんなところでしょうか。また、どんなサービスに適しているとお考えですか?
阿佐:私が考えるGCPの最大の強みは「自社サービスを下支えするプラットフォーム」であることです。初めてGCPを使う方には、「GCPはYouTubeの基盤と同じものが利用できるサービス」と説明しています。
そのため、自社のビジネスにフィットするシステムを自ら開発したいと考えている企業、具体的に言うと高度なデータ分析・活用をビシネスの意思決定に組み込んだデジタル企業へ変革したいという企業にとっては、GCPは最適なクラウドサービスではないかと考えています。
中井:ずばり、本書の「はじめに」を引用させてください。
既存技術の枠組みを脱して、新たな技術や方法論を取り入れた次世代システムへの変革に挑戦したいと願うユーザーにとって、Google Cloud Platformは、最適なクラウドサービスと言えるでしょう。そこには、「最先端の技術を活用して、時代に即した変化に強いシステムを開発したい!」と願うプログラマにとって、大きなチャンスが広がっているのです。
また、ユーザーコミュニティや各種イベントで、GCPに関わるインフラ技術を解説させていただくことがあります。その大半は、わりと硬派な技術解説のセッションなのですが、それでも多くの方から「とてもおもしろい」という感想をいただきます。技術の本質を根本から学ぶことは、エンジニアにとって純粋におもしろいもので、GCPにはまさに根本から学ぶに値する技術が詰まっているということをいつも実感しています。
ハイレベルなエンジニアが数多くいるGCPコミュニティ
――2016年11月にGCPの東京リージョンがオープンされました。国内での利用者やコミュニティの様子、情報共有の状況はいかがでしょうか。また、今後取り組んでいきたいことがあれば教えていただけますか?
阿佐:GCPには「GCPUG」というユーザーコミュニティがありますが、技術的にスキルの高いエンジニアが多く、日々Slackなどで活発な情報交換が行われています。
下記の動画は、中井さんがApp Engineの勉強会である「appengine ja night」で、スケーラブルなNoSQLサービスであるCloud Datastoreの内部仕様について、約1時間にわたり技術的なセッションをされたときのものです。
中井さんの登壇は2:22:02頃から
この動画のような本質的な技術要素を気軽に学ぶことができるのも、ハイレベルなエンジニアが数多くいるGCPのコミュニティならではの大きな特徴です。このほかにも、大規模なオンラインゲームでのGCPの導入事例や、機械学習を使った最先端のシステム導入事例など、技術的に興味深い内容が数多く発信されていますので、コミュニティ主催の勉強会やカンファレンスなどに参加されることをお勧めします。
中井:本書でも触れているように、GCPの歴史は2008年に公開された独自のPaaSプラットフォームであるGoogle App Engine(GAE)から始まりました。アプリケーション実行環境の構築・メンテナンスが自動化されており、利用者はアプリケーションの開発に専念することができるというメリットがあります。とりわけ、Snapchatなど、高いスケーラビリティを必要とする世界規模のWebサービスプラットフォームとしての活用が主流でした。
その後、より汎用的なIaaSプラットフォームであるGoogle Compute Engine(GCE)の提供が開始され、さらには国内リージョンがオープンしたことで、Webサービス企業に限らない、一般企業からの注目度が圧倒的に高まったのは間違いありません。おもしろいことに、実際にGCPの利用を始めた国内ユーザーの声を聞くと、GAEやGoogle Container Engine(GKE)、あるいは、機械学習サービスの活用など、GCPならではの活用方法に興味を持っていただくことが多いようです。
ユーザーコミュニティのイベントでも、こういった先進的な技術がテーマとしてよく取り上げられています。ただ、これもまた本書で触れていることですが、システムの特性に応じた適切なアーキテクチャーを選択することがなによりも大切ですので、幅広いユースケースに合わせた様々な活用法について、広く情報発信していきたいと考えています。
自分の力でどこまででも深く学べるように
――中井さんはエバンジェリストやアーキテクトとして活躍されており、阿佐さんは技術書の執筆など情報発信に力を入れていらっしゃいます。そこで、お二人の情報発信に対するこだわりを教えていただきたいです。
阿佐:私は、書籍を書くときは「3年後にも手に取ってもらえる本」になるよう心がけています。書籍は企画~執筆~刊行まで1年近くかかります。刊行後も1~2年は読者の皆様に読んでいただきたいと思っていますので、流行り廃りのない基礎的かつ普遍的なことを読者が俯瞰できるよう整理し、分かりやすい言葉と図で説明するようにしています。
また執筆するときは常に、対象読者を明確に想定して書いています。書籍は300ページ近くになりますので、何かしらの明確な軸がないと、粒度が揃わなかったり、難易度がばらついたりして品質の確保が難しくなります。そのため対象読者に確実に届くように言葉や表現を選んで書く、ということにこだわっています。
中井:ITの世界では、次々に新しい技術が登場して、どうやって勉強すればよいのかわからないという声を聞くこともあります。ですが、なによりも大切なのは技術の背後にある思想、すなわち「何のために生み出された技術なのか」という点にあります。
そこがわかれば、あとは自分の力でどこまででも深く学ぶことができるようになります。書籍やセミナーでの情報発信では常に、その技術の背後にある思想、そして、その技術を根本から理解するための手がかりをお伝えできるようにと心がけています。
――ありがとうございます。最後に、読者に一言いただけますか?
中井:本書はGCPを初めて利用する方を対象として、アプリケーションを効率的に開発・提供する「アプリケーションプラットフォーム」としてのGCPにフォーカスした内容になっています。一方、GCPには、大規模データを効率的に処理するデータ処理プラットフォームという側面もあります。本書を読破したあとは、次のステップとしてGCPのデータ処理機能を学んでいただくのもおもしろいかもしれません。
そして、またいつの日か、データ処理プラットフォームとしてのGCPを解説した書籍が提供できるよう、読者の皆さんの声援がいただけると幸いです。
阿佐:クラウドに限らず、IT技術の進歩は目覚ましく、今まさにありとあらゆるものがソフトウエアで動くというイノベーティブな時代に突入しています。そのような時代のまさに主役であるプログラマにとっては、チャレンジしがいのある世界が無限に広がる一方、学ぶべき領域が多岐にわたり、どのタイミングで何をどう学ぶかを見極めることが非常に重要になっています。
かくいう私も本書の執筆をきっかけに、GCPのプラットフォームを使って深層学習の勉強を始めました。これまで大規模基幹系業務システムの基盤構築しか実務経験がなく、まったくのゼロからのスタートでしたが、なんとかめげずに勉強を続けられています。まさに40歳を超えてからのスタートです。プログラマ定年説などという言葉も聞いたことがありますが、きっとそれは、学ぶことをやめてしまった人にだけ訪れるものだと信じています。
GCPは、コンテナを使ったアプリケーション実行基盤や機械学習を応用した先進的なアプリケーション開発などにチャレンジしたいプログラマに、ぜひお勧めしたいクラウドサービスです。読者の皆さんには、本書を通して手を動かしながら効率よく基本的なことを学んでいただき、なるべく早く次の新しいステージに進んでいただければ、とても嬉しく思います。