[The Interview]エンジニア向けQAサイト「teratail」とは

第4回 若手エンジニア必読 teratail開発者が贈る! 一生役立つエンジニアの基礎

この記事を読むのに必要な時間:およそ 3 分

さまざまな疑問をすぐに質問できる,エンジニアとして働き始めたばかりの人にとって便利なサービスがteratail⁠テラテイル)です。エンジニア向けQ&Aサイトとしてすでに多くのユーザが集まっている同サービス上では,日々多くの質問と回答がやりとりされています。ここでは,teratailを運営しているレバレジーズのエンジニアであるメディア事業部 システムグループ リーダーの寺尾貢氏,そしてteratail開発責任者でありgihyo.jpにて「聞いたら一生の宝,プログラミングの基礎の基礎」の記事連載をしている本橋佑介氏に,teratailに寄せられた質問に回答していただきました。

エンジニア向けQ&Aサイト「teratail」

エンジニア向けQ&Aサイト「teratail」

※)
本橋氏のgihyo.jpの連載記事は,聞いたら一生の宝,プログラミングの基礎の基礎でご覧になれます。

開始1年弱で会員数1万人を突破したteratail

編集部:それでは,まずteratailの現状を伺えますか。

本橋氏:昨年4月にベータ版をリリースし,7月に本格的に提供を開始しました。ベータ版の提供から1年弱ですが,おかげさまで会員数が1万人を超え,それと同じタイミングで回答数も1万件に達しました。実際,単純に人が増えているだけでなく,teratailが活発になってきたなと感じています。また,ちゃんと質問する文化であるとか,そういったところも育ってきていて,使っていただいているユーザのレベルアップにもつながっているのかなという印象を持っています。

寺尾氏:僕自身はteratailの開発には直接携わっていないのですが,新卒採用の面接でteratailを知っているという学生も増えているので,若い層まで知名度は高まってきているなと実感しています。

編集部:盛り上がっていると感じるカテゴリはどういったものですか。

本橋氏:やっぱり初心者ものが盛り上がっています。回答者としても答えやすいんでしょうね。初心者のころって,⁠こんなの聞いてよいのかな?」と,質問することに躊躇してしまうことがあると思うんですけど,まずはどんどん聞いてみることが大切だと思います。初心者であっても,わからないことは思い切って発信していってほしいですね。

編集部:ちなみに本橋さんは,新人時代にどのようなことに苦労されましたか。

本橋氏:僕は社会人になってからプログラマになったのですが,一番始めに教えてもらったのが寺尾なんです。当時彼はすごく忙くて,わからないことを聞くのがまずたいへんでした。それと,正直に言うと全部わからないんですよ(笑)⁠一応コードは書けますが,何が正しいのかわからない。そのわからないことについて,どこがわからないのか,どうわからないのかを一旦整理して,一言で返してもらえるように質問するというのが苦労したところです。

編集部:寺尾さんは新人の質問で困ることはありますか。

寺尾氏:答え方に困ることはありますね。コードをこう書けばできるよって答えちゃうと,質問した人の成長につながらないじゃないですか。なので,答えは言わないようにすることをポリシーにしています。ただ,答えを言わない場合,その人のレベルに合わせて教えることを考えなければいけないので,そこは苦労しています。

データベースやフレームワークはどうやって選ぶ?

編集部:それでは実際にteratailに投稿された質問を見つつ,お二人に⁠これからエンジニアになる⁠という人たちに向けてのアドバイスをいただければと思います。

本橋氏:投稿された質問を見ていると,何を使えばよいのかっていうのは多いですね。言語だったりツールだったり。

寺尾氏:データベースに何を使うのか,というのも目立ちますね。

編集部:データベース系で言えば,最近はRDBMSだけでなくNoSQL系も広まってきていますね。これからエンジニアとして活躍するなら,やはりNoSQLも理解しておくべきでしょうか。

寺尾氏:知識としては必須になると思いますが,一方でRDBMSの中にNoSQLが組み込まれる動きも出てくるので,特定のプロダクトを覚えるよりはしくみ自体を学習しておいたほうがよいかな。

本橋氏:あとは,フレームワークの選定とかも目立っていますね。

編集部:JavaScriptのフレームワークは最近盛り上がっている印象ですね。ただ,数が増えてきたので,どれを使うべきか頭を悩ませているエンジニアも多い印象です。

寺尾氏:目立っているのはAngularJSとBackbone.js,Knockout.jsくらいかな。どれも特徴があるので,まずそれぞれのよいところをしっかり理解し,プロジェクトの目的に合わせて利用するべきだと思います。

本橋氏:そうですね。プログラミング言語やデータベース,フレームワークはあくまでも道具で,適切なものを選択できるようになることがエンジニアとして一番重要なので。

編集部:フレームワークといえばCakePHPの学習方法という質問が気になりました。

寺尾氏:フレームワークを学習するときは,過去に作ったことがあるもの,たとえばブログのシステムをそのフレームワークでもう一度作ってみるのが,一番全体を理解しやすいかな。

本橋氏:すでにあるものを作るのもよいですよね。

寺尾氏:そうそう。新しいものをいきなり作ろうとすると挫折するので。もちろん,作る前にリファレンスや書籍で勉強しなきゃいけないと思いますけど。

きれいなソースコードを書くための秘訣は?

編集部:この記述のjsをもっと簡潔にしたいです。図1という質問の回答は盛り上がっていて印象的でした。

図1 ⁠この記述のjsをもっと簡潔にしたいです。」という,コードレビュー型の質問

図1 「この記述のjsをもっと簡潔にしたいです。」という,コードレビュー型の質問

本橋氏:いわゆるコードレビューものですね。この質問で言えば,もう少し読みやすさに気を配ったほうがよいかな。それとHTMLのタグを直接書いてしまっているので,糸口がちょっと少ないかなと思います。パッと見たときに,⁠append」「join」ぐらいしか使っていないので。

編集部:確かに何がどこに入るのか,一目では把握できないですね。

本橋氏:もっといろんな書き方があることを知るには,やっぱり人のソースコードを読んだほうがよいと思いました。動くものを作れているので質問できる段階ではあると思いますが,リファレンスやほかのWebサイトのソースコードをガンガン読んでいけば,もっときれいなものがスッと出てくるのかなと。

エンジニアの性質として,きれいに書けたときや,すごく短くシンプルなコードになったとき,ドヤ顔をするんですね(笑)⁠僕がそういうタイプなんですけど。

寺尾氏:これ以上ないだろうっていうね。

本橋氏:そういうドヤポイントを作れるとよいのかな,と思います。一度作れるようになると,その快感から逃げるのが難しくなるので。それとこの質問でおもしろいのは,答えがないところですよね。みんながそれぞれ意見を言える。こういう使い方もありだなと思っています。

編集部:お二人も可読性やコードの美しさにはこだわられていますか。

寺尾氏:こだわりますね。あとで書き直したいと思うことも多々あります。職業としてやっている分,どうしてもスピード重視でコードを書かなきゃいけない部分があり,納期を守らなければならない。ただ,それでも気になって,書いたコードを書き直したくなる。これは趣味なのか,性格なのか。

本橋氏:僕の場合は見栄なんですよ。だから汚いソースコードを見られるのは,とても恥ずかしいんです。

寺尾氏:それはすごくわかる。恥ずかしいよね。

編集部:きれいなコードを書くには,どうすればよいのでしょうか。

寺尾氏:書き終わったあと,自分のコードを見直してみること。それで何のコードかが理解できれば,少なからずほかの人も多少わかるコードになっています。とはいえ,自分でも1年前に書いたソースコードを見ると,何だこれって思うことはありますが。

本橋氏:自分のレベルの低さにびっくりしますよね,去年の俺は何をやっているんだって。あと,先ほども言いましたが人のコードを読むことです。ただし,膨大な量のもの,どこから読めばよいのかわからないようなものは精神的にキツいので,たとえばjQueryやSublime Textのプラグインを読んで,少しずつ成功体験を積みながら勉強するのがよいと思います。

寺尾氏:僕は一度カーネルを読もうとして挫折していますね(笑)⁠OSの基幹なので,読むとすごい自信につながると思いますが,最初に読むべきものではないなと。本橋が言うように,プラグインとかはよいですね。

コメント

コメントの記入