インターンシップへ行って学んだこと
PCを掃除していたら,インターン期間中のメモが出てきたのでここへ記録します.
私は,2017年の 8月17日 から 9月6日 まで モイ株式会社へインターンしてきました.
モイ株式会社は,ツイキャスを中心としたサービスを展開している会社です. 最近,LIVE配信サービスが乱立していますが,ツイキャスは2010年からサービスを提供してるいわば古参です. これだけ長く続いているものはとても珍しいと思います.UstreamはIBMに買収されちゃいましたからね.
インターンの概要
僕が参加したときのものなので,あくまで参考程度に読んで下さい.
まず,自己紹介をします.みなさん好きな言語などを紹介していてエンジニアだなぁと思いました.(僕はJavaScriptが好きと答えました.)
その後,ハッカソンがありました.「1日でツイキャスのAPIを利用した何かを作る」が課題で,僕はiOSアプリケーションを作成しました.
ここでの発表と制作物から判断され,チームが組まれました.
このまま3週間程度チーム開発です.(途中にツイキャスのサポートや歴史についてのお話もありました.)
最終日に成果発表して終了です.
インターンで学んだこと
他人が読んで分かるコードにしよう
自分しか見ないコードを書く時,ついつい面倒になって短い変数名や雑な処理方法を書いてしまいがちです.そのようなコードは,3ヶ月後自分が読んでも理解できなくなっています.コードを書く時は,常に読みやすいコード(他人が読んで分かるコード)を書きましょう.
この話を聞いたとき,「 O'Reilly Japan - リーダブルコード で読んだことと同じだ!」と思いました.
他人が読んでわからないコードは,いずれ自分も読めなくなってしまうということを実感しました.
言語,ライブラリの選定
例えば,自分が一つの言語/ライブラリ しか知らなかったとします.するとどうしても,それを用いたいという気持ちが生まれます.
他の言語を使う方が,より簡単, より早く, より分かりやすく なるかもしれません.
複数言語を知っていると,なぜその言語を使うのかと考えることができます.
ひとりのエンジニアとして
エンジニアとして正しくあるべきです.例えば,公平な選定をしましょう.
チーム開発時に 個人的な理由で,言語 / ライブラリ を選定し仲間に強要するのはダメです.
絵文字を用いることで表現がまろやかに
この話を聞いた時衝撃的でした.絵文字は,"ワカモノ" が使う謎のツールという認識が当時の僕にはあったからです.
チーム開発をしていく上で,コードのレビューなどのコミュニケーションは欠かせません.そこで,文章だけで連絡を取り合うとどうでしょうか? キツい言い方をされたと相手が受け取り,お互いが嫌な気持ちになってしまうかもしれません.絵文字があることによって,表現の幅が増えてまろやかに伝えることができます.👍
テストは大事
テストを書くことによって,意図した動作がされているのかの確認ができます.CIツールというものもあることを知りました.
テストを書くことはきれいなコードを書くことにもつながります.テストがしにくいコードは,煩雑なものであったりする場合が多いです.
余談として TDD というものも教えていただきました.
テスト駆動開発 - Wikipedia
タスク管理しよう
タスク管理することによって進捗を判断することができます.
期限が決まっているものの場合,進捗状況をみながら完成物の調整などをすることができます.
GitHub の使い方を知る
私は 高校のころからプログラミングをしていますが,このインターンに参加するまで ソースの管理はいつもフォルダ分けしていました.
普段のプログラミングは1人で行っていて,誰かに見せるコードも無かったためこのようにしていました.
GitHubというサービスの存在は知っていて,ソース管理ができるということまで理解していました.しかし,コマンドがなかなか覚えられない / 自分のコードを他人に見せる必要が無いと思い利用していませんでした.インターンに参加するまで,git add .
, git commit
と git push
ぐらいのコマンドしか知りませんでした.
インターンでは,チームで開発を行っていました.そのため,コードの共有やレビューが発生します.GitHubの使い方 / Gitの使い方はインターン終了時には実務で使うには問題が無いレベルにまで成長することができました.
クレーマー = 怒っている人ではない
クレーマーというと一般的に怒っている人という印象を持ってしまいがちですが,全員怒っている人というわけではありません.
利用していて何か問題があるから伝えに来ています. その問題をまず把握することによって,解決の糸口を探していくことが大切だと理解しました.
ユーザーをよく見よう
ユーザーを見ることによって,そのサービスのどのあたりに価値があるのか 改めて知ることができます.
その価値を捨てること無く,サービスを提供し続けることができればとても良いことです.
低レイヤーを知る
低レイヤーを知っていることで,アプリケーションの作成をするときに役立ちます.
実際に動かそう
サーバーなど,どのような設定をすると自分の思った通りに動作するのかということを知るには,動かしてみるのが一番です.
仮想マシンなどを用いて実際に動かして設定してみると良いです.
実際に動かすことによってより理解が深まります.
このことは,どの分野においても言えることだと思います.私はネットワークを勉強する際,実際にサーバを借りてウェブサイトを作って理解しました.理論で何度も勉強するより,一度やってみると案外すぐに理解することができるかもしれません.
インターンへ参加することによって,実際の社会ではどのような手法で開発されているのか.何を考えてサービスが作られているのかを知ることができました.このインターンは僕の人生にとって,大きな影響を与えると思います.
ぜひ皆さんもインターンへ参加してみてください.
最後に,今ツイキャスでは誕生日キャンペーンやってるみたいです.ビーズクッション欲しい...