Code and Passion Take Me Anywhere

ITベンチャー3社のサマーインターンに参加してわかった! エンジニアインターンに行きたいなら身につけるべきスキル5選

time 2015/09/19

ITベンチャー3社のサマーインターンに参加してわかった! エンジニアインターンに行きたいなら身につけるべきスキル5選

ITエンジニアのインターンはいいですよ

いやー、ITベンチャーはいいですよ。
スキルも身につくし、転職も独立もできるからつぶしがきくし、最近はどこもオフィスが綺麗で仕事しやすいです。

今こそエンジニアは売り手市場、お給料も出るアルバイト的なインターンもたくさんあるんです!!
僕なんて1ヶ月で15万円弱稼げました!!!

別記事にしようと思いますが、企業と会うのにも逆求人イベントなんてものがあって、その気になればすぐにマッチングしてもらえます。
IT業界志望の就活生は、今のうちにITベンチャーでインターンして、お金もスキルもGETしちゃいましょう!

スキルも必要だけどね

でも「ベンチャー行くのにどんなスキル身につけておけばいいかわからないです」っていう人も多いかもしれません。
そこで僕がこの夏3社のITベンチャーインターンに参加して「これは絶対使えたほうがいい」って確信した言語・フレームワーク・ツールなどのスキルセット5つを教えちゃいます。

ちなみに僕が行った3社は全て、日本では知らない人はいないくらい有名な上場企業でした。
つまり、その分メンターのエンジニアさんのレベルもすっっごく高いので、それについていける最低限のスキルセットとして捉えてもらえるといいかと思います。

1. Unixコマンドとターミナル操作

まずWeb系のインターンならLinuxを触る機会が必ずあります(デザイナーとかじゃないかぎり)。

なぜなら多くの企業で使われているAWSのようなサーバーにはすべてLinuxがOSとして搭載されているからです。
そしてそれらはsshと呼ばれるターミナルからしか操作できません。
つまりcdやらlsやらsshといったUNIXコマンドを知っておかないと、「/dev/tmp以下にcurlしたtarボールを展開して」と指示された時動けなくなってしまいます。
よって最低限のUNIXコマンドを練習しておきましょう。
Windowsを使っている人はVMWare PlayerVagrantを使ってUbuntuやCent OSをインストールしていじって遊んでみるのが手っ取り早いです。

VagrantについてはdotinstallやQiitaの記事が参考になるかなと。

僕は今のインターンで、ターミナルからAWS上のソースコードを編集したりプログラムを操作しています。

手元によくLinuxコマンド集をおいておくのですが、初心者から上級者まで便利に使えているので買っておくべき一冊だと思います。

[改訂第4版] UNIXコマンドポケットリファレンス ビギナー編
石田 つばさ
技術評論社
売り上げランキング: 107,464

2. 非モダンエディタ

ターミナル上では様々な制約がつきます。
特にGUIベースのエディタが使えないというのは大きなハンデになるかもしれませんね。
ではどうやってターミナルでソースコードを編集するかというと、VimやEmacsと呼ばれる古いエディタ(非モダンエディタ)を使うのです。
自分はVimを使って2年ほどですが、はじめこそ癖があって使いにくいと思っていました。
しかしプラグインやパーソナライズが簡単にできるので、Sublime TextやEclipseのようなモダンなエディタだけでなく非モダンエディタも1つ使えるようになっておくと便利だと思います。
ちなみに自分はVimの設定ファイルも含めたソースファイルを、後述するGitHubで管理していて、インターネットさえつながればどんな環境でも1分でいつもと同じ環境にパーソナライズさせることができます。
dotinstallでvimemacsの使い方のレクチャーが受けられますよ。

3. Git & GitHub (バージョン管理)

バージョン管理とは、プログラムなどのファイルに『履歴を付けて』保存していく仕組みのことです。
この「履歴を付けて」というところが大事で、例えば、テキストファイル(あるいはwordファイル)に毎日メモをつけているとしましょう。

あなたはある日「洗剤を買う」とメモをしエディタを閉じました。
次の日またそれを開き、初日に書いたメモを消して「お菓子を買う」と上書きしたとます。
さらにその翌日、あなたは初日に何をメモしたか思い出せるでしょうか?

「いや、さすがに2日前なら誰でも思い出せるだろう」と思うでしょう。
確かにこの例だとメモは2行程度なので記憶を辿って書き直すことはできるでしょう。

しかしソースコードは時に数千、数万行にもなります。
そしてそれを毎日、1日に何度も変更しては保存することを繰り返していたら、ある日突然アプリが動かなくなり「あぁ、あの日のあの時間にファイルを戻したい!!!」と思った時に、果たして記憶を頼りに戻すことはできるでしょうか?
この時普通に上書き保存をしていたら、おそらく復活させることはできません。
なぜなら保存編集履歴が残らないからです。

そこで編集履歴を残す仕組みがGitなのです。
Gitは前述したターミナルからコマンドを使って操作をします。
いちおうGUIツールもありますが、個人的には理解の妨げやAWSで使えないなどの欠点があるのであまりおすすめしません。
大雑把に言うと「保存するコマンド」「履歴を見るコマンド」「作業内容を取消すコマンド」などなど。

さらにGitの仕組みを使ってチームメンバーでソースコードを共有するGitHubという仕組みもあります。
チーム開発をしているならほとんどの場合使われているでしょう。
僕の参加したいチームでもすべてGitやGitHubが使われていました。
だからあなたも
「masterからpullしてきてその後branch作って空commitしたら一旦pushしてpull request出して!」
という会話を聞いて、対処できるようにしておく必要があります。

もし上記の単語の詳細を知りたければdotinstallや「サルでも分かるGit入門」が分かりやすくておすすめです。

Git,GitHubは普段のレポートや研究成果物の管理でも使えるので身につけておいて損はないですよ。

Ruby on Rails

百花繚乱のWebフレームワークでもRuby on Railsはベンチャー界隈で圧倒的な存在感を持ってます。
Web系のインターンではほぼこれを目にしないところはないくらいよく使われています。

RailsはRuby製のWebフレームワークで、TwitterやCookpadのような多くのWebサービスがこのRailsを使って書かれています。
またAndroidやiOSのアプリがAPIサーバーと呼ばれるデータの送受信用サーバーとやり取りするのですが、そのAPIサーバーもよくRailsで書かれていたりします。
今のインターン先ではこのAPIサーバーにあるバグを直したりテストコードを書いたりしています(テストについては後述)。

Railsには独自のルールや仕様があり
「このファイルはここに置く」
という規則的なものから
「変数名をこうすると自動的に関数を生成してくれる」というような実装のルールまで様々です。

Railsを勉強しはじめるとこれらのルールを覚えるのが大変だという印象を受けるかもしません。
自分も受託したWebサイト制作で初めてRailsを使い、不慣れながらも一生懸命ドキュメントを調べたりして実装していきました。
今はdotinstallをはじめ、RailsTutorialRailsGuides、その他様々な学習サイトのまとめ記事が出ているので、以前よりは自習するのに良い環境だと言えるのではないでしょうか。

こちらも手元のに1冊ポケットリファレンスがあると開発がし易いですね、こちらはちょっと古いですが最新のRails4でもおおよその部分は適用可能です。

Ruby on Rails 3 ポケットリファレンス
山田 祥寛
技術評論社
売り上げランキング: 329,720

テストコード

学校で習った範囲だと、テストには触れないかもしれません。
しかし、実際のサービス作りではたくさんの人が開発をし、毎日何度もリリースすることも珍しくありません。
なので、いつのバージョンでも、あなたが作ったプログラムが、ちゃんと正しい値を返すように実装されているか常にチェックする仕組みが必要です。
これがテストなのです。

テストにも言語ごとにフレームワークがありますが、JavaのJUnitやRubyのRspecくらいを知っておくと良いと思います。
例えばRubyで足し算をする


def sum(a, b)
a + b
end

というコードに対するテストをRspecでは


it "should return the sum of 2 numbers" do
expect(sum(1, 2)).to be eq(3)
end

と書けます。
このテストコードを実行すると、sumが正しく実装されていればTrue、期待と違う答えを返したらエラーを返します。
RailsTutorialでRspecの使い方が出ているので、Rspecが出るところまでは進めるといいかも。
また実際の開発では人手でテストを毎回実行するのが面倒なので、CIと呼ばれるツールにすべて任せてしまうことが多いです。
CIについては割愛しますが、Circle CIやJenkinsといったところが有名なので、テストについて理解できてきたら調べてみるのもいいと思いますよ!

まとめ

以上、個人的に「インターンに行く前に最低限ここは知っておこう/やっておこう」というスキルセットでした。
大抵のものはdotinstallにあるっていう笑
正直会社に入って何かをする以前に、すっっっっっごいエンジニアさんの会話についていくのでさえある程度の知識が必要です。
コンテキストを理解できるよう、ITエンジニアを志そうと思った方は、まずはインターンに向けて上記5項目をもくもく自習しましょう。

このブログを書いている人

imaizume

imaizume

RubyとRでやっていく [詳細]


UA-44092231-5
Bitnami