電電のブログ

電電生だったひとのぼやき

Voyage group の 1day インターンに行ってきました

f:id:denden_seven:20190519202249p:plain:w300



電電です.最近忙しいといいつつ,突然やる気が無になったりしてます.
基本的にやる気はあるんですけどね.月一くらいでやる気が無になってお布団と融合しちゃいます.

さて今日はvoyage groupさんの1day インターンに行ってきたのでどんな感じだったのか書いていきたいと思います.
前半は講義があって,後半はチームで開発して,発表という流れだったんですが,2時間強という短時間のチーム開発の割にかなり形になったものができたので楽しめました.


  1. なんで行こうと思ったか
  2. 参加するにあたって
  3. 1日の流れ
  4. 作ったもの
  5. 感想

1.なんで行こうと思ったか

前回の逆求人イベントでとてもありがたいことにvoyage groupさんからカジュアル面談しませんかとお便りがきていました.
サマーインターンでGoでサーバーサイドをすると紹介されてて,元から興味はあったのでせっかくですし,
色々聞いてみようかなと思って面談をお願いしました.それで,エンジニアの方や,人事の方とお話しさせていただいた中でこの1dayインターンがあると聞き,参加した形です.結構無理なスケジュールで入れてもらったと思います.ありがとうございます.

2.参加するにあたって

このイベントはサマーインターンの短縮版と聞いていたのでどんな感じなのか掴みたくて,参加しました.なのでがっつりgoを勉強したわけではなく,goの環境構築と
go-tour-jp.appspot.com
ぐらい触って参加しました(これだけでもしておいてよかった)
あと構築した,環境のバージョンが1.11.1だったんですけどgit においてあったもの動かすと1.12要求されて焦ったりしたので最新にして行きましょう

3.1日の流れ

結構忙しかったです
11:00 start
11:20~12:20 チュートリアル(Git, GitHub,今日触るアプリ)
12:30~13:15 お昼休憩
13:15~14:10 mission 1-1, 1-2
14:10~15:30 mission2-1, 2-2
15:30~18:00 mission3(チーム開発)
18:10~18:30 発表
18:30~18:50 振り返り
19:00~ 会社紹介+懇親会

みたいな感じでした.
結構さらっと書いてるんですけど初っ端からついて行くのしんどかったです.まあgithubについては特に,自分で作ってるだけだと自分のコード書き終えたらadd,pushするだけだし,日立の研究室でアルバイトしてた時も上司の方にもらったコードレビューは実際に1:1でもらってたせいで,チーム開発してこなかったのがひびきました.いcloneしてきてissue立てて,コード書いてadd,pushしてpull requ出して,issue閉じてみたいな流れがわかるまで???ってしてました.

で,あれよあれよとしている間にみんなgoの本体の方書き出してて結構辛かったですね.いただいた資料に結構詳しく書いてあって,後からでも追いつけたのはすごいありがたかったです.

んでmission 1で何をしたかっていうと,すでに作ってあるサーバーのシステムをダウンロードしてきて,自分の環境の中で動くかどうか確認したりしてました.
でこのサーバーがローカルのページにコメントが書いてあるページを表示してあるので,これに編集機能を付け足したり,削除機能をつけたりしてました.

まあ自分で作ってないものなので何が引数として要求されたかわからなくて結構こんがらがりました.あとgoの仕様になってるコロンの位置でエラー吐きまくってました.

mission 2ではその中で動くチャットボットの機能追加とかを行いました.ガチャって入力したら,一定の確率でSSレアとかノーマルをかえしてくれたりする機能とか,yahooの外部APIと連結させたりしました(僕は最後の方力尽きてました)
で一応mission 1,2を通して,講義的なことは終わりでした.goを触るの初めてだったのでついてくので精一杯でしたね.

mission 3でチーム開発になりました.
2時間強でさっきまで触っていたものをたたき台に何かサービスやアプリを作ろうというものでした.時間が短かったので結構焦りましたが,この日一番たのしかったです.チーム開発ってうまくハマるとこのスピード感で物作れるんだなとワクワクしてました.

作ったものは次の章で紹介します.時間が終わったら,各チームの発表を行いました.
みんないろんなバックグラウンド持ってて,画像認識をうまく使ってアプリに組み込もうとしてたチームがあったり,
しりとりをしてたチームとかもありました.

最後に振り返りの時間がありました.
これは結構いい時間でした.振り返りは具体的にその日個人として,そしてチームとしてよくできたと思うこと(K=Keep)とできなかったこと(P=Problem)を各自書き出して話し合うって時間でした.

そこでうちのチームでうまくできた部分とかできなかった部分とかを話し合っていました.

うちのチームでうまくできていたことは

  • スタートダッシュが早かった
  • 動くものを出すという意見が共有できていたこと
  • 最初に使用するパソコンを2台に限定することでプログラムのコンフリクトを一回も起こさずに実装できた
  • 2人2チームを作ることでペアプロのような形になり,片方が困ったことにすぐ対応できた.
  • チーム内でのコミュニケーションを多く摂ることで何が必要で何がいらないかをすぐ決めれた
  • スラックなどの情報共有が早かった

逆にできなかったことは

  • 自己紹介をしなかった
  • 自己紹介をしなかったために誰がどれを得意としているかがわからないままチーム分けしてしまった
  • DBを触っている時間がなかった(かなり力技で実装しました)
  • フロント周りを触る時間がなかった

らへんが挙げられました.
あんまり意識してなかったんですが,実際にアプリのコードを書くパソコンを2台に限定したことはかなり大きな決断でありながら一番有効だった気がします.みんなペアプロ初めてだったのにものすごいうまくハマりました.

ここら辺の反省会をみんなでして,お待ちかねの懇親会でピッザ食ってました.
懇親会は筋トレは座りっぱなしのエンジニアにとっていかに必要かみたいな話をずっとしてた気がします.(Voyage officeには懸垂機があるらしいです)

1日の流れはこんな感じでした.

4.作ったもの

うちのチームは4人で,最初の20分で何を作るかを決めたんですが,自己紹介もせずにいきなり何を作るか話し合ってました.みんなポンポン意見を言い合うことができて,作りたいものは『NGワード変換アプリ』にすぐ決まりました.

作るものは決まったので,役割分担しました.先ずはチャットボットの改造をするチームと,NGワードを収集するチームに別れました.この時,自己紹介してないせいで各自の技術的なバックグラウンドがあまりわかっておらずちょっともったいなかったかもしれないです.
で僕はチャットボットの改造の方を担当しました.結構このシステム周りの考えは競プロやってたおかげで早かった気がします.
ただ途中で数え上げの処理とか(pythonでいうlen)の時にgo特有のコードに困って「python3でかかせろ〜」とか言ってましたね.
でできたのがこちらのアプリになります.

f:id:denden_seven:20190519195306p:plain:w600
NGワード変換アプリ

このアプリは最近TwitterなどのSNSで炎上しがちな人たちを助けるためのアプリです.
投稿する前にチェックしたい言葉を入力するとbotがダメな言葉をxにして返してくれます.

写真でいうと
「fucking クソ野郎」が「xxxxing xx野郎」に変わってだいぶマイルドになっていますね(ほんまか?)
このように無意識に使っている汚い言葉を変換してくれます.英語とかあんまり知らないけど汚い言葉とかもあるので意外に使えるかもしれません.

見た目的にボットとユーザーで表示させる色を変える案とかもあったんですが,残り20分とかでフロントエンドを触りだしたので時間内には終わりませんでした.

ボットの仕様をあんまり考えてないせいでずっと同じ言葉を延々表示し続けるバグとか作っちゃって時間取られたのも勿体無かったです(僕がやってしまってた)

5.感想

楽しかったです.まあ前半の講義のところはついていくので必死だったのでちょっと辛かったんですが,後半のチーム戦のところはめっちゃ楽しかったですね.
チームみんなで動くものを作るっていう思いの元で何かを作るっていうのもよかったですし,すごいそれがハマった感じでした.よく考えたらチーム戦でもの作ったことは電電時代に飛行船競争した時にあるんですが,あの時よりも知識レベルが上がってるせいかより純粋に楽しめた気がします.

さて時間がそろそろやばいので終わります.今日はAtCoder初の~1999までのABCなので頑張ります.
ではさらば