インターンブログ3社目(ピクシブ株式会社)

はじめに

ピクシブ株式会社のインターンに参加してきました!
インターンシップの概要は、インターンエントリーページから引用するとこんな感じです。

本プログラムでは、インターン生で複数のチームをつくり、【実際に社内で取り組んでいる課題解決 / 新サービスの企画・実装】などを行ってもらいます。
インターンシップではありますが、企画して終わりではなく、ユーザーに向けてリリースし、結果をユーザーの入会率や開封率など、具体的な数字で振り返ります。
机上の空論ではなく、ビジネスの現場でサービスがどのようにユーザーに評価されるのか、是非このリアルを体験してください。

要約すると、「社員と同じように働く5日間!」という感じですかねー。
企画して終わりではなく、リリースして結果が見れるというのがこのインターンの特徴かと思います。
この記事では、その内容や感想を守秘義務を破らない範囲で書いていこうと思います。

きっかけ

ピクシブさんのインターンに参加したきっかけは、去年誰か(覚えてない...)がFaceBookで、めちゃくちゃ楽しかったと投稿していて、今年もやってないかなというので調べたのがきっかけです。

ssl.pixiv.net

あとは、エントリー方法にGithub選考があり、Githubのアカウント提出するだけでエントリーしたことになる素晴らしい方法があり、エントリーするコストが低くかったのが良かったです(とりあえずダメ元で出してみようと思えた)。
普段からGithub使ってる人はこういうのを活用できると、就活が楽にできるかもしれませんね。

初日

まず、最初に他のインターン生や5日間面倒を見てくれるメンターの方に、自己紹介プレゼンをしました。インターン生は総合職と技術職合わせて15人ほどいて、結構年齢がバラけていてで高校生~M1までいたのが意外でした。

課題

僕は、BOOTHというpixivと連携したネットショップが簡単に作れるサービスを開発しているチームに技術職インターンとして配属されました。

 

最初に今回のインターンで解決して欲しい課題の説明がありました。説明といっても、具体的なやり方の説明はなく、こういう課題があるからなんとかしてほしいという感じでした。


僕が担当した課題は「アイテム一覧画面にスキ数を表示できるようにして欲しい」というものでした。
詳しい説明をすると、BOOTHで出品されているアイテムをユーザが気に入った場合にはTwitterのファボやFaceBookのいいねのように「スキ!」することが出来ます。 アイテムがスキされている数はアイテム詳細ページに訪れると見ることが出来たのですが、アイテムが一覧表示されているページでは見ることが出来ませんでした。

f:id:i101340:20160905221932p:plain

アイテム一覧からスキされた数が見られるようになることで、アイテムに対する他のユーザの評価を見てアイテムに興味を持つようになるのではないかという仮説ものと課題に取り組んでいました。

成果

実装したもの

  • アイテム一覧にスキ数を表示
  • スキした時にスキ数を増やす処理
  • スキ数が0の時に0ではなく「スキ!」を表示
  • その他細かいところの調整

f:id:i101340:20160905221945p:plain

スキのボタンの位置などはデザイナーさんが全部やってくれました(ありがとうございました!!!)。

 

時間ギリギリ(アウト?)でなんとかデプロイすることができました。
実際に動いているサービスにデプロイするのは初めてで、自分が作った部分がサービス上で動いているのを見たときはかなりうれしかったです 。

booth.pm

技術的な話

スキ数を表示するのはそんなに難しくなくて、アイテムに紐付いているスキしたユーザの数をカウントするだけなので、一行書けば表示することができます。

 

しかし、今回はそんな簡単なことはなく、アイテム一覧のテンプレートがフラグメントキャッシュを使って最適化されてたんです。

qiita.com

そのせいで、単純にスキ数を表示したとしても、キャッシュの有効期限の間はスキ数が変化しないという問題がありました。

 

この問題を解決するために、JavaScriptのloadイベントで最新のスキ数をajaxで取得して、スキ数の表示を最新の物に非同期で書き換えるようにしました。
JSの知識不足で、これを実装するのにかなり時間がかかってしまいました(申し訳ありませんでした!!!)。

 

フラグメントキャッシュを使っている部分をいじってみて思ったのは、キャッシュを適応する部分は必要なところだけにして、今回のスキ数のように動的に変わる部分に影響がでないように設計したほうが今後色々変更がある時に楽そうだなということです。


キャッシュを利用してレンダリングを早くするのは結構ありそうだから、今回その辺を触れたのはよかったです。

終わってみて

5日間終わってみると本当にあっという間だったという印象です。
デプロイも出来たし、実際の業務に本当に近かったです。

Webエンジニアとして働くイメージがより強くなったし、自分が足りていないところも沢山見つかったので、とてもおすすめなインターンです。

 

最後に5日間面倒をみてくれたメンターの方々、ピクシブの皆さま本当にお世話になりました。5日間ありがとうございました!

インターンブログ2社目(Cygames)

はじめに

インターンブログ2社目は進撃のバハムートやグランブルーファンタジーで有名なCygamesさんのインターンです。内容は、5daysで業務体験するというものでした。残念ながら何の開発をしたか等の詳しい情報は守秘義務があるので言えないのですが、学んだこと感じたことを中心にまとめようと思います。

まず最初に、ゲーム業界は情報漏洩にとても厳しいという事を学びました。

 

きっかけ

Cygamesさんのインターンに参加したきっかけは、「ゲーム業界について知りたいなー」と思い「じゃあ、インターンに行こう!」と色々調べていたら、リクナビの人気インターンにCygamesさんのインターンがあり即応募した事がきっかけです。

recruit.cygames.co.jp

 

前日まで

 一応Unityを使うという事は事前に連絡されていました。事前準備として、Unityマニュアルを一通り読んで簡単なチュートリアルをやりました。Unity自体はそんなに難しくなくチュートリアルはスムーズに進める事ができました。

 

当日

1日目

初日は、業務ではなくUnityについての座学がありました。内容は2D Platformerというアセットの改良を10個の課題に分けて行うというものでした。
これは個人で時間内に出来るだけ取り組むというものでした。自分は7課題できたんですが、インターン生の中では何故か出来ている方でした(笑)

 

2D Platformer

 

課題が一区切りついた頃にランチに連れて行ってもらいました。初日のランチは、懇親会も兼ねて、高そうなフレンチ(多分?)レストランでお食事を楽しみました。写真がないのが残念ですが、めちゃくちゃ美味しかったです。

 

午後からは、Cygamesの社内見学があり、実際に作業しているフロアを見学させてもらいました。どのフロアも活気があって良い雰囲気でした。

見学の中でも一番驚いたのはデザイナーフロアでした。デザイナーフロアは電気が点いておらず、暗い中デスクの周りだけぼんやりと光っているという異様な雰囲気でした。そうしている理由は、蛍光灯の反射でペンタブが見づらくなってしまうからだったと思います。流石プロ意識高い!!!そんなデザイナーフロアには壁一面に様々な声優さんのサインが飾られていて、「Cygamesスゲー!!!」ってなりましたね(笑)。

 

社内見学が終わると、社員さんとの座談会がありました。そこでは、会社の雰囲気や、実際の業務の事、Cygamesに入った理由など色んな事を聞きました。そこで感じたのは、Cygamesの社員さんは皆ゲームが好きで、ゲーム好きが集まる良い会社なんだなーという印象を受けました。

2日目〜4日目

 2日目からがインターン本番でした。3~4人のチームに分かれて、実際にリリースされているゲームの改良を行いました。改良部分は、予め用意されており、5つの改良点をチーム内で分担して作業を進めるという流れでした。

そこでは、実際にリリースされている製品の中身を見る事ができ、シーンの配置の仕方や、アニメーションの使い方など知らない事だらけで本当に勉強になりました。

開発は、最初は中々進まず予定通りには進みませんでした。 しかし、日が経つにつれてUnityにも段々と慣れてきてスムーズに進める事ができました。

それでも、時間が足りなかったので結局全チーム残業していましたね(笑)。でも、全然辛くなくてむしろもっとやりたいという気持ちが強かったです。

 

5日目

最終日の午前中は、バグの修正や発表に向けて準備を進めました。

発表では、実際に拡張した部分のデモをして偉い人たちからフィードバックをもらいました。そこで面白かったのは、同じ仕様書をもらっているはずなのにチームごとに拡張の仕方が全然違うという事です。そうなったのは、それぞれのチームが一つ一つの拡張機能に対して拡張する理由を考え、それを実現する方法を考えながら作ったためです。少しの違いでも、全然違って見えるのはゲームの面白い所だと感じました。

 

発表が終わり、インターンが終了した後にはお待ちかねの懇親会がありました!

またまた、おしゃれな場所でピザとパスタとお酒が出て社員さんやインターン生が入り混じって色々な話をしていました。ゲーム業界の今後やこれからのエンジニアについてなど、ためになるお話を沢山聞く事ができました(あんまり覚えてない...w)。

 

まとめ

【Cygamesのインターンに行って良かった事】

・ゲーム業界について知る事ができた事

・Unityを使えるようになった事

・実際にリリースされている製品に触れられた事

・Cygamesの業務を体験する事ができた事

・おしゃれなご飯に連れて行ってくれた(めっちゃうまかったです!笑)

  

あまり、詳しくは書けませんでしたが売れているゲームを出している会社の業務を体験できたのは本当に良かったです。

あと、Cygamesさんは社内のルールやマナーなどもしっかり教えてくれたのがありがたかったです。全然知らない社員さんでもすれ違うと「お疲れ様です」という文化は素晴らしいと思いました。

インターンブログ1社目(basic)

はじめに

今年の夏休みに5社のインターンシップに参加してきたので、そこで学んだ事や、感じた事、その他諸々をまとめたいと思います。

内容については詳しく書く事は出来ない部分もあるので、そこはボカしつつ...。文章力ないので読みづらかったらごめんなさいm(_ _)m

 

hrblog.basicinc.jp

きっかけ

まず、今年の夏一発目のインターンbasicさんの30時間耐久ハッカソンでした。8/9~8/10の2daysのハッカソン形式のインターンで4人チームでRuby on Railsを使ってテーマに沿ったWebサービスを開発するという内容でした。

このインターシップを知ったきっかけは、ジースタイラスさんの逆求人のプレイベントで、人事の新田さんとお会いした事でした。

逆求人についても今度まとめたいと思います。

 

前日まで

僕はこれまでインターンというものに参加した事がなかった事と、Ruby on Railsを使った事がなかったので正直すごい不安でした。

Ruby on Railsを触った事がないのは流石にまずい!と思ったので、Rails Tutorialというサイトを2週間ほどかけて1周しました。事前準備としてはそれ以外はしていなくて、全然できる気はしていませんでしたね(笑)

 

当日

開始〜アイディアソン

朝9:40にbasicさんのオフィスに集合だったので、超早起きしてTXに乗ってはるばる東京までやってきました。本当に遠い...

最初はRailsの簡単な使い方講座と、gitの使い方講座がありました。gitもほんのちょっと使ったくらいだったので講座があって助かりました。

その後、テーマ発表があり、チームに分かれて自己紹介をしつつお昼ご飯を食べました。テーマは「超尖ったWebサービスを作りきる!」でした。

お昼ご飯を食べ終えると、早速アイデアソンが始まりました。まずタイムマネジメントをして、ブレスト〜グループ分け、作るもの決定という流れで進める事が決まりました。グループディスカッションの経験はインターンの選考会で沢山経験していたので、「余裕でしょw」と思っていたんですが、全然アイデアがまとまりませんでした。

議論が停滞してきた頃にメンターさんが来てくれて、「このアイデア面白いんじゃない?」と言ってくれて、時間もなかったので多数決を取って何を作るか決定しました。

決定したアイデアは「くるぶしを集めるWebサービス」でした。インパクトは抜群だと思いました(笑)

次はこのサービスにどんな機能をつけるのかという事を話していきました。基本的にチームメンバーのTくんがファシリテートしてくれたので、そこからはスムーズに進める事が出来ました。

 

開発

イデアソンで作るものが決まったので16時くらいから早速開発が始まりました。Webだったので、フロント側とサーバ側に分かれて開発を進めました。僕は、一応フロント側での開発がメインで、ほんのちょっとだけサーバの方も触れせてもらいました。

開発は、vagrantを使って仮想マシン上で開発をしていました。

開発をしていく上でまずぶつかった壁が、gitでした。最初の方は自分の変更をpushしようとして、エラーがでて、最新じゃないというのでpullしようと思ったらconflictが起こりまくっての繰り返しで、一回pushするたびにめっちゃ時間がかかってました。

あと、commitが消えた時は、本当に焦りました...。その時は、メンターさんにお願いして復活してもらいました。メンターさんや、めっちゃ強いメンバーに教えられる内にgitにも慣れてきて2日目くらいにはだいぶ使えるようになっていました。

フロントの作業は、前日までにやっていた予習が役に立ってほとんど困る事はありませんでした。しかし、bootstrapが全然わかっていなくて、ボタンがずれるというバグを最後まで直す事が出来ませんでした。あれは悔しかった...。

 

f:id:i101340:20151005174830p:plain

Anklebsh

 

あと、人生初のデスマ開発を経験しました(笑)

このハッカソンは30時間で作りきるということがテーマだったので寝る間も惜しんで開発(主にバク取り)をしていました。深夜3時くらいにエラーが出まくった時はちょっと発狂しそうでしたね(笑)。

しかし、メンターさんの手厚いサポートと差し入れのおかげで、そこまで苦に感じず30時間やりきる事が出来ました。ブルとハーゲンダッツの差し入れは本当にありがたかったです。

 

発表〜結果

2日目の16時から作品の発表がありました。どのチームも16時ギリギリまで開発していて最後まで熱量が凄かったです。

僕は眠たさが1周して上がったテンションが落ち始めたくらいだったので、正直超眠たかったです(笑)

他のチームの発表を聞いていると、皆よく考えてしかも30時間で作ったクオリティーだとは思えないものばかりでした。

自分達の発表は一番最後でした。発表スライドはチームメンバーの一人が作ってくれました。なぜか自分が喋る訳ではないのに少しだけ緊張していました(笑)

プレゼンが終わり次は作品のデモでした。デモはスムーズに進み、沢山のくるぶしをお披露目しました(笑)

デモ後は、メンターの方々から、どこを拘ったか等色々質問され発表は終了しました。

f:id:i101340:20151005130406p:plain

 

全チームの発表が終わるとすぐに懇親会が始まりました。

ピザや寿司、アルコールが出てきて、30時間作りっぱなしで疲れ切った体に染み渡りました。

懇親会では、メンターの方や同じチームの人、他チームの人も混ざり合って色んな話をしました。ここでfacebookの知り合いも増えました(笑)

 

懇親会も終わりに近づいてきた頃に、結果発表がありました。

結果は、なんと1位でした!!!

30時間作りきったという感覚と、アイデアは一番尖っている自信はあったので、正直自信はありましたが、めちゃくちゃ嬉しかったです!

サーバ側を速攻で作ってくれたチームメンバーには本当に感謝しています。おかげでくるぶしを集めるという意味のわからないサービスが、とてもつもないクオリティに仕上がりました。ありがとうございますm(_ _)m

 

f:id:i101340:20151005130909j:plain f:id:i101340:20151005131246j:plain

 

 

まとめ

basicさんのインターンに参加して良かった事】

・初インターンでしたが、やりきることが出来た事、結果を残せた事がとても良かった

・わかる人に教えられながら開発する事でプログラミングスキルがついた

・チームメンバー等のレベルの高い知り合いが増えた

・ハッカソンの雰囲気を体験できた(楽しかった!)

・gitを使ったチーム開発を体験する事が出来た

basicの社内の雰囲気を知る事ができた(めちゃくちゃいい雰囲気でした!)

・支給されるご飯や差し入れが美味しかった(笑)

 

初のインターンで、ハッカソンの雰囲気とチーム開発を経験できたこと、結果を残せた事が参加してとても良かったと思います。

得られたことが沢山あって書ききれない部分もありますが、夏休みの最初にbasicさんのインターンに参加できて本当に良かったと思います。

f:id:i101340:20151005130402j:plain

 

教材の変更

最近、テストがあったりインターンの説明会や選考会に参加していて忙しく久々の更新となりました。

ここで、1つ報告があります。
先日投稿したC言語入門書なんですが、嫁が妹に貸してしまったみたいで手元からなくなってしまいました…
しかも、妹は帰りの電車でその借りた本を忘れて無くしたそうな…

ということで!新しい本を借りてきました!
今回の本は問題を解きながら学ぶ形でなんと433問もあります!
これは力がつきそう…!
とりあえず2ヶ月で全問解くことを目標に頑張っていきたいと思いますm(_ _)m
f:id:i101340:20150618001059j:image

今日からC言語始めます

今日からC言語を学んでいきたいということで、はてなブログを開設しました。

というのも、先日逆求人のプレイベントがありまして

そこで、コロプラのエンジニアの方から中々厳しい事を言われたためです。

内容は、「君センスないねw」的な感じですw

そこでどういう所が足りていないかという事と、これから何をやっていけば良いかアドバイスを頂きました。

そこで頂いたアドバイスに、「エンジニアとして働きたいなら基礎をやるべき」というものがありました。

実際に、エンジニア職に新卒で入ってくる人はRubyとかJavaとかは書けても基礎的な事がわかっていないのでゲームプログラミングの高速な通信などにはついていけないそうです。

他にも、色々お話していて「基礎って大事だなぁ〜」と感じる事があったため

基礎を固めるにはどうすれば良いかお聞きしたところ「Cでなんでもできるようになれ!」とのこと。

C言語自体は以前から勉強していたこともあり親しみやすい言語ではあったため、基礎を固めるには丁度良いと思い今日から勉強を始めることにしました。

 

そこで今日は、入門ソフトウェアシリーズのC言語という本を読みたいと思います。

f:id:i101340:20150611002703j:plain