最後にどんなこと書いてるのか他の人がインターンで何をやったかというところにフォーカスしていたので、自分は学生活動とチームのWeb開発の違いというところにフォーカスして書いていきました。denden-seven.hatenablog.comshinya-ml.hatenablog.comTreasureってなんぞやTreasureはVoyageGroupさんのWeb系インターンの名称です。学生の参加人数は30人ほどで、みんなそれぞれに実務経験者だったりNIPSに論文出してたり、それぞれの必殺技みたいな強みがあって結構おもしろかったです。え、なにこれおしゃんおしゃしゃん期間としては3週間あって、その中で前半は講義形式でインプットを行って後半に学んだことを使ってプロダクトをチームで開発するという形式でした。この前半の講義ではフロントからバックエンドとデータベースを扱っていて、1つのプロダクトを作るために必要な知識を限りのある時間に詰め込みましたっていう感じ。これまた講義の内容が濃すぎて毎日シェアハウスのメンバーと日が変わるまで復習したりしてました。LTの様子あと、vimmerを増やしたりしました。後半のチーム開発では5人ほどのチームを組んで約1週間の間にプロダクトを考えてデプロイするところまでやるというものでした。問題を解決するためにプロダクトを作るのでハードウェアを絡ませても面白かったと思うのですが、このインターンではたぶんウェブサービスを作ることを想定してそうだったりしたで、流石に自重しました。チーム開発する上でなにかと判断を迫られることが多そうだったので、とりあえず個人的な優先度決め。自分にとって新しいことができるようになる。チームへの貢献ただ、優先度1の技術獲得については別にフロントやってもサーバやっても新しいことを学ぶことになるので、フロントとかサーバとか考えずにチームが上手く回るように足りない部分を補うような動きをすることにしました。(チームはサーバサイドをやりたそうな人が多かったので、結果的にフロントをやることになりました。)具体的に自分がやったこととしては、Preact使ったフロント開発、Makefileのバグとりとか、自分が見つけた不具合をDBレベルでバリデーションかけたりといったことでした。最高にかっちょいいトップ画面。かっちょよくない???8,9割はフロント触っていたのでMaterialDesignのドキュメントを読みながらえっちらおっちら任意の実装を行うっていうことができるようになった(と思う)のですが、今振り返ってみるともう少しサーバ・DB周りを触る選択肢もあったと思います。当初の自分のスキルセットと開発期間ということや、フロントも余裕があるわけではなかったという結構大変な状況でしたし、難しい選択であったと言えるでしょう。TreasureにはWebに挑戦するために来たわけですし、メンターの方には相当な負担をかけることになりますが「技術獲得のためにOJT形式でサーバに1つAPIを生やしたいです!!!終電までお付き合いお願いします!!!!」とか言ってみるぐらいの挑戦はあってよかったと思います。(←ここ反省ポイント)お世話になったメンターさんと進捗の権化タワーロボットコンペティションとWeb開発の違い実は、このチーム開発が始まるまでは「ロボット開発はチームで結構やってきたし、まあなんとかなるやろ。(謎イキリ)」程度に考えてました。これが全く違うものだったんですよね。先に言っておくと、以下のことが違う点でした。最適化するべきことの違いロボットコンペティションの場合は技術獲得や政治を考えなければ、最適化するべきは大会の点数っていうことが明確になってるんですね。ソフトウェアはハードウェアと違って人件費以外ほぼかからないし、ロボカップやワールドロボットサミットのような知能ロボットの分野ではニューラルネットワークの実行時間が長いことが知られているから実行時間については数十秒程度でもいいよとか、Webと比べるとかなり緩く設定されてることがほとんどです。それに対して、Web開発はUX向上やサービスのコンセプトなど最適化するべき項目が多いように見えました。レビュー文化とコードをメンテナンスする文化の違いロボットコンペティションだと基本的にそれぞれの担当箇所のソースコードを書いてもレビューは無いし、書いたコードは1つの大会で使ったらもうそれ以降使われないことも多いんですよね。これらの理由としては、ROSの存在が大きいと思います(個人的な意見です)。Web業界の方に向けてROSについて少し話しておきましょう。ROSというのはロボット開発のためのミドルウェアのことです。簡単に言えば、ソフトウェアをレゴブロックのようにソフトウェア同士の通信の部分を規格化することができます(だいぶ噛み砕いてるけどマサカリ飛ばさないでね)。ROSに対応した画像認識のプログラムがあったとして、そのプログラムを全く読んでいない人でも、レゴブロックをつなぎ合わせるように自分のプログラムを繋げることができるようになります。Foo!!ROS最高!!こういったROSの特性から、一度書かれたコードは使おうと思えばブラックボックスとして利用可能になります。ハードウェア制御などなどと最低限実装するべきことが山ほどありますしこれを片手で数えられる程度の人数で2,3ヶ月で実装するとかはまあよくあります。既存の動くことが確認されているソフトウェアをソースコードのレベルで理解しようとする人は非常に少ないと思います。OK」とか返してくれそうな会社で、技術的に熱い話ができる人が多いような印象でした。これを自分の研究室でやったなら、たぶんタイムアウトするでしょう。技術的に強い人が多いN数が10ぐらいの自分の観測によると強い人が多かったです。強くあるための環境についての話インターンではWebが初めてだったということもあって技術的なインプットをたくさんもらいました。それよりもこのインターンではエンジニアとして強くなるために必要なことを教えてもらった気がします。先輩エンジニアの方のライブインタビューで、こんな解答がありました。先輩エンジニア「2人ぐらい、わざとチョイ足りないぐらいにしてる」これには衝撃を受けました。実は自分、前年度は10ヶ月の間に3つのロボットコンペと共同研究と卒業研究を行うという謎の多忙具合だったんですよね。新しいことに挑戦したい気持ちで手を上げ続けていたらどんどんタスクが増えていって、特に機械学習分野の基礎的な理解を十分に固めることができなくなっていたわけです。それを受けて、今年はじっくり機械学習の基礎であったり修論のサーベイを着実にやっていこうと思ってロボットコンペティションとかやってなかったんですよね。基礎から学び直すことは自分にとって必要なことだったし後悔はしていません。成長度合いとしてはやはり去年のほうが劇的でした。厳しい道になると思いますが、この秋はコンフォートゾーンの外側にいくために研究と並行して大会にもチャレンジしていきたいと思います。成長できる環境に自分を追い込んでいきましょう。最後にWeb系が初めてということもあって、本当に怒涛の日々でした。VG社での濃密な講義が終わってシェアハウスに戻っても、常に開発したり技術のことを話したり燻製したりと本当に技術漬けの3週間だったと思います。インターンが終わった今の自分を見てみると普通に人の形を保ってるし、もっと頑張れたんじゃないかとも考えられるんですが、毎日普通に2時ぐらいまで開発とか自習とかやってたし、それに加えてなんか風邪ひいていたりしたしで、「あれ?なんか結構自分、頑張れてたんちゃう?」って思う自分もいて、なんかもう分からんくなってきました。真面目なことを喋っておくと、メタ的な視点で常に自分がやっている作業がどんな位置づけで優先度はどの程度なのかということを考え続ける必要性を感じたりと、今後の課題が多く見えてきたので今後はそれをクリアしていきたいと思います。月別アーカイブはてなブログをはじめよう!kitchen_pyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。