mixiのインターンにいってきた
9/2~9/30までmixiでインターンをしてきました.
すごく貴重な体験だったので,ブログに残しとこうと思います.
※いろいろと書いちゃいけないことも多そうなのでふんわりと.
今年のmixiのインターンは
あなたの好きな仕事をミクシィで経験できるインターンシップです。
ミクシィに飛び込み、"現場"を体験してみたい方のエントリーをお待ちしています。
ということで,IT企業の中で働いてみたいと考えていた僕は飛び込んでみました.
あと,せっかく上京するので比較的長くインターンできるのも理由でした.
インターンで応募可能な部署はたくさんありましたが,応募したのはたんぽぽグループ
「刺身の上にタンポポをのせる仕事」 のような単純作業の仕事から社内開発者を解放しよう、というミッションの元、たんぽぽグループは技術をベースとした様々な仕事や課題解決に携わります。
できる自信はありませんでしたが,どうせ行くならこういう所で修行させてもらおうと思って応募しました.
時系列で思ったこととかを書こうと思ったのですが,うまくまとまらないのでつらつらとトピックごとに書いていこうと思います.
まず思ったこと
イスがすごい
イスはすごく座り心地がよく,リクライニングも効いていて,そのリクライニング状態でちゃんと仕事ができるように,机もリクライニング(?)します.
理想の開発環境でした.
Macの偉大さ
Macしかまともに触ったことのない僕なのですが,最初の3日くらいは,準備のためにMacを使用して開発を行うことができませんでした.
mixiでは主にPerlを使用して開発を行っているのですが,僕はperlもちゃんと書いたことがなかったので,Window+Perlということで,初めてパソコンを触った人のようになっていました.
今振り返ると,VirtualBoxにUbuntuでも入れて,そこで環境構築,開発をすべきでした.(そのための仮想マシンですよね)
しかし,やっとMacが手に入ったときの嬉しさは,子供のころに初めてゲームボーイを買ってもらったときのそれと似ていました.
Perl
最近買った初めてのPerl 第6版の最初のほうにこんなコードがでてきます.
#!/usr/bin/perl @lines = 'perldoc -u -f atan2'; foreach (@lines){ s/\w<([^>]+)>/\U$1/g; print; }
実際に開発に参加させていただいたプロジェクトのコードにはこんなものはでてきませんでしたが,初めてコードを見たときはこのようなコードを見ている感覚になりました.(慣れって大切)
また,Perlには"class"というものはなく,Packageを使って書くのですが,理解するのに時間がかかりました.(あと,名前空間も)
しかし、1ヶ月たった今では、ちょっとだけPerlのことが好きになっています!
Emacs
今までエディタはCoda2を使っていました.(それで事足りていたのです)
会社から借りたMacには最初,SublimeText2をいれました.
しかし,周りのエンジニアの方々は Emacs or Vimでした.
2週目に社内の方とペアプログラミングする機会があったのですが,その方はVimを使っていました.その方の手にかかれば,Vimを終了することなく,ファイルが作成され,プログラムの実行まで終わっていました.
デスクに戻ると僕はSublimeText2をMacから削除しました.インターンが終わるまではEmacsかVimでがんばろうと決意した瞬間でした.(周りの影響もあり,Emacsにしました)
これで Emacs vs Vim 抗争に参加できるかもしれません.
キーボード
僕の隣の方は Happy Hacking キーボードをつかっていました(印字無し!)
後ろの方は Kinesis をつかっていました
Kinesis Advantage USB Contoured Keyboard 【キネシス コンタードキーボードアドバンテージ・黒】 KB500USB-blk
斜め後ろの方は 2つのキーボードを両手 でつかっていました(こんな感じ)
僕はHappy Hackingくらいなら使えそうかなぁと思いました.
テスト
今回のインターンで,初めてちゃんとしたテストを書きました.(テスト大事!)
SetupとかTeardownとか知ってはいましたし,ちょこっと書いたことはありましたが,
ちゃんと書いてみるとすごく大変でした.
どこまでを今のテストで保証すべきなのか
このテストは正しいのか
モックをどう使うか
出力のテストをどうするか
などの問題に直面して,すごく苦しみましたが,テストがちゃんと通ったときはとても嬉しかったです.
また,社内の勉強会で,テスト駆動開発について話を聞く機会があったのですが,アサートファーストで考えると,コードをよりキレイに,分かりやすく書くことができそうだと思いました.
また,テスト駆動開発入門を貸していただき,読むことができ,勉強できました.
テストを書くことを通じて,開発しているコードの全体像をざっくりとですが把握出来たと思います.
Github
mixiの一部のプロジェクトではGithub Enterpriseを使用しています.(これは多分言っても大丈夫)
今回のプロジェクトでPull Request型の開発を体験しました.
PullRequestをすると,Jenkinsおじさんがテストをしてくれます(プラグインを入れれば). Jenkinsおじさんは偉大だと思いました.
また,社員の方から,コードレビューを頂き,良くないコードを教えていただき,よりよいコードを書くことができました.コードレビュー大切.
自分のPull Requestがメインブランチにマージされると嬉しいです. 自分のPull Requestがメインブランチにマージされると嬉しいです.
また,GithubにPushする上で,コミットをキレイにしておくのは非常に大切だと思いました.
今まで,自分の人生でブランチを作りたいと常々思っていましたが,rebaseもできないかなと思いました.
多分, そんなサービス作ったら大金持ちになれると思います.
サーバ
後半はサーバでごにょごにょすることが増えたのですが,パスとかライブラリとかユーザとか,ちゃんとやんないと動かないことがあり,かなり心が折れそうになったりもしました.
パスが通っておらず,Jenkinsおじさんが真っ赤になり,失敗したビルドばかりが積み重なりました.
しかし,正しくパスを設定でき,Jenkinsおじさんが青色(僕にはこれが笑顔に見えました)になるとなんとも言えない喜びがありました.
サーバの構成はちゃんと考えないと死ぬ思いをするのだなと.
社員の方々
たんぽぽグループの方々は"開発者のために開発をしている"ことからもわかる通り,スーパーな方々ばかりです.
こんな方々に囲まれて仕事をすることは一生に一度できるかどうかの体験だと思います.
みなさんがプロフェッショナルで,プロとはどういうものかということを感じることができました.
自分がエンジニアとして働く上での,ひとつ大きな目標ができました.
これから,目標をもって,貪欲に(ちゃんと考えて)成長しなければなと思いました.
受け入れてくださった社員の皆さん,ありがとうございましたmm
最後、1ヶ月開発に加わったものを自分の手でリリースすることが出来ました! 楽しい!
ここには書ききれないこともいっぱいありましたが,すごく勉強になり,楽しい1ヶ月でした!