はきだめ

主にプログラミングに関することをかきます

ドワンゴのサマーインターンシップに行ってきました

はじめに

4週間続いたドワンゴでのインターンを先日終えました。参加したのは「プロダクト開発インターン」の「niconicoコース」です。せっかくなので感想を書こうと思います。

自己紹介(2017年9月地点)

今年の2月ぐらいにエンジニアバイト(長期インターン)を始めたのでRails歴は7ヶ月ぐらいです。それまではUnityでゲームを作ったりとかしてました。業務の内容は主にViewの修正だったり、エラーを直したり、SQLをちょこっと書いてたりしてました。

なぜドワンゴ

ドワンゴインターンに応募した理由は今のバイト先で同じような仕事しかさせてもらえず、新規サービスの企画や開発といったものに一切関わることが出来なかったからです。初めは新鮮だったのですが、徐々に不満が溜まっていき半年後には何か新しいことがしたいという思いが強くなっていきました。そのときにプロダクト開発インターンの募集要項に「機能開発に挑戦するインターン」「ユーザー向けに公開されるチャンスもある」と書いてあったので、「これなら自分がやりたいことが出来そう!!」と思い応募しました。他にも今働いているバイト先が規模が小さい会社なので、規模が大きな会社の雰囲気が知りたかったことと、ニコニコ動画とかが好きで前からドワンゴってどんな会社なのか興味があったからです。まとめると以下の3点が主な理由です。

  • 普段の業務ではやれないような新しいことがしたい
  • 大きな会社の雰囲気を知りたい
  • 純粋にドワンゴに興味があった
やったこ

参加者同士でチーム(2人で1チーム)を組んで、ドワンゴが運営するマストドンインスタンス「friends.nico」の機能開発に挑戦しました。どのチームがどんな機能を企画し開発したかということはそのうちdwangoのエンジニアブロマガにて掲載されると思うので、詳しくはそちらを見てください。

「良い」機能を作ることの難しさ

恐らくここがインターンで学んだ一番大きい部分だと思います。最初の案出しのときには沢山の案が浮かんでいたのですが、

  • その機能が本当にユーザーが感じている不満の原因を解決できるものなのか?
  • その機能が実装されてどうなってほしいか?
  • その機能が実装された前と後ではユーザーの行動はどう変わるだろうか

といったところまで考えたときに自分の案はユーザーの不満を捉えられていない。ユーザーの一部の層にしか着目していないという指摘受けました。このインターンに来るまでは「今無くてあったら便利そうなものを作ればいいのでは」ぐらいの考えでいたので新しくサービス、機能を作ることへの考えが大きく変わりました。4週間あるうちの最初の週はずっと企画を練っていたのですが、レビューの場で発表出来るような企画はかなり絞られました。最終的にはなんとか企画を通して、リリースさせて頂けるようになりましたがやはり新機能を企画して実装をするということは難しさを改めて感じました。社員さんやプロヂューサーの方々には

  • 実装は出来るだけシンプルにすべき
  • リーンキャンバスを作るといい

といったアドバイスなどを沢山貰いました。技術的なことだけじゃなくて、機能を開発する上での考え方やコツなどを色々教わることが出来たのは本当にいい経験だったと思います。

技術的なこと

技術的なことを言うと、自分の実力不足だと感じた場面が多々ありました。2人で1チームだったので僕のチームではサーバーサイドとクライアントサイドで役割分担をして自分は主にサーバーサイド側の処理を担当しました。(React+Reduxが全然分からなかったのでクライアントサイドは出来そうにありませんでした...。)具体的にはテーブル作ったり、APIを生やしたり、設定画面作ったり、テストを書いたりなどをしてました。
機能の内容的にサーバーサイドよりもクライアントサイドの方がやることが多かったのですが、自分の実力不足で結局大変な部分を全て相方に任せてしまったので、申し訳ない気持ちで一杯でした。このインターンに来るまではWebPackの存在を知らなかったので、初めてマストドンのコードを見たときは「app/assetsが無い!?これ本当にRailsで作ったの...」「変数宣言がvarじゃなくて全部constになってる...」と困惑したことを覚えています。バイトではCoffeeScriptを触っていたためそこまでフロントエンドに自信が無かったわけではありませんが、今回のインターンでは自分のフロントエンド技術に関する知見の無さを強く感じました。他にもSidekiqやRedis、Rspecなども触ったことが無かったため、色々と苦労をすることが多かったです。以下に今後自分がやりたいことです。

  • やりたいこと
    • React+Reduxで簡単なアプリを作る
    • Dockerについて勉強する
    • RedisとSidekiqを自分のサービスに組み込む

特にReactとReduxとは友達になれなかったので、今後自分でじっくり勉強していきたいと思います。

環境や待遇について
ランチが美味しい!

社員さんにオフィスの近くのうまいごはん屋さんの情報をドバっと教えてもらったんですが、そのお店がどこも本当に美味しかった!ときどき社員さんに連れていってもらってご馳走してもらったりもしました。また懇親会やリリースお疲れ様会ではピザやお寿司も出ました。全部美味しかったです。

f:id:kurome-stdio:20171001220817j:plain:w300

f:id:kurome-stdio:20171001220754j:plain:w300

f:id:kurome-stdio:20171001220839j:plain:w300

Slackが充実している

ドワンゴはSlackのチャンネルが多いことで有名ですが、本当になんでもありました。自分は#vim#unityチャンネルとかに入っていましたが、他にも炒飯をこよなく愛する人達が集まるチャンネルとかがあって本当に面白かったです。疲れたな〜って思ったときはSlackを見て癒やされてました。

さいごに

今まで新機能の企画や立ち上げに携わることが無かったので、貴重な体験をすることが出来たと思っています。特に自分のチームが考えた機能が実際にリリースされたときに「おーこれは便利」「捗るな」といった反応を貰えたことがすごく嬉しかったです。この経験を活かしてこれからも頑張っていきたいと思います。

【Rails】twitter gemを使ってタイムラインの表示&ツイートをする

先日、ずっと読み進めていたRailsチュートリアルを読み終えました。次は何をしようか考えていたところ、twitterというgemを使うと簡単にAPIを叩くことが出来るということを聞いたので、ずっと作りたいと思っていたオリジナルのtwitterクライアントを作ることにしました。とりあえず、タイムラインの表示、ツイート機能などは出来たみたいなのでメモしておきます。

Oauth認証

# gemfile
gem 'omniauth'
gem 'omniauth-twitter'
gem 'twitter'
gem 'settingslogic'
gem 'dotenv-rails', require: 'dotenv/rails-now'
gem 'honoka-rails'

上記のgemを入れてbundleインストールします。Railstwitterクライアントを作る上で上の3つは必須です。settingslogicは定数を一元管理、dotenvは環境変数を設定、honokaはいい感じにスタイルを当てるために入れました。

続きを読む

3Dアクションゲーム開発記

今回の内容は昔作った3Dアクションゲームの開発記です。先日1年ぶりにunityに触ったときに3Dの知識が吹っ飛んでいて苦労したので、またすぐに忘れないように開発の記録をさらっと自分用にまとめようと思います。

ちなみにそのゲームはこれです(宣伝)
https://unityroom.com/games/monster-island

以下の本を参考にしました

Unityゲーム開発 オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

ゲーム内のキャラクターのモデルとかアニメーションとかサウンドなどは本を買ったときについてきたものを使用しました。基本的には参考書に沿ってゲームを作った上で少し改造しました。

続きを読む

Unity本を読んだのでまとめる

Unity本を買いました。なかなかの良本だったので自分用に大事だと思ったところをまとめます。

変数の方について

  • 整数
    – short…符号付き16ビット整数
    – int…符号付き32ビット整数
    – long…符号付き64ビット整数

  • 実数
    – float…32ビット幅の値
    – double…64ビット幅の値

続きを読む

個人的なUnityはまりポイント

Unityをやってて自分がよくハマるところをまとめました。

シーンを遷移すると画面が暗くなる ver5.6

window→Lighting→Settings

f:id:kurome-stdio:20170504230449p:plain

Auto Generateのチェックを外して

f:id:kurome-stdio:20170504230630p:plain

Generate Lightingをクリック
※いじるのは遷移先のシーンのLightingの設定です。
何がムカつくってunityのversionが変わるたびにこのここらへんの名称とLightingの設定の場所が変わることなんですよね…。原因としてはautoだとシーンを遷移したときにライトが間に合わないから予め焚いておく必要があるみたいです(?)

続きを読む