エンジニアのアウトプット方法はさまざま。勉強会で登壇したり、技術系ブログを書いたり、皆それぞれに合うやり方で、自らの知識や技術を発信しています。
今回は、今年(2016年)1月に共著『フロントエンドエンジニアのための現在とこれからの必須知識』(マイナビ出版)を出版した株式会社LIGのエンジニア、菅原のびすけさんに取材。開発のかたわら、入社2年目で3冊という速いペースで書籍のリリースを続けるのびすけさんに、若手エンジニアが本を書くメリットを伺ったほか、本業と執筆をどう両立させているのか、気になる方法についても語っていただきました。
『フロントエンドエンジニアのための現在とこれからの必須知識』(マイナビ出版)
菅原 のびすけ(すがわら のびすけ)
1989年生まれ。岩手県立大学在籍時にITベンチャー企業の役員を務める。同大学院を卒業後、株式会社LIGにWebエンジニアとして入社し、Web制作に携わる。最近は特にIoT領域、インタラクティブな企画実装などに従事している。特技はわんこそば、趣味は雪合戦。
家賃0円クリエイターズシェアハウス第1期生、ジーズアカデミー第1期メンター、Milkcocoaエバンジェリスト、gihyo.jp特集「MilkcocoaでBaaSを体験!~バックエンドの仕組みと使い方~」、著書に今回紹介する『フロントエンドエンジニアのための現在とこれからの必須知識』、『JavaScriptでインタラクティブ3Dコンテンツを作ろう~Kinect+jThree+milkcocoaを使ってミクと踊る~』などがある。
- 1. あえて変化の速いフロントエンド領域で、中級者向けの内容に挑戦
- 2. バックエンドの素地を活かして、GitとHTTP/2について執筆
- 3. 若手エンジニアが本を書く4つのメリット
- 4. 開発しながら執筆?のびすけさんが辿り着いた両立法
- 5. 「イケてるエンジニア」になるための材料にしてほしい
1. あえて変化の速いフロントエンド領域で、中級者向けの内容に挑戦
─今回の書籍出版の経緯を伺えますか?
CTOの林が出版社にコネクションを持っていて、フロントエンド界隈の方たちと一緒に本を書くという話になりました。それで執筆者の社内募集があり、手を挙げました。
─以前にも2冊フロントエンドエンジニア向けの書籍を出版されていますよね。1冊目はWeb制作のスタンダードな手法をまとめた内容で、2冊目はJavaScriptでインタラクティブな3Dコンテンツを作るための解説書。今回の書籍の特徴は何ですか?
今回は、フロントエンドを始めて1、2年以上のエンジニアを対象に、開発の環境や手法、技術などのトレンドと最新情報について、体系的にまとめた内容になります。以前の2冊は主に初心者向けでしたが、今回はその一段上、中級者がターゲットです。
似たような切り口の本には、初心者向けのものが多いんですよね。jQueryをかじったことがあるとか、そうしたレベルの方に向けた内容のほうが、ニーズも高い。でも、今回はあえて中級者に向けたものだというのがポイントです。
─なぜ、そこを狙ったんですか?
コンセプトは、監修も務めた斉藤祐也さん達を中心に考えられたものですが、せっかく本を作るなら“今、価値のある情報をまとめよう”ということになったと聞いています。
ここ数年、フロントエンドの技術発展は加速していて、旬の技術も半年ほどで移り変わります。例えばフレームワークも、2014年頃にはAngularJSが流行っていましたが、15年頃にはReact.jsが脚光を浴びました。
そんなスピード感なので、Webメディアと比べて制作に時間がかかり、アップデートも難しい書籍では、フロントエンドのトレンドを抑えにくいという事情があります。でも、だからこそ今回は、そうした内容の書籍を作ることが必要だという結論になったそうです。
また、斉藤さんの他にも谷拓樹さんなど、エッジの効いたフロントエンドエンジニアの先輩方が共著者にいらっしゃることも、中級者以上を狙う決め手になっている気がします。
2. バックエンドの素地を活かして、GitとHTTP/2について執筆
─今回の書籍では計6名の方が執筆・編集されていて、その中でのびすけさんはGitとHTTP/2について書かれています。なぜ、それらのテーマを選ばれたんですか?
最近では、フロントエンドの領域が拡大して、バックエンドの領域にまで食い込んできていると思います。例えばNode.jsはサーバーサイドの言語ですが、JavaScriptの一種ですし、フロントエンドの開発でもほぼ必須になってきていますよね。
フロントエンドの人にもバックエンドの知識はある程度必要ですし、僕はもともとバックエンドのエンジニアです。ですから今回はフロントエンドのなかでもGitとHTTP/2という、どちらかというとシステム寄りのテーマを担当させていただくことになりました。
概念理解とコマンドで使ってもらうことにこだわった「Git」
─ それらについて執筆されるうえで、大切にされたことは何ですか?まずGitについては、概要から基本的な使い方、ホスティング環境などについて書かれていましたが…。
Gitについては、概念的な部分をきちんと抑えたいと考えていました。Gitは自転車みたいなもので、一度扱い方を感覚的にでも覚えてしまえば、その後は比較的使いやすくなります。しかし、どうしても最初が分かりにくい。
とりあえずコマンドを打って何かを動作させられたとしても、実際はそれがどういう仕組みになっているのか、理解できていない人も多いんですよね。だからできるだけその基本的な概念、例えばワーキングディレクトリとステージングエリア、Gitディレクトリについてをはじめ、図版などを織り交ぜて分かりやすく説明することを心がけました。
Gitについては、これまで勉強会をやってきているんですよ。そのたび、自分が理解できていない部分を整理してきました。今回の本では、それをまとめてアウトプットした形になります。
のびすけさんが主催者の1人を務めたGitHubのハンズオンイベント。こうした勉強会で準備した内容が、書籍執筆の材料になっている
─ なるほど。今回、Gitの基本的な使い方をコマンドベースで紹介してらっしゃいますよね?その理由を伺えますか?
僕個人として、フロントエンドエンジニアもコマンドを打てたほうが良い、と考えているからです。フロントエンドエンジニアのなかには普段、コマンドではなくGUIで作業している方が多いと思います。でも、結局GUIの裏側ではコマンドが走っているので、コマンドでの扱い方を覚えておいたほうが、さまざまな環境の違いに踊らされにくいです。
GUIツールは幾つもありますが、それらに左右されてかえって時間がかかってしまうケースも考えられます。コマンドを打ったほうが動作も速いですし、コマンドを理解していると、チームでの開発時やサーバーサイドのエンジニアに何かを尋ねたりする時にも、よりスムーズに運ぶようになるはずです。
コマンドを0から覚えるのと、GUIツールで0から覚えるのとでは、コスト的に大した差はない気がしています。だから、“せっかくならコマンドで覚えちゃおうよ”っていう気持ちもありますね。
「HTTP/1.1から2」への更新でフロントエンドに及ぶ影響にフォーカス
─HTTP/2についてはいかがですか?
今回、HTTP/1.1でのパフォーマンス改善法のおさらい、2登場によるフロントエンド開発の変化などについて書かせていただき、僕自身も非常に勉強になりました。執筆までもHTTP/2の概念はざっくり理解していて、実際に使ったりしていましたが、それが頭のなかですっきり整理されました。
伝えたいのは、HTTP/1.1が2になることによって、フロントエンドにも少なからず影響が及ぶんだということ。なかには「HTTPはプロトコルの話なので、フロントエンドには関係ない」と思っている方も多いはずですが、2の登場によってこれまで行ってきた最適化の方法が、変化していきます。
例えばHTTP/1.1では、複数のJavaScriptファイルを結合したり(File Contact)、複数画像を一枚にまとめて(CSS Sprite)ブラウザに読み込ませることで、ページロードのパフォーマンスを改善しています。しかしそうした方法は、HTTP/2では逆効果になる可能性も。本書にも書いている通り、“今、イケていると思っている方法が、HTTP/2になった途端バッドハックへと変化するリスク”をはらんでいるわけで
す。
─その問題を、フロントエンド1~2年目のエンジニアの方は、認識されているものでしょうか?
はっきりは分からないですが、なかには認識されていない方も相当数にのぼるのではないかと思います。もちろん最前線を取り上げる専門誌や技術ブログでは紹介されていたりしますが、そうした記事を見ていない方も結構いらっしゃるはずですから。
3. 若手エンジニアが本を書く4つのメリット
─では、のびすけさんが考える、若手エンジニアが本を書くメリットをお答えください。
1.自分の頭が整理され、知識が広がる
全部で4つあります。まず勉強になることですね。文章で教えるために、担当のテーマについて技術的なことなど頭のなかの情報がきれいに整理されましたし、知識を深める必要がありました。過去に読んだ記事や本、勉強会で登壇した時の資料なんかに再度目を通したり、新しく色々なことを調べてみたり。周辺知識も手に入るので、ナレッジの幅も広がりました。
あとは、いわゆるイケてる熟練の先輩エンジニアの方たちと共同で執筆できたことも収穫でした。そうした方々がお持ちの豊富な知識、作業の進め方などにはつねに注目していましたし、そうした方々とのコネクションができたことは、確実なプラスになっていると感じています。
2.情報発信のチャネルが増える
出版社との接点ができたのは大きいですね。今後、大切な発信チャネルの1つになる可能性があります。僕は、コネクションとは今すぐ何かやらなくても、いざやりたいと思った時に活きてくるとても重要なものだと考えています。
エンジニア向けの技術書の編集では、出版社との原稿のやり取りや管理を、GitHubで行うことが一般的になってきています。今回も基本的にはMarkdown方式で原稿を記述し、GitHubにあげていきました。GitHubではバージョン管理ができるので、その時々で編集者からどういうコメントが入り、それに対して僕がどう対応をしたのかなど、履歴をスムーズにチェックできます。
ひと昔前までは、Wordの原稿を何度もメールでやり取りしていたので、ファイルの数が増えて、管理も振り返りも大変だったと聞いています。でも今では出版社側が、エンジニア側の文化に歩みよって来てくれているという印象を受けます。
3.エンジニアとしてのキャリアに箔が付く
あくまでイメージですが、僕は本を書くことによって、エンジニアとしてのキャリアに箔が付くと考えています。特に、僕たち若手エンジニアは紙の本よりWebをよく読むイメージを持たれるので、こういう話をすると不思議がられることもあります。しかし、僕が上京前に描いていた憧れのエンジニア像がしていることのなかには、書籍の執筆が含まれていました。
例えば、大きなカンファレンスで登壇したり、著名な技術系メディアに寄稿したり。その並びに技術書を書くことがありました。ミーハーかもしれないですが、そんなわけで本の出版は僕にとって理想のエンジニア像に近づくための大切なステップであり、ブランディング手段の1つです。
僕たちWebエンジニアにとって、Webよりコストも手間もかかるし、紙で形に残る書籍は、ある意味特別で贅沢な情報発信の方法なんだと思いますよ。
4.技術力、発信力の両方を培える
僕には、エンジニアは技術力と発信力を兼ね備えるべきだという持論があります。その理由は、技術は技術だけでは活きないから。エンジニアは獲得した技術を発信して誰かに使ってもらい、何かしらの課題解決に役立てて始めて、技術に価値を生むことができます。
ですから、エンジニアとしてインプットで技術力を高めていくことは不可欠ですが、アウトプットを続けることで発信力を培っていくことも大事です。書籍の執筆は、両方を磨く場として最適です。
僕が尊敬するエンジニアの方々、例えばJxckさんやNode.js 日本ユーザグループ代表の古川さん(DeNA)などはいずれも、技術力だけでなく発信力も高い。両方のバランスが取れた方ばかりです。
4. 開発しながら執筆?のびすけさんが辿り着いた両立法
─以前もお話いただいたように、のびすけさんは書籍だけでなく、LIGブログや技術系メディアへの寄稿など、さまざまな記事を書かれています。読者の皆さんは、本業の開発とそれらの執筆とをどのように両立させているのか、気になるところだと思います。コツはあるんでしょうか?
あります。僕は、開発をしながら記事を書いていることが多いですね。開発中に新しい発見があったり、課題が解決されたりした時には、メモ代わりに記事を書いてすぐQiitaなどに公開してしまうんです。
備忘録やネタ帳としても活用しているのびすけさんのQiita。多い時は1日2本ペースで記事を公開することもあるという
例えばエラーを解決したいけど、調べてもなかなか答えが見つからないことってありますよね。国内サイトには情報がほとんどなくて、英語圏のサイトやプログラミングのナレッジ共有サイトなんかに一部、解決策が載っていたりする。すると、おそらくそれは日本語リソースとしてまだ出てきていない情報なので、僕がまとめて国内に発信する価値が高いと判断できます。
今週もそんなふうに開発しながら、Qiitaに記事を3本アップしました。開発が一段落した時など、後でそれらをまとめてLIGブログに掲載したり、書籍執筆のネタに使ったりします。毎日少しずつでも良い、アウトプットを続けていくことがポイントだと思います。僕なりの効率的なやり方です。
─記事を書きながらだと、開発スピードは落ちますよね?
そうですね、一時的には。でも手戻りがなくなるので、結果的には工数圧縮につながります。以前は、色々調べて一度は解決しても、また同じところでつまずくことがよくありました。「前にどこのページで見たっけな?」なんていうこともしばしば。しかし、開発しながら記事にまとめて公開しておくことで、そうした事態を避けられるようになりました。
5. 「イケてるエンジニア」になるための材料にしてほしい
─次に出版するなら、どんな内容を書いてみたいですか?
IoT系ですね。昨年(2015年)9月からIoTのプロモーション支援などを行うDevRel事業の責任者になったので、その辺りの内容を書かせてもらえるのなら、がんがん取り組んでいきたいです。
色々な方にお話していることですが、僕はいつも“やりたいことをいかに仕事にするか”を念頭に置いて行動しています。また書籍を書かせてもらえるなら、それをきっかけに仕事の問い合わせが来るようなものに仕上げたいですね。
─最後に読者へひと言お願いします。
本書にも書いてある通り、“フロントエンドエンジニアに求められる一番重要なスキル/資質は、『変化に対して柔軟であり続けること』”。でも、フロントエンドをやり始めて間もない方は、次々新しいツールや単語が登場してきて、指標が分からなくなることがあると思うんですよね。
そんななかフロントエンドで今、何が流行っていて、今後どんな風になっていくのか、しっかり情報を抑えていく必要があります。この本には、そうした情報がすべてまとめられています。だからぜひ参考にして、興味が湧いた分野をどんどん調べていって、イケてるフロントエンドエンジニアになるための材料にしていただきたいですね。
ここ数年でJavaScriptがサーバーサイドでも動くようになり、今ではロボットをJavaScriptで作るJavaScript Roboticsという分野が注目を集めるようになっています。僕はフロントエンドがきっかけで、マイコンや小型コンピューターなどIoTのものづくりもできるようになってくると面白いんじゃないかと考えています。
フロントエンドエンジニアの将来はきっと明るい。その将来をしっかり照らす情報を、この一冊で手にいれていただきたいですね。