SIerの新米プログラマがベテランと意思疎通できるようになる『クラウド超入門』、著者・阿佐さんに訊く|翔泳社の本

SIerの新米プログラマがベテランと意思疎通できるようになる『クラウド超入門』、著者・阿佐さんに訊く

2016/06/23 08:00

 翔泳社が6月16日に刊行した『Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門』は、利用が拡大しているクラウドサービスを、AWSをもとに学ぶ入門書です。基本的な用語すら分からない新人でも議事録を取れるようになるという本書について、著者でDocker好きの阿佐志保さんにうかがいました。

SIerに就職した入社1年目の新人が議事録を取れるようになる

――『Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門』は書籍名で読者が想定されていますが、具体的にはどういう方が当てはまりますか?

阿佐:AWSを使えるようにしたいけれど、情報が多くてどこから手をつけたらよいか分からない方を想定しています。そういう方がごく基本的なJavaによるWebシステムの実行環境構築を一人で作成できるようになる入門書です。

 より具体的には、「新米プログラマ」はSIerに就職した入社1年目の新人エンジニアのことです。業務システムの開発では業務知識が必要になりますが、大学では経済や経営を学び、入社した段階ではコンピュータサイエンスを専門に学んでこなかった方もいるかと思います。そのような人が一から技術を学ぶとき、どこから手をつけたらよいか分からない、先輩に質問したいけどどう聞けばよいか分からない、といった理由でつまずいていてしまう場合もあるのではないでしょうか。

 一方の、OJTを行なう先輩社員は、本当は手取り足取り若いエンジニアに教えたいと思っているのに、自身の業務で多忙なためなかなか時間が割けないというジレンマがあるのではと思います。それに、OJTを担当したエンジニアの中には、自分が勉強したてのころの記憶や気持ちをすっかり忘れてしまっている人もいるかもしれません。そのため、まったく悪気はなくても、新人エンジニアに対して「そんな簡単なことも分からないのか!」とつい怒ってしまい、職場での円滑なコミュニケーションを妨げてしまうのはとても残念です。

 そこで、若手エンジニアには本書を使って手を動かしながら独習をして、分からないところやつまずいたところだけをOJT担当のエンジニアに教わるようにすれば効率がいいかな、と考えて本書を執筆しました。

 本書を読んでいただければ、AWSを使った開発プロジェクトに配属された新人が、打ち合わせに出て議事録を取れるようになれるようになると思います。上司や先輩の言っていることがさっぱり分からないのでは、新人自身も辛くなり、プロジェクトに馴染むまでに時間がかかってしまうでしょう。ですので、AWSの詳細についてはまだまだこれから勉強する必要があるけれど、アーキテクチャの全体像はおおむね分かる、という状態をイメージしています。

 例えば「EC2の前にELBを置いてElastic IPを振ってRoute 53にレコード登録すればいいね。あと、ELBだけExternalからアクセスできるようVPCを構成して、RDSへのアクセスはEC2からのみのアクセスに絞ろうか」という雑談を新人エンジニアが聞いたときに、「はて? 何語?」と固まってしまうのではなく、さっとホワイトボードにシステム構成図を描けるようになってもらえればいいですね。

 ただ、業務システム開発では多くのプロジェクトで独自の開発フレームワークを使っているケースが多いと思います。そのため、プロジェクトごとにAWSのデザインパターンのようなものがあるはずです。本書はそこまでは踏み込んでいませんし、そもそもAWSの実践的なノウハウについては現場で学ぶのが一番です。なので、本書をとっかかりにして、AWSをどんどん使ってほしいなと思っています。

 また、大規模Webシステム開発案件ではさまざまな技術や言語が使われていますが、業務系システムに関してはJavaが多いのが現状です。そのため本書では、静的Webサーバの構築や、Servlet/JSPによるWebアプリケーション、EJBをDockerコンテナで動かすパターンなど、基本的にJavaをベースに構成しています。ここも、実は執筆ではかなり悩んだところで、「開発者の幅が広いPHPにしようか」「いや、Node.jsやRoR、Pythonなどかな……」と考えていましたが、やはり「業務系システムの開発に携わる人に読んでもらいたい!」と思い、Javaにしました。

プログラマも変化に強くなるためにインフラ基礎知識を学ぶ時代

――新人エンジニアのための入門書とのことですが、「プログラマ」がクラウドを学ぶ必要性やメリットはどういうものがありますか?

阿佐:クラウドファーストという言葉に代表されるように、クラウドありきという考え方でシステム開発を行なうケースが増えています。AWSは世界的にもっともメジャーなパブリッククラウドですが、コンシューマ向けシステムだけでなく、業務系システムでもAWSを使ってシステムを構築しようという流れが顕著になっています。すでに多くのミッションクリティカルシステムでの本番環境での稼働実績もありますので、今後の必須スキルの一つになるのではないでしょうか。

 昨年、『プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化』という業務アプリケーション開発者向けのDocker入門書を刊行させていただきました。Dockerのような仮想化技術を使うとインフラのレイヤーを抽象化できるため、従来はインフラ構築を専門に行なってきたインフラエンジニアだけでなく、業務アプリケーション開発者みずからがインフラ構築できるようになります。

 一方のインフラエンジニアの多くは、より少ない人数で大規模なインフラを構築/運用できるようさまざまな自動化ツールを使って、コードによる構成管理を行なうようになりました。DevOpsというキーワードが流行していますが、DevとOpsの両者の境は曖昧になりつつあります。

 そんな背景もあるため、若いエンジニアは「自分はアプリケーションエンジニアなのでプログラミングを極めるまで修行します。OSやネットワークは……」と敬遠してはいけません。自分で開発したWebアプリケーションを自分でサービスインさせられる技術を持っていたほうが、スピード感もあり、変化に強いエンジニアになれるのではと思います。

 本書は書名に「新米プログラマ」とありますが、AWSをアプリケーション開発でいかに使うかではなく、プログラマも知っておきたいインフラの基礎的な内容をまとめた書籍です。

――今回、AWSでDockerを利用していますが、その意図を教えてください。

阿佐:大規模システム開発案件において、既存システム更改や移行にかかる工数は大きなウエイトを占めます。ですが、新サービスの提供などと異なり、必ずしもシステム利用者に新しい価値を提供するわけでないため、なるべく省エネで進めたいところです。そのため、AWS固有のサービスに依存する実行環境ではなく、Dockerを使ってポータビリティを持たせておくことで、システム更改やAWS以外のクラウドサービスへの移行などにも比較的容易に対応できるようになります。

 また、私自身が特定の技術や言語に依存するシステムアーキテクチャを好きではないので、AWSに限らずほかのクラウドサービスへも将来的に移行できる形を取っておくほうがよいと考えています。AWSの入門書を書いておいてアレなんですが、私のスタンスは「要件によってはほかのクラウドで! Azureもとてもよいですよ!」という感じです(笑)。

 そもそもAWSを使いたい、Dockerを使いたいというのはシステム開発の目的ではありません。実現したいビジネス目的を果たすために、技術をどこでどのように使うかの見極めがとても大事だと思っています。

AWSの操作手順だけでなく関連技術や開発全体の流れを掴んでもらう

――本書ではどういうことを学ぶことができるのでしょうか。

阿佐:本書では手を動かしながら読み進んでもらえるよう、AWSの操作手順を詳細に記述しましたが、公式ドキュメントで詳述されているAWSの機能の前提となる基礎的な技術に関しては、別途学習が必要です。

 例えば、EC2のキーペアを作成する方法が説明されているとき、公開鍵暗号方式の仕組みが分かっている方はすんなり理解できます。しかし、そこが分からない方はいくらAWS上でのオペレーションを丁寧に説明してあったとしても、そもそも何のための設定なのかを理解するのが難しいと思います。本書では、AWSの操作手順に加えて、AWSを使ううえで知っておきたい技術要素も説明しています。

 ただし、AWSがフォローする技術領域は、アプリケーションの実装から仮想ネットワークまでと非常に幅広いため、ありとあらゆる情報をぎゅうぎゅうに詰め込みすぎると読みづらくなるので、基本となる代表的なサービスのみに絞って「ここだけは最低限知っておきたい」というところを説明するように工夫しました。AWSを使った開発の全体の流れが掴めるでしょう。

書いた本人も勉強になる書籍

――AWSにはサービスがたくさんあるので、どのように解説するかとても難しかったと想像します。最も苦労したのはどういうところでしょうか。

阿佐:本書はCodeZineでの連載「今さら聞けない! Amazon Web Servicesによるクラウド超入門」を流用したものですが、連載時と比べて内容がほとんど更新されていたので、検証も含めて想定したより多くの時間がかかりました。また、AWSのどのサービスを本書に収めるかを選ぶという点でも苦労しました。実際には、本書で取り上げていないサービスの検証にかなりの時間を使いましたね。AWS Lambda、Amazon API Gateway、ACM、Amazon Cognito、Amazon DynamoDB、AWS CodeCommitなどです。これらのサービスを検証したときのドキュメントについては、Qiitaなどで細々と情報発信していきたいと思います。

 もう一つ、本書ではAWSをGUIのWebマネジメントコンソールから操作する手順をメインで説明しています。しかし、私は普段AWSを使うとき、ほとんどAWS CLIを利用したコマンドラインで操作をしています。なので、「あれ……このコマンドオプションは……GUIではどの画面で設定するんだっけか?」といった地味すぎる苦労がありました。なにぶん、「黒いターミナルエミュレータでのコマンドラインこそ至高のユーザインターフェース!」と信じてやまない昭和のインフラエンジニアなので、私も本書を読みながらGUIのWebマネジメントコンソールの使い方についてしっかり勉強しようと考えています(笑)。「書いた本人も勉強になる書籍!」という、あってはならないカオスなことが起こっているという点で、ほかの書籍にはない次世代のスタイルを確立しているかなと思います(笑)。

 あと、AWSは豊富なサービスが提供されていますが、私には「推しサー」があります。推しサーとはAWSイチ推しサービスのことで、いま私が作った言葉です(笑)。本書を読んでいただければすぐに、私の推しサーが何かが分かると思いますが、推しサーの章だけが異常にボリューム感が出てしまい、ページを削減するのが大変でした。

いくつになっても自分の知らない技術を勉強するのはワクワクする

――前著『プログラマのためのDocker教科書』のインタビューがたいへん好評だったので、阿佐さんの仕事術にも興味のある方が多いと思います。

阿佐:筆者の苦労などは読者の方にとってまったく知ったことではないと思いますが(笑)、本書は家事育児の合間を使って毎日夜22時から深夜2時ぐらいにコツコツ書き進めていったものです。世の中にはいろんな主婦がいるもんだなぁ、と思いながら、ほのぼのした気持ちで読み進めていただければいいかなと思います。

 昨今、「女性が活躍できる社会を……」という機運が高まっていますが、結婚や出産でライフスタイルが変わりやすい女性が、男性同様に長時間バリバリ働くことが女性にとってもハッピーかといわれると、そうではないのかなと思っています。

 私はいま子育て中なので、10:00~15:00までしか働いていません。勤務時間に制約がある子育て主婦の場合、時給いくらという形で、働いた時間内にこなした、定型的な仕事の作業量に対価を支払う働き方が一般的です。ナレッジワーカーとして主婦を雇用して活用している企業は、ITベンチャー企業を中心に増えつつありますが、業務システムを数多く手がけるSIerではまだまだ少ないのが現状です。

 ですが、いまはブログなどで誰でも情報発信ができ、フィードバックも得られやすい時代です。ごく普通の主婦である私が、なぜ本を書いたのか、なぜSIerで働いているかについて、7月に開催される大規模なインフラ技術の勉強会「July Tech Festa 2016」でお話しさせていただく予定ですので、もし興味がある方がいればぜひお越しください。

July Tech Festa 2016
「IoTxAIxインフラ時代の最新技術、やってみたSP ― 俺の屍を越えて行け ―」

日時

2016年7月24日(日) 10:00~18:00

場所

東京都品川区東大井1-10-40
産業技術大学院大学(公立大学法人 首都大学東京)

July Tech Festa 2016 公式サイト

 勉強会当日はメイン会場の後ろの展示ブースにおりますので、お気軽に声をかけていただければと思います。本書を読んでいただき、私の二つのAWS推しサーを見事当てていただいた方には、素敵なボールペンを差し上げます(笑)。

――では最後に、これから学ぼうとする方に向けてアドバイスをいただけますか?

阿佐:アドバイスは特にありません。私自身の場合、新しい技術を学ぶときは「まず手を動かす」ということを心がけています。手を動かしてみて始めて、自分に足りない知識や、じっくり頭を使って考えなければいけないことはどこかなどが見えてくるタイプだからです。

 私がTwitterで「さぁこれからOpenFlow勉強するぞ!」とつぶやいたときは、もうすでに手元の環境でラーニングスイッチが動いているんだなぁ、と思っていただければ分かりやすいかなと思います(笑)。いくつになっても、自分の知らない技術を勉強するのはワクワクします

新米プログラマのためのクラウド超入門

Amazon   SEshop   その他

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門

著者:WINGSプロジェクト 阿佐志保
監修:山田祥寛
発売日:2016年6月16日(木)
価格:3,218円(税込)

本書について

本書では、クラウドに最適化されたアーキテクチャではなく、レガシーアーキテクチャを採用し、業務システムで広く使われているJavaによるWebシステムを構築する手順を紹介することで、AWSを初めて利用する人へのハードルを低くしています。