エンジニア向けのQ&Aサイトである「teratail」( テラテイル、図1 )は、昨年4月のベータ版としての提供開始からわずか1年で会員数1万人を突破し、日々多くの質問が投稿され、活発にやりとりが行われています。今回、社会人として働き始めるエンジニア向けに、とくに初心者が気になる質問をピックアップし、同サービスを提供するレバレジーズの寺尾貢氏(メディア事業部 システムグループ リーダー、写真1 )と本橋佑介氏(teratail開発責任者でありgihyo.jpにて「聞いたら一生の宝、プログラミングの基礎の基礎 」の記事連載中、写真2 )に解説していただきました。
図1 エンジニア向けQ&Aサイト「teratail」
ルーキーエンジニアに必要なのは「質問力」
編集部: まず、teratailの開発の現状について教えてください。
本橋氏: サービスの提供開始から約1年が経過しましたが、引き続き新機能の開発を精力的に進めています。そうして追加した機能の中で、最近使われることが多くなってうれしいのはイベント関連のものです。単なるオンラインでの質問と回答のやりとりだけでなく、リアルの場で発生した質問をオンラインに持ってくるというのは、teratailでやってみたかったことの1つでした。そういった背景から追加したイベント関連の機能が徐々に使われ始めているのはうれしいですね。
編集部: 今回は、エンジニアとして働き始める、新社会人向けの企画なのですが、そのような方々に対してアドバイスはありますか。
本橋氏: これは以前から感じていますが、わからないことを徹底的に突き詰めることが重要だと思います。自分はどこがわからないのか、何がわからないのか、何をわかりたいのかを考える。そのうえで、どのように質問をすれば自分がほしい回答が得られるかを考える。そうして自分のわからないことを分解・整理して質問する能力を高めていかないと、思考のレベルは上がらないでしょうね。そこを最初に鍛えて、あとは質問する勇気を持つことが大切です。
写真1 メディア事業部 システムグループ リーダー 寺尾 貢氏
寺尾氏: それと、質問に対する回答をただ受け取るだけじゃなく、なぜその回答に至るのか、もう一度疑問を持つことも大事です。質問して回答をもらえれば、少なくとも質問したときの目的は達成できます。ただ、それで終わってしまうと同じところでつまずくことになりかねない。そうならないように、質問して回答をもらったときに少し突っ込んで考える。それによって知識の幅を広げることができれば、成長につながるのではないでしょうか。
編集部: teratailに投稿された質問に回答されることはありますか。
本橋氏: ありますね。自分が引っかかったポイントでほかの人も困っていると、やっぱり教えてあげたくなります。それと自分がわからないことへの質問にも回答します。意地でも調べて回答してやろうっていう(笑) 。
寺尾氏: うん、自分がわからないことは調べて回答しますね。
本橋氏: それと、困っていることが伝わってくる質問も回答したくなります。そういう人って、質問もていねいに書かれているので、答えてあげたいと思ってしまう。自分も昔はまわりの人たちに助けられたので、そのお返しをしなきゃいけないという気持ちです。
編集部: 寺尾さんはどういった質問に回答されましたか。
寺尾氏: ネットワーク系の自分もわからない質問を調べて回答したことがあります。レバレジーズの社内ネットワークも担当しているので、将来的に同じ問題が起こりそうだなという質問とかですね。実はネットワーク系の問題って、検索エンジンで調べても回答が見つからないことが多いんです。そのへんの情報を蓄積できればという、ちょっとあざとい考えもあったりします(笑) 。
最初は誰でも迷う!? 「sudo」の読み方
編集部: それでは、実際にteratailに投稿された質問とその回答を見つつ、お二人にお話を伺っていきたいと思います。実際にteratailに投稿される質問を見ていて、お二人が引っかかったものはありましたか。
寺尾氏: 読み方シリーズはやっぱり気になるよね。
本橋氏: その手の質問が投稿されると、めちゃくちゃ調べますね。
寺尾氏: たとえば、「 sudoの読み方 」( 図2 )っていう質問がありますが、いろんな読み方があるので。
図2 teratailに寄せられたsudoの読み方の質問。最も評価の高い回答は「スードゥー」だった
本橋氏: 読み方は難しいですよね。専門のWebサイトがあるくらいですし。この業界に入って一番違和感を覚えたのは「デービー(DB) 」です。おじいちゃんだと(笑) 。これはたぶん文化的なものなんでしょうけれど。あと「GIF」は「ギフ」と「ジフ」のどっちなんだ、とか。
寺尾氏: 正解はジフだよ。
本橋氏: でもギフって言っていません? どっかの国の人(笑) 。それと「Git」もギットなのか、ジットなのか。
寺尾氏: Gitはギットじゃない? って言ってて、全部逆だったらどうしよう(笑) 。
本橋氏: 「sudoの読み方」にはベストアンサーはついてないですね。ただ最も評価が高い回答はスードゥーです。
寺尾氏: まあスードゥーだよね。
本橋氏: そうですよね。スイッチユーザドゥーの略でしたっけ?
寺尾氏: うーん、「 Switch User」とも「SUbstitute user」とも言うみたい。たしかWebでも意見が分かれてた気がする。
エディタ? それともIDE?ソースコードは何で書くべきか
編集部: 定番の質問ですが「みなさんテキストエディタって何使ってます? 」も注目度が高いですね。
本橋氏: これは必ず盛り上がりますね。Vimか、Emacsか、それとも新勢力か。
編集部: ちなみにお二人は何を使っているんですか。
寺尾氏: 僕はずっとVimを使っています。昔は秀丸だったりPHPエディタだったりしましたが、一番楽なのがVimだったので。開発環境や言語に依存せずに使えますし、カスタマイズの幅も広い。当然マウスを使う必要はなく、すべてキーボードで操作できるため、スピードという面でもアドバンテージがあります。便利なプラグインも数多く公開されているので、これに慣れてしまうとなかなか乗り換えられなくなっちゃいますね。
写真2 teratail開発責任者 本橋 佑介氏
本橋氏: 僕は寺尾の弟子なのでVimを使っています。ただ、本当はIDE(Integrated Development Environment; 統合開発環境)を使うべきだろうなと。IDEを使っていないと、チーム内のコーディング規約を合わせるときやフレームワークを使うときにたいへんだったり、テストを回すときにサーバ側の知識がないと対応できなかったりするので、学習コストを考えればIDEのほうが絶対に良いだろうなとは思っています。
編集部: ちなみにteratailの開発では何というIDEを使っているんですか。
本橋氏: PhpStormです。ただ、僕だけVimです(笑) 。いや、僕も最初は使っていたんですが、スピードが出なかったんです。導入したときがちょうど修羅場だったこともあり、ごめんと言ってVimを使い続けています。PhpStormを使えという話なんですけど。
編集部: 指が慣れると、なかなか抜けられないですよね。
本橋氏: ただ、新人で言えば、たとえ大学でプログラミングを学んでいたとしても、就職したらその会社が使っている環境でプログラミングすることになると思うんです。そういうことを考えていくと、ちゃんとIDEを使うほうが良く、できれば業界的にスタンダードになっているものを選ぶと良いと思いますね。
ベテランエンジニアが教える正規表現を覚えるコツ
編集部: 見ていてすごい質問の仕方だなと思ったのが「『正規表現』とは結局なになのか? 」( 図3 )です。正規表現がさっぱりわからないという質問ですが、お二人はすんなり理解できましたか。
図3 teratailに寄せられた正規表現に関する質問
本橋氏: いっさいできなかったです。
寺尾氏: いっさい理解していないです(笑) 。いまだに長いのを見ると、拒否反応を起こしますね。
編集部: 正規表現の勉強はどのように進めるべきでしょうか。
寺尾氏: ひたすら書いてみる。たとえばメールアドレスの引っかけ方とか、一般的にこれが正しいというものがありますが、それを自分でもう1回考えて書いてみる。
本橋氏: 書くことと読んでみることですね。複数の条件がだーっと入ってくると、どういう順番でループしているのかわからなくなりますが、分解してから頭の中で回してみる。まず書いてみて、それを頭の中で回す。それを繰り返さないと、やっぱりレベルは上がっていかない。あとは本当に基礎の基礎をちゃんと勉強して、1つずつ理解を深めてステップアップしていくしかない。僕もいまだに難しいと思っています。
編集部: やっぱり正規表現を理解していないと、エンジニアとして厳しいですか。
本橋氏: 厳しいでしょうね。だから、鍛錬を繰り返してとにかく覚える。
編集部: 正規表現を覚えるコツはないんですか。
本橋氏: 寺尾さん、お願いします。僕はないです(笑) 。
寺尾氏: いきなり難しい内容にチャレンジしないことでしょうか。それをやってしまうと、完全に苦手意識が生まれると思うので。まず簡単な正規表現で基本的なしくみを覚えて、いろいろなパターンを書いてみる。何度も書いているとよく使うパターンが見えてくるので、それを軸にリファレンスなどを見ながら応用力をつけていく。ここまで来れば、記号の羅列にひるむことも少なくなると思います。
わからないことを楽しみ理解したことをアウトプットする
編集部: とくにエンジニアとして働き始めた人は、どうすれば1人前になれるのかというのは気になると思います。お二人がこの世界で食べていけるなと感じたのはいつでしたか。
寺尾氏: まだ、そう思ったことはないですね。
編集部: そうなんですか!?
寺尾氏: このまま何も勉強せずに10年経ったら、たぶん食えないだろうなと思うんです。だから、勉強を続けていけばどうにか続けられるんじゃないかというくらいの感覚です。
本橋氏: エンジニアになって、2~3年めのときですかね。寺尾を別にしたら、レバレジーズで1番だって言い張っていた時期があるんです。そのころは、エンジニアとしてやっていけると思っていました。そうして自信がついて、社外の勉強会などにも足を向けるようになったのですが、まあ打ちひしがれまして(笑) 。そこから慢心していたのを軌道修正して、さらにプログラミングだけでなく、考え方やチームの作り方といったところにも目を向けるなど、視野を広げるように努力しました。だから、これからエンジニアとして働き始める人には、絶対に狭いところだけを見ちゃいけないと伝えたいですね。世間は広いんだぞ、と。
編集部: 慢心してしまうと、そこで成長が止まってしまいますよね。
本橋氏: とくにエンジニアとして働き始めたばかりのころは、わからないことが普通だと思います。ただ、そこにとどまっても仕方がないので、わからないことをわかるようにする努力が求められる。そのとき、わからないことをちゃんとわからないと言えることと、わかるまでやること。それとエンジニアは1人で作業することが多いのですが、ほかの人との関わりをドンドン作っていくことも意識してほしいですね。
寺尾氏: 僕が伝えたいのは、わからないことを楽しんでほしいということ、それからアウトプットは大事だということです。わからないことがあるとくじけそうになりますが、それをパズルみたいな感じで捉えれば楽しんでできるし、解決したときの達成感も大きくなる。さらに、わかったことをアウトプットすれば自分の成長にもつながります。わかっているつもりでも、実際にアウトプットしようとすると実は理解していなかったことにも気づける。だからアウトプットは大事だと思っていますし、その中で楽しみながら学んでいくのが一番良いのかなと思います。
本橋氏: エンジニアって、100万人に使ってもらえるものを作れるかもしれない、そういったところが魅力なので、ぜひその幸せを実感してほしいですね。
編集部: 最後にteratailの今後について教えてください。
本橋氏: 現在、teratailはエンジニア向けQ&Aサイトとして運営していますが、これからは質問・回答といった単なるQ&Aだけにとどまらず、コミュニティとしての側面を強めてサービスの幅を広げていきたいと考えています。具体的には2軸で考えていて、1つは、わからないことをお互い教え合い、切磋琢磨し合える仲間と出会える場、つまり、横のつながりを作れる場としてteratailが利用されるようになりたいですね。また、2つめは寺子屋というか学校というか、教育的な側面です。新人や若手のエンジニアが先輩エンジニアの方々にわからないとこを聞いて、課題を解決して経験を積んでいく中でだんだん歴戦のエンジニアへと成長していく。そしてさらに、今度は彼らがそのまた次の世代の新人や若手たちの手助けをして育てていく、そんな正の連鎖が次々に起きていくような場としても成熟させていきたいです。日本中の頑張っているエンジニアが、teratail上での課題解決を通して世代問わずつながっていけるような、そんなサービスにしていきたいですね。
編集部: 本日はありがとうございました。