日々精進

aikoと旅行とプログラミング

Bug Shooting Challenge #1 参加記 #mixi_BSC

IMG_7722.JPG (1.7 MB)

今回, 株式会社ミクシィさん(以下ミクシィ)開催のBugShootingChallengeに参加してきた。記念すべき第一回大会の参加となる。

BugShootingChallengeとは

名前のとおりではあるのだけど, Bugを潰そうぜ!というコンテストで, 真面目なものを引用すると,

 BSCはもともとCREグループが新卒エンジニア向けに行なっていた不具合調査研修をベースとしています。不具合調査研修については下記の記事にその様子が掲載されておりますので興味を持たれましたらぜひご一読ください。BSCではイベントを楽しんでもらうための工夫として、バグを仕込んだゲームサーバを用意いたしました。イベント当日は2人1組となって、このゲームサーバのログから不具合の原因を特定し、ソースコードの修正まで行なっていただきます。(引用元:https://medium.com/mixi-developers/intro-bsc-40ee02fc675d

らしい. あまりにも名前の通りなのだけど, バグを直して優勝しようということである.

参加記

午前

  • 起床チャレンジに成功する
  • すごい余裕を持って渋谷に着く
  • 渋谷開発し過ぎでは?
  • ミクシィまでは徒歩10min位かかるので余裕を持ってきたほうが良さそう
  • Registrationに成功する
  • ハッシュタグが #mixi_BSC なんだけど, 俺しかつぶやいてない
  • ホスピタリティが最高(無限に飲み物が得られる) f:id:bath_poo:20181117222756j:plain
  • 座学が始まる
  • 不具合調査の必要性
  • CREの話
  • 「心の準備はいいですか?」って聞かれるも, 全然良くなかった
  • まさかのストーリーが存在
    • 上司が冷たすぎる
  • 技術説明がはじまる
    • RubyやらRailsやらDockerやらをつかいます
      • Matzと写真を取る社員さん
      • Rubyのおはなし
        • Rubyは頑張ってください」というアナウンスと共に, 20分で始めるRubyへのリンクが貼られていた
      • Gitの説明
        • 人の気持ちを学んできたLinux Torvalsのお話
        • git challengeの紹介
      • Docker
        • VMとコンテナの違いみたいな
        • Docker Install Battleが始まる
        • 違うランタイムのあれが動くんだなあ
    • SQLのお話
      • SQL on Hadoop with Apache Hive
      • データってどんどん増える(ログとか、スナップショットとか)
      • そこでHadoopですよ
      • 分散処理基盤ですね?
      • 低コストでスケールアウト可能
      • ファイルベースなので生ログも行けるぞ
      • HiveはHiveQLっていう言語でいい感じに分散処理を書ける(SQL like)
      • Amazon EMR(S3のデータに対してEC2インスタンスクラスタで分散処理が可能)
      • Hadoop + EMRのハンズオンが始まる(!!)
      • 全然やったことないけどSQLっぽい感じでかける
  • ランチだ!!!
  • 隣の人のキーボードで遊ぶ IMG_7726.JPG (1.9 MB)
    • ちょっと欲しくなった

午後

  • いよいよ開始
  • ディスプレイ配布される
  • とりあえずslコマンドを使う
  • チームメイトのデスクトップが無限にきれい
  • docker-compose upチャレンジ
  • ローカルでGrafana動いていたせいでポートが競合して😇
  • なんとか環境ができあがる

    1問目

  • 頭が取れた
    • 何もできませんでした
  • 思ったより時間がなかったので, 回答を満足にかけなかった

2問目

  • ログとにらめっこをする
  • 違和感を感じる
    • 結果これが正解だった
  • これも時間が足りずまともにレポートを書けなかった

3問目

  • 実際にありそうなバグ(システムの穴)だった
  • コードをひたすら追っかける
  • 明らかにおかしい箇所があったので治す
    • 修正方法としては正解だった
  • どういう理由でそのバグが悪用されているかを調べる
  • ありがとうRubyMine
  • やはり時間が足りずまともにレポートを書けなかった

解説パート

  • git challengeのように全部が終わってからまとめて解説ではなくて, 1問目が終わったあとに解説, 2と3問目が終わったあとに解説という感じだった
  • それぞれ特性が違う問題で, 非常にやりごたえのある問題だった
  • 2, 3問目に関しては狙いをつけていたところが正解でちょっと嬉しかった
  • 完全にチームメイトのおかげという感じだった
  • 問題を解いたあとの僕

懇親会

  • はい料理が最高 IMG_7728.JPG (1.9 MB)
  • サーモン IMG_7729.JPG (1.7 MB)
  • 一番手前のやつは、友達も俺もよくわからん…って言いながら食べてた IMG_7730.JPG (1.6 MB)
  • 普段の256倍ぐらい人とコミュニケーションを取る
  • 久しぶりにあった社員さんとかとお話をする
    • データ分析基盤の話をした
  • みんな大体就活のお話をしている
    • 大学にはそんな人はいないので, 就活シーズンなんだなあとぼけーっと思う
  • DBに関するLTのようなものが始まる
  • 最後はソファーのとこにあつまって記念撮影(ISUni suwatte shashinwo toru CONtest)

感想

今回がはじめての開催となったBug Shooting Challenge. 結論から言えば非常に面白かった. 実際の現場でも起こりうる内容で, それの調査を行い修正だけではなくその根拠となるものの提示まで含めて採点対象だったので, より実務に即したコンテストだったように思う.

問題の配布や回答はGitHubを通して行われた. 特に回答は, その問題に対しての修正をPull Requestで提出することで採点(人力)されるという仕組みだった. PullRequestではこのバグが何故起こったのかを詳細に説明する必要がある. MVPになったチームのPull Requestを見たが, 非常に丁寧かつわかりやすい説明がなされていて流石だなと思うなどした.

今回はRailsを使ったアプリケーションだったので, もちろんRailsについての知識はたくさんあるに越したことはない. 更に言うと, 大規模なプリケーションを作成・運用していく上で必要な知識も得ることができる大変よいコンテストだった.

今回のように, ユーザーからの問い合わせを受けて調査する業務というのは日常的に行われていると思う. コンテストが終わってから社員の方に聞いてみたが, 実際の現場では長いものでは数日かかるようなものもあるという. 今回はコンテストだったのでそこまで重たいものはなかったが, 実際は粘り強く調べていく力も必要なのだと思った. また, コンテストはコンテストで程よい難易度に調整する必要があるので, 社員の方の準備には本当に感謝という気持ちです.

というわけで, 今後もきっとこのコンテストは続いていくと思うので, 是非多くの人に参加してもらいたいと強く思った(ミクシィさんはgit challengeとかTDD challengeとかいろいろおもしろいイベントをやっているので, 他のイベントも是非チェックしてみてください)

Jupyter Notebookのテーマを変えたらアウトプットの左端が表示されない

いろいろあってJupyter Notebookを使ってデータ分析を行うことになった. こういうのは形から入りたいので, データ分析を行う前に好みの見た目に変えることから始めた. Terminalも見た目変えるところから始まっていて, この先も多分見た目をいじるところから始めると思う.

jupyter-themesを入れる

Jupyter Notebookのテーマを変える方法に, dunovank/jupyter-themesというものがある.

github.com

これを使うことで, みんなだいすきなmonokaisolarizedなどを入れることができる. もちろんデフォルトの真っ白Notebookが嫌いというわけではないけど眩しいので, 慣れ親しんだ暗めのテーマに変えようと思った. インストール自体は簡単で,

$ pip install jupyterthemes

とすれば簡単に導入される.

テーマを変える

jupyter-themesを導入できたので, 実際にテーマを変える. インストールされているテーマは

$ jt -l

とすることで確認することができる. 手元では, 以下のテーマが入っていることが確認された.

$ jt -l
Available Themes:
   chesterish
   grade3
   gruvboxd
   gruvboxl
   monokai
   oceans16
   onedork
   solarizedd
   solarizedl

今回はonedorkというデザインに変更した.

$ jt -t onedork -N -T

基本, jt -t <theme>でテーマを変えることができる. オプションとして, 行番号を表示する-Nツールバーを表示する-Tをつけた.

Jupyter Notebookの起動

テーマを変えたので, 任意のディレクトリでJupyter Notebookを起動する.

$ jupyter notebook

するとブラウザ上でいつもの画面が開くので, 自分の作業するノートブックを選択する.

あれ…左端が…

起動するとテーマが暗めのになっててハッピーですね. onedorkかっこいいです.

しかし… f:id:bath_poo:20181012101922p:plain outputの一部が表示されていない…左端が切れている… f:id:bath_poo:20181012101929p:plain

無理やり治す

Chromeのインスペクタで要素を見ていたら, f:id:bath_poo:20181012102006p:plain と言った感じでオーバーレイされてるように見えたので, アウトプットそのものが表示されている領域に強制的にmargin-leftをつけちゃえばとりあえず出るかなと考えた. そこで, 使用している.jupyter/custom/custom.cssというファイルをいじって治すことにした. 具体的には, 1664行あたりに行ってmarign-left: 9exとかを足します.

div.output_subarea.output_text.output_stream.output_stdout,
div.output_subarea.output_text {
 font-family: monospace, monospace;
 font-size: 8.5pt !important;
 line-height: 150% !important;
 background-color: #373e4b;
 color: #b1bed6;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 margin-left: 9ex;
}

すると f:id:bath_poo:20181012102027p:plain なんか表示されましたね. これでいいのか…?良い解決策あったら教えてください.

余談

Jupyter Notebookのこと昨日までジュピターノートブックだと思ってました. ジュパイターなのね.

COLOPL INTERNSHIP 2018 BUILD UP 参加記

IMG_6860.JPG (1.6 MB)

COLOPL INTERNSHIP 2018とは

今回、株式会社コロプラ(以下コロプラ)で開催された COLOPL INTERNSHIP 2018 に参加してきた。これはインターンシップの総称で、その中にエンジニア向けのMASH UP, HACKATHON, BUILD UP, プランナー向けのTHE PLANNING GAME, デザイナー向けのSTEP UP, 総合職向けのTHE STRATEGが存在する。今回参加したのは、エンジニア向け&&サーバーサイドエンジニア向けの BUILD UP に参加させていただいた。

株式会社コロプラとは

コロプラを知らない人、そんなにいないのではと思いつつも一応書いておくと、社長の馬場さんが作成した「コロニーな生活」というゲームがきっかけで2008年に法人化。その後も、「クイズRPG 魔法使いと黒猫のウィズ」や「白猫プロジェクト」他にも「ツムツムランド」などのゲームを世に送り出している。最近はゲームだけでなく、VR事業 などにも注力している(ことをインターンシップに行ってから知った)

会社は恵比寿にある。あの(?)恵比寿ガーデンプレイスタワーにある。恵比寿駅東口からずっと屋根があるので、雨がある日でも安心である。にしても恵比寿は何度来ても若干場違いな感じがある。何なんだろうあの感じ。ビール飲みたい。

サーバーサイドエンジニア向けインターンシップ BUILD UPとは

エンジニア向けのインターンシップの中で、サーバーサイドエンジニアを志望する学生に向けたインターンシップがこのBUILD UPである。BUILD UPの説明を公式HPから引用すると、

コロプラで実際に運用されているゲームで、現場の業務を想定した課題に取り組みます。先輩エンジニアのサポートのもとで開発をし、なかなか経験できない高トラフィック下の実務に近いコーディングを学べるため、ゲームの裏側を実践さながらに経験でき、確実な実装力アップに繋がります。また、コロプラの水準を満たすアウトプットをしていただけた場合は、実際のプロダクトに反映しユーザーさまにお届けします。(引用元:https://be-ars.colopl.co.jp/internship2018/engineer/buildup/

とある。つまり、普段体験することのないリクエストやトラフィックを処理するためのアーキテクチャアルゴリズムなどを考え実装するというものである。この 実際に運用されているゲームで現場の業務を想定した課題 というのが今回選考を受けたモチベーションの一つで、普段そこまでパフォーマンスを意識して書いていたことがなかったこと、とりわけパフォーマンスを要求されるゲーム業界での経験値を積みたいという思いから応募した。

あと地方の方あるあるだが、「交通費全額支給・宿泊費全額支給」というのが大変うれしい。むしろこれがインターンシップを選ぶ基準になっている気もする。あと、日給2万円 です。最高。

選考フロー

選考フローとしては,

  1. エントリーシート提出
  2. 書類選考
  3. 技術テスト
  4. 面接
  5. 合否通知

という流れであった(ごく一般的なインターンシップの選考フローだと思う). 面接では人事の方と気さくに、でも様々なことをお話することができた。質問も結構したようなイメージが有る。あくまで持論だが、この業界面接がフランクだし、肩の力を抜いて自分の思っていることやお気持ちを伝えるのが大事だなと思う。想定しているよりも合否通知に時間がかかったので、落ちたのでは…と思っていたところに合格のメールが来たので嬉しかった。

合格してから

格通知がきてしばらくすると、家に課題書籍が送られてきた。正確には課題というわけではなくて、これを使うので勉強しておいてねというもの。自分はやったことがないものだったので、とりあえず行くまでに一通りやろうとして前日に1冊終わった。計画性の無さがよく分かる。その他にも、サーバーサイドなので軽くMySQLのパフォーマンス周りの部分を復習したり、そもそも使う言語の方を復習したりしていた。その間にも他のイベントやISUCONの準備等でバタバタしていたらいつの間にかインターンシップ当日という感じだった。

インターン中の日記

インターン中に書いていた個人的な日報のようなものを乗せる。最終日になればなるほど何も書いていないのは察して。雰囲気だけでも伝わると良いなということでのせます。途中出てくるいろんなものは最後に社の雰囲気みたいなところにのっているかもしれない。

1日目

  • 絶好のインターンシップ日和(台風が来ています)
  • Twitterでしかつながってない人と駅で待ち合わせする
  • そして遅れる(電車が)
  • aikoきいて気合を入れる
  • 無事に合流するもコミュ障を発揮する
    • ????「くまさんじゃん」
  • 入り口にくまがいます(くまさんほんとかわいい) IMG_6928.JPG (1.8 MB)

    • 私のアイコンは別のくまなので謎の親近感を覚える
    • 親戚ではない
  • 初日のガイダンスを受ける
  • 一人一台MacBook Pro(13inch, RAM 16GB)を貸与される
    • 最近メモリ16GBぐらいないとしんどくなってきている
  • なんとディスプレイも一人一枚あってうれしい
  • 環境構築バトルをする
  • いつもと違ってかなり順調に行くので焦る
    • これは社員さんの準備のおかげ
  • 昼飯がステーキ

    • 実質夕飯という感じだった IMG_6862.JPG (2.0 MB)
  • 眠気

  • Code City というものを知る
  • 基本的な構成に関する講義を受ける
  • 台風がいい感じに接近する
  • 課題に取り組み始める
  • 無限コーヒーが得られる
  • 台風の影響でまさかの早退になる
  • 17時には帰宅になる
    • まあね、初日だからね
  • 懺悔

2日目

  • インターンシップに行くといつもそうだが、当たり前のように寝不足
    • 部屋の中のあるランプの切り方がわからずめっちゃ明るかった
  • 9:30ぐらいに出社する
    • 普段の大学よりもかなり早く出社しているため, 実質早朝出勤
  • 朝から二人ぐらいオフィスまで連れて行く
    • みんな迷い過ぎでは?
  • コロデリにふるーつがわらわらしているのを眺める
    • コロプラでは朝フルーツとかシリアルを無料で得ることができます
    • 無限のバナナがある(いいえ加算有限)
  • コーヒーを無限に飲む(いいえコーヒーも有限)
  • 今日も講義パートがあってDBに関するものをいろいろ知る
  • お昼はなんかオシャレなところで熊を見ながら食べる
    • というか社内に無限に熊が存在している
  • サーバーサイドなので, Mackerelを食べる IMG_6895.jpg (2.3 MB)

  • オタクこわ…ってなる

  • 意外とPCゲームが好きな人が入るという話を聞く
  • 本来昨日行われるはずだったオフィスツアーが開催される
    • 社内の写真は後ほど
  • 午後もコーヒーを無限に飲む
  • 相変わらずのGit力の弱さを感じる
  • トイレに10290492039029320回ぐらい行くなどする
    • 2日目, 実質トイレと席を往復していたら終わっていた
  • 自頭の悪さで爆発しそうになる
  • 夕飯は牛タンシチュー IMG_6904.JPG (1.6 MB)

3日目

  • なんか朝起きたら北海道が大変なことになっていてビビる
  • 大坂なおみ錦織圭が4強でめでたい
  • 今日もやっぱり早めに出社
  • 朝食みながら見る景色がエモい
    • オフィスからの景色が大変良い
  • 今日は一日作業日なので, 講義パートは無し
  • お昼ご飯、人生で一番オシャレな中華だった(これは酢豚) IMG_6913.JPG (1.7 MB)
  • 社員さんにaikoジャンキーを発見する(!!)
  • やっぱり眠くなってる
  • ごはんたべながらGCPのお話をする
    • やはり企業だと個人ではできない規模の実験とかもできていいなあとなる
  • 支離滅裂な思考・発言 Screen_Shot_2018-10-05_at_1_00_50.png (18.5 kB)

  • コーヒー無限にのんでる

  • 机の上に福井要素をおいてアピールする IMG_6914.JPG (1.5 MB, orientation fixed)

  • あ〜〜〜〜マジで実装難しいな!!!!!しか言えずに1日終わる

  • Instagramのストーリー見てないで帰りなさい!!!って言われる(それはそう)
  • お魚食べて優勝 IMG_6918.JPG (1.8 MB)

4日目

  • あの、早めに出社です
  • 朝早めにきてバナナとサンドイッチとコーヒーを食べるのが日課になりつつある
  • 今日は発表日なので、あまり時間がないと焦りつつ最後の課題に取り組む
  • お弁当食べながらもくもく IMG_6934.JPG (1.5 MB)

  • めっちゃ頑張ってるときに、推しアーティストのMVが最優秀賞とっていて喜ぶ

  • 色々あってスライドを作るのがめちゃくちゃギリギリになって、終わらね〜〜〜〜〜っていいながらスライドを書く
  • 成果発表会開始
  • スライドに某くまを載せることに成功した!!
  • 各チーム、それぞれインターンシップ修了証を貰う
  • 動く方のくま(きぐるみ)がおるやんけ
  • 片付けして懇親会
  • 片付け中、ナチュラルにノートPCを自分の鞄に入れる人が続出する
  • 懇親会スタート
  • 恵比寿のうまいお酒情報を聞く(あれ?)
  • 人事の人、実質店員
    • 完全に我々の注文を受け取って店員さんにリレーする人になっていた
    • 店員さんより店員さんをしている
    • 鶏肉フェスティバルだった
  • 役員の方も到着してワイワイ!
  • いい話をきいて締め
  • 解散!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

社内の様子

入り口

エレベーターがくまさんでかわいい。1台だけ目をつぶっている。 IMG_6927.JPG (1.7 MB) 入り口にいるくまさんは思ったより大きくて威圧感がすごい IMG_6928.JPG (1.8 MB) すっごいきれいな待合。ソファーふかふか。ぬいぐるみとにらめっこしていた IMG_7360.png (4.9 MB)

オフィス

我々が作業していたオフィス。この画像でいうと左側の椅子が集まっている部分で作業していた。 IMG_6891.png (2.1 MB) 顔を横にふるとたくさんぬいぐるみがいる。めっちゃかわいい。あと当たり前のようにくまもいる。かわいい。 IMG_6893.JPG (1.9 MB) 基本的にこのスペースで講義が行われた。窓からの景色がエモ IMG_6888.JPG (1.6 MB) 会社の窓際にはソファとか椅子, テーブルが置かれている。基本ここで朝ごはんを食べていた。この横にフルーツが盛られていた。 IMG_6909.png (1.9 MB) コーヒーなどを無限に得られる IMG_6896.JPG (1.4 MB, orientation fixed) 別のフロアにはこんなスペースも。右手のテレビがあるスペースは、ゲームがめちゃくちゃおいてあります。休憩時間とか就業後にあそんでるみたい。 IMG_6921.JPG (1.9 MB) これ完全に持論ですが、イケてる会社は壁に草が生えている気がする。穴があいてるところは、中で作業できます。もくもく。 IMG_6920.JPG (2.1 MB) そしてこれがコロパーク。ここでお弁当食べたり、成果発表を行った。めっちゃかわいい。 IMG_6924.JPG (1.6 MB) さわれるタイプのくまさんがいる。かわいい。このくまにもたれかかってる社員さん多数存在した。 IMG_6925.JPG (1.9 MB) こたつも生えている IMG_6926.JPG (1.6 MB) 部活動もけっこうあるみたいだった IMG_6922.JPG (1.6 MB)

他にもマッサージルームがあったり色んな所にテーブルがあって立ちながら会議ができそうだったりとオフィス環境はとっても良さげだった。詳しくは以下のページにたくさん載っているので見てほしい。

be-ars.colopl.co.jp

感想

IMG_6886.JPG (2.5 MB)

インターンシップの内容について

今回は、コロプラで実際に運用されている某ゲームを題材にサーバーサイドのコードを書いた。最初はコードを書くだけなのかと思っていたが、なんと実際のゲームの画面で確認しながら進められるという点に感動した。仮想環境ではあるけれども、実際に自分が書いたコードが動いてアプリ上で表示されている様子を見たときによくわからない嬉しい気持ちになった(表現が難しい) これ本当に良かったなあと思う。

また、コードを書くだけではなく、コードを書いていく上で必要な知識を講義という形で教えていただいた。現在コロプラが運用しているゲームのサーバーサイド構成や、新規で取り組んだ新しいアーキテクチャの説明、DBMSの仕組みやロック、インデックスの大切さなどサーバーサイドエンジニアとしてやっていくために必要な知識を教えていただいた。自分の中では、DBのロックの話をしっかり勉強したことがなかったので大変役に立った。

会社への印象

今回このインターンシップに応募したモチベーションは、上にも書いたがゲーム業界で仕事するとはどういうことかを感じたいというものだった。4日感という短い期間ではあったが、課題をこなしたりその課題に対しての質問等を通して少しはイメージができたと思う。特に、途中でメンターの方がおっしゃっていた、サーバーサイドエンジニアは存在感を感じさせてはいけないという旨のメッセージ(があったとおもうが)はそうだよなあと思うなどしていた。ゲームを運営していく上で、クライアントサイドはユーザー数を増やすために重要である。が、しかしサーバーサイドがあまりにも不安定だとそれは結果的にユーザーの減少につながってしまう。いかに安定した運営ができるか、レスポンスを短くできるかという大変ではあるがやりがいのある仕事であると思った。

コロプラの特徴に、メンテナンスタイムが無いというものがある。メンテナンスタイムがあれば、運営としては余裕を持ってメンテナンスや移行に取り掛かることができるが、その時間だけユーザーはゲームをプレイすることができない。メンテナンスタイム無しでずっと維持できる様々な工夫も見ることができてよかった。

あとは、社長の馬場さんがSpanner好きという話を聞いて、会社を引っ張っていく存在の人が技術に理解があるというのは良いなと思った。実際自分でゲームを開発したから今があるわけで、かつてはエンジニアだった馬場さん。エンジニアの気持ちもよく分かっているだろうし、自分も積極的に企画等に参加しているという話も聞いた。

新しいアーキテクチャへの挑戦

勝手なイメージだったが、ゲームのアーキテクチャはわりとシンプルな構成だったりするのだと思っていた。あとは泥臭く手動でやったりするのかな、とか。今回コロプラで聞いた話に、とあるタイトルをモダンなアーキテクチャで作ろうという取り組みがあった。

ほう、Kubernetes+Spanner+Spinakerという構成だった。まさかこの手の話を聞けるとは思っておらず、導入している企業もあるのだなあと思っていた(他社で導入してるとか、そういうのも全く知らないので先行事例があったら無知すいませんという感じ)他にもSREであったり新しいことに挑戦していく風土のある企業であると感じた。

まとめ

4日間という限られた時間の中で、課題に全力で取り組めたと思う。インターンシップに行く前、二人でペアになって作業するというのを聞いて、若干の不安を感じていた。結果、そんな心配は不要でとてもいい方だった。自分は突然見たことのないソースコードに当たったときに読むのが遅いなあと思っていて、その部分をいい具合に補ってくれたと思う。また、限られた時間しかないのでいかにメンター陣とうまくやっていくかが重要で、いつもよりもたくさん質問することができたと思う。

そういうものを通して感じたことは、コロプラ社員の人の良さである。自分のメンターだった方も、どんな質問も嫌な顔ひとつせずに真摯に向き合ってくださった。普段なかなか人に聞くというものをしない(なんとなく自分だけで解決したくなってしまう)ところがあったが、今回はガンガン聞くことができたと思う。もちろん自分で全く調べずに最初から人に委ねてしまうのはよくないが、ある程度努力した上で識者に助言を求める行為というのは大変大事だし時間を有効に使う手段だと感じた。毎日夕会をするのだが、そのときもその日に気になったどんな些細なことでも適切なアドバイスをしていただき、その日の夜に技術調査をしたり翌日の実装を行う上での重要なヒントを得ることができた。あのような環境に身をおいて仕事をできれば幸せだと思う。

というわけで、コロプラに興味がある人、ゲーム業界に興味がある人はぜひ行ってみてほしい。サーバーサイドエンジニアとしてやっていきたい人でちょっとゲーム業界興味がある、という人にもおすすめです。4日間本当にありがとうございました。

余談

コロプラの人々とGoogle Cloud Inside Games & Apps @ Next '18 で再会しました IMG_7130.JPG (1.9 MB) この写真はコロプラじゃないですけどね。会場はここでした。スライドは上にはってあるやつです。インターンシップのときの穏やかな社員さんとはまた別の、真面目な社員さんを見ることができた。これからどんどん対外発表も増やしていくようなので楽しみですね。

git challenge #9 参加記 #mixi_git

Git使ってる?

おいみんな!Git使ってるか!!!!!!!!俺は使ってるぞ!!!!ということであの有名な git challenge に参加してきました. ブログを書くまでが git challenge ということで久しぶりにブログを書いています. 自身にとってはじめての株式会社ミクシィ訪問は git challenge になりました.

git challengeとは

株式会社ミクシィが主催する, バージョン管理システムである「Git」に関する競技会です. 引用した文章ですが,

各種サービスやアプリの開発でgitを大規模に活用しています。高品質なプログラムやコンテンツを大人数で速やかに手がけていく現場では、gitの使いこなしも一段と本格的。時には、込み入ったバージョン分岐や後戻り、マージを解決しなければならないこともあります。そんな、今の現場ならではの解決スキルをうまくチャレンジ課題としてイベントし、みなさんに体験して学んでいただき、そしていつか一緒に課題解決できる仲間として出会いたい。 git challengeは、そんな1 dayの技術体験イベントです。(引用元:http://alpha.mixi.co.jp/entry/2015/10/16/114203

とのこと. つまり, Git でやっていき💪という感じです. 交通費がある程度補助されるので, 地方民にも優しい大会になっています.

参加記

ここからは思い出せる範囲で箇条書きで書いていきます.

午前

  • 前日までの疲れで朝起きれない
  • 強い気持ちで渋谷駅に行く
  • 会社に行くまでに渋谷駅で無限に迷う
    • 東口ってどこだよってキレながら歩いてた
  • 無事に会社につくが, ビル1階に人がいっぱいいたので「git challenge人気だなあ」とか思う
    • なんか別のイベントの参加者ぽかったけどよくわからなかった
  • 会場に着けたので実質優勝
  • Twitterたくさんしていいよ!って言われて人権を得る
    • ツイートは呼吸
  • LTをきく. 楽しい
  • チュートリアルをやる
    • ここで基本的な流れを知る. わからなければチューターさんにきこう
  • 昼飯が2種類(正確には3だけど. アレルギーに配慮されたものだった)から選べて最高 IMG_6941.JPG (2.0 MB)
  • 実は毎度昼食にテーマがあって, 今回は「東京オリンピックが決まった日」とのことで和がテーマだったらしい
  • 無限に珈琲がある. 氷も大量にあってすごく良い. スープもある. 液体の品揃えが異常に良い IMG_6942.JPG (1.9 MB)

  • 自作キーボードの話を聞いて自分もやってみたくなる

  • いつかセパレートキーボードをさわってみたい
  • 社員さんがPerlの話をしてくれる
    • mixiはなぜかPerlという印象がある

午後

  • いよいよ競技が始まる
  • おやつの時間に和菓子がデプロイされた(らしい. 自分はたべてない)
  • 問題のWriteUpのようなものは書いてはいけないので問題はかけません🙅‍♂️
  • が楽しかったです.
  • 簡単に言うと, ☆1の簡単なものから☆6の激ヤバ問題まであります
  • 我チームは適度に分業して, ほどほど(中間ぐらい)という感じでした
  • ☆1は全部, ☆2は一つだけダメ, ☆3はひとつとけたかなぐらい
  • 相方が優秀で割と迷惑かけたかも感があった
  • あともうちょっと時間が欲しかった…

解説&懇親会

  • 解説してほしい問題を投票するやつ, 良いと思った(流石に最初の方はわかるのでという気持ち)
  • 最初の方は「なるほどね」ってなる
  • 最後の方は🤔🤔🤔🤔🤔🤔ってなってる
  • とけそうなのもあったので, 1つの問題に固執し続けるのは(この大会に限った話ではないが)いけない
  • 懇親会の料理がめちゃくちゃオシャレ && 美味しい IMG_6943.png (5.2 MB)
  • 前日まで一緒にインターンしていた人々に3人も会う
    • あまりお話できなかったので, なぜかgit challengeの懇親会で懇親会する感じになっていた
  • 懇親会中にお願いして先程解けなかった問題をマンツーマンで教えていただく
    • 優しすぎでしょ
  • 無事に解ける. ヤッター!
  • そんなこんなで懇親会終了
  • 19時ごろ解散

もらったもの

  • Octcatステッカーとか(上, 左, 下の3枚をもらいました) IMG_6949.JPG (1.4 MB, orientation fixed)

  • グラスももらいました IMG_6990.JPG (1.3 MB)

成績

12チーム参加していて6位ぐらい, 中位ですね. 難しい方の問題があまり解けなかったのが悔やまれます… 調べていたワードは近かったけど, 解説を聞いたら「これわからなくない?」ってなりました. もっと Git 力を鍛えないと. 解いた内訳は

  • ☆1: 3問正解(全3問)
  • ☆2: 4問正解(全5問)
  • ☆3: 1問正解(全4問)

となりました. 他にも☆4とか☆5の問題もありましたが全然わからず…

方針としては簡単な問題は各々で説いて, 最後の方は二人で解こうかという感じでした. 僕も相方も最初の方は割と順調に解いていったものの, 最後の方はどん詰まりという感じでした. 基本どのチームもこの方針になりそう.

最初の方に時間をかけずに勧めて, 後半に時間を残すかがこの大会の肝になってくる気がします. そのためにも, お互い基本的な Git のコマンドは普通に使えるようになってからきましょう. 複雑な感じのものは SourceTree とか使っても全然大丈夫だと思います.

感想

正直 Git は得意ではないし常識の範囲内でしか使えないので, このイベントに参加する前までは正直不安な気持ちのほうが大きかったです. 実際にやってみると初級編は自分でも解けるし, それなりに現実でも遭遇するような状況を修正することができる良い機会だと思いました. これが競技会になることで他人との競争意識も芽生え, より楽しいと感じる要因になっていると思います. リアルタイムで結果が反映されて, 緑色のステータス(正解)が見えたときの興奮は癖になりました.

自分の周りにはバリバリ Git 使ってますって人は少ないし, 使ったことがないという人が圧倒的大多数です.(この主張は, Git を知らないことが悪いという意図は含んでいません) そんな人たちも, git challenge のようなイベントで使っていければ, 楽しみながら Git に関する知識が身についていくのではないかと思いました. 確かに上位の問題はなかなか使わないかもしれないけど, それは脳の片隅に置いておいて, 「あっこれ git challenge でやったやつだ!」ってなるだけでも今後につながっていくと思います.

別に git challenge に限った話ではないんですが, もしちょっとでも興味があって行けそうなら申し込んでみるといいと思います. それはこういうイベントだけじゃなくてインターンシップも当てはまると思いますが. 色んな人と出会えるし, 様々な知識を吸収して帰ることができると思います. 今回参加できなかった人, ちょっとでも興味があるよという人は次回開催時はぜひ申し込んでみてください.

pixiv SPRING BOOT CAMP 2018 参加記

DW9qEu-W4AEO0nz.jpg (176.5 kB)

tl;dr

pixiv SPRING BOOT CAMP 2018とは

今回ピクシブ株式会社(以下、ピクシブ)で行われた春のインターンシップPIXIV SPRING BOOT CAMP 2018」に参加してきた. 今回は2/26〜3/2の5日間開催された. 交通費全額支給, なんと遠方から参加の場合は期間中の宿泊費も負担してくれる(ホテルを押さえておいてくれる)東京以外の人にも優しいインターンシップである.

ピクシブ

  • イラストコミュニケーションサービス 「pixiv」
  • ショップ作成サービス「BOOTH」
  • 絵の書き方を学ぶサービス「sensei」
  • Mastodonインスタンス「Pawoo」
  • 画像配信システム「ImageFlux」

などのサービスを展開している. 先日pixiv(イラストコミュニケーションサービス)の登録者数が3000万人を突破したことでも話題になった1. このインターンには副題がついていて, 「この春, ピクシブ"""""圧倒的猛者"""""になる」というものである. 5日間のインターンを終えた学生たちは圧倒的猛者になっている…はずである. 本記事では, ピクシブとはどんな会社なのか, 果たして参加した自分は猛者になったのか, どんな5日間を過ごしたのかについて書いていく.

選考フロー

今回の春インターンには, 2つの応募方法が存在した.

  1. 通常選考 「通常選考」の場合, エントリーシートでの選考が1次選考, 面接が2次選考となる. 遠方から参加の場合, ビデオ面接となった.

  2. GitHub選考 GitHub選考の場合, 自身のリポジトリが通常選考の1次選考に相当する. その後通常選考と同様に面接が存在し, それを突破した人がインターンに参加となる.

今回, 自分は通常選考を利用した. 面接の手応えがあまり無かったため, 落ちたのでは…と思っていたら参加連絡が来たためびっくりした. 面接はとりあえずなんでもいいので, 自分の思ってることをしっかりと伝えておくのが良いのではないかと個人的に思う. 自分の面接を担当してくださった方はとても優しかったので, 是非面接に望む方はリラックスして欲しい.

受かったのは「技術基盤コース」で

pixivでは毎日30回以上のデプロイを行っています。 そんなpixivを支えている技術基盤チームでは日々、pixivを開発しやすくするための改善やテスト、 サービスを横断したアーキテクチャ変更、セキュリティの問題を起こしにくい仕組み作りなどに取り組んでいます。 このコースで技術基盤チームとともに一見地味だが単純ではないpixivの改善に携わってみませんか? (引用:https://recruit.pixiv.net/intern/tech/ )

とのこと. つまり, pixivに使用されている基盤技術に関われるコースである. 不安だったのはPHPを使うという点であったが, 行く前にメンターさんに教えていただいたサイトをのぞいたり自分なりに調べるなりして当日を迎えた. PHP経験は高校でちょっとCakePHPさわったり, 大学で観光サイト作った程度だったので心配になりつつも, スキマ時間を見つけて勉強していった.

ピクシブ社内の様子

社内, めちゃくちゃカラフルで良い. このエリアでエンジニア同士会議したりプレゼンが行われたりする. インターンの最初の自己紹介や, 成果発表もここで行われた. IMG_5811.JPG (1.6 MB) 技術書や漫画がたくさん置かれている. というか, この棚に関して言うとほぼ漫画が陳列されている. IMG_5810.png (2.3 MB) 詳しくはここを見ると良い

www.pixiv.co.jp

社内の机は1つの大きな木の机になっていて, 仕切りもなく色んな所にフラフラと行きやすいのも良かった. 会議室もガラス張りだったりして, オープンな職場だなと思うなどした.

スタンディングデスクもあったりして, 疲れると立って仕事をしたりすることも出来る. スタンディングデスクとても良くて, 自宅や研究室にも導入したさが高まった.

写真は撮っていないのだけど, フリードリンク制なので, お茶やらリアルゴールドやらが飲み放題である. 他にも味噌汁サーバ(味噌汁がかかったサーバではない)や, コーヒーも無料で得られる. インターン生も飲み放題です.

インターン日記

毎日メモ書きのようにしていたので, 箇条書きになっている. どんなことを思いながらインターンをしていたのか, どんなスケジュールで5日間過ごしたのか雰囲気だけでもわかるといいなと. ちょこちょこ出てくるツイートは同じインターン生のものです(掲載許可取得済み)

1日目

  • 朝出発し, 9:30頃に千駄ヶ谷駅につく
  • ホテルに荷物を預けに行く(会社から徒歩20分ぐらいあったので疲れた)
  • 入り口に絵馬が沢山(かつてはもう少し沢山飾ってあったっぽい) IMG_5815 2.JPG (2.6 MB)
  • ついた頃にはそれなりに人が集まっていた
    • なんか長時間遮断器がおりている箇所があるらしく, 罠なので気をつけて欲しい.
      • 千駄ヶ谷駅から来るのならこの罠には引っかからなさそう.
  • 自己紹介フェーズが始まる
    • アニメ視聴率がすごい高い. 「好きなアニメはなんですか」という問いが何回か飛んだ
    • ちょろめ(インターン生)「とにかく光るものが好き」←これすき
    • lyakaap(インターン生)「趣味はKaggleで…」←これほんとつよい
  • スケジュール等の説明を受け, メンター陣とインターン生でお昼ごはんもぐもぐ IMG_5781.JPG (1.9 MB)
  • インターン生もフリードリンクの権利を得ているので, 無限に綾鷹を得られる
    • 朝の健康果実もある(nonsakoはインターン生です)
  • 環境構築をする
    • GithubやらPhpStormの設定をする. 環境設定は難しい
    • 変更されたら自動で転送が走る機能を初めて知る
  • Calmery(インターン生)のターミナルが可愛い
    • 自己紹介の時にも写っていたのだけど, プロジェクターの都合でうまく見えていなかった
  • 実際のコードを参考にしつつ課題をこなしていく
    • メンターさんは本当に優しくて, いろんな質問にも本当に丁寧に答えてくれる
    • わからないときは一人で考えずにどんどん質問したほうが良いです
  • ADD(綾鷹駆動開発)をする
  • 別の場所でやっているインターン生の成果発表がめっちゃ盛り上がってて気になった
  • いつのまにか19時(勤務終了)
  • 交流会(歓迎会?)が始まる
  • 🍣と🍕を食べた. 🍻もあった(飲まなかったけど) IMG_5786.jpg (1.5 MB)
  • 話をしてみると, 他のインターン生レベルが高くてつらくなる. 精進しようという気持ちになる.
    • コレは得意だ!といえるものが1つ欲しいなって思った
  • 研究の話, うまく伝えられなくて理解不足と説明力のなさを痛感した
    • 初心者の方に分かりやすく伝えられないのは大問題なので, しっかりと勉強しましょう
  • 食事後席に戻ると, 近くにいたmipsparcがウエハーのオブジェを見せてくれた.
  • ピクシブの人々は, それぞれ思い思いのオブジェクトを机の上に配置しています IMG_5789.jpg (1.7 MB, orientation fixed)
  • ホテルのインターネット接続が不安定
  • 毎日KPT(Keep, Problem, Try)というのを記述する(思ったことを毎日終わりに書く)
  • 1日目のKPTはこんな感じ Screen Shot 2018-03-03 at 17.06.22.png (111.1 kB)
    • esaにわからない単語メモってたのはあとで役に立ったのでよかった
  • ピクシブではesa使っていて良い感じ
    • esaはいいぞ

2日目

  • ホテルのインターネット接続完全に絶たれてしまい辛くなる
  • 出勤即からだ巡茶
    • フリードリンクは最高
    • フリー味噌汁も存在している
    • フリーコーヒーもある
    • オフィスグリコもある(これはフリーではない)
    • オフィスファミマもある(もちろんフリーではない)
  • お昼ごはんは隣のメンターさんのグループに混ぜてもらう. チキン南蛮食べた(写真撮り忘れ)
  • ピクシブは10時出勤だからか, お昼休憩は13:00頃からが多いっぽい(これは人によるので, その前後で自由に取ればいいとのことだった)
    • 混雑を避けれる気がするので良いなぁと思った
  • あまりにもgitを扱えなくてメンターさんに迷惑をかける
    • ちゃんと学ぼうという気持ちが生える
  • KDD(からだ巡茶駆動開発)をする
  • スプライトがあることを終業後に知る
    • 知らないって言ったらCalmeryとnonsakoに煽られた(かなしいね)
  • お腹めっちゃ空いていたので夕飯食べれるところを探すも, 会社すぐ近くにはあまりないことに気づいてしまう
    • 代々木の方まで行くと沢山の選択肢があります
  • 結局ラーメンを食べる DXCp7KKUMAMEI30.jpg (198.0 kB)
  • nonsakoは毎日食べ物に関するツイートを載せて欲しい
  • ラーメン屋での話のレベルが高すぎてついていけず辛くなる
  • nonsakoがnpm公式サイトの左上が面白いと教えてくれる
  • nonsakoに大岡山キャンパスにある面白建造物について教えてもらう
  • さわやかはいいぞ
  • 本日のKPT Screen Shot 2018-03-03 at 17.08.33.png (111.2 kB)

    • こいついつも飲み物の話題書いてんな
    • gitを何も理解していないことが分かる
  • 質問を積極的にするのは本当に大切

3日目

  • 水曜日, ピクシブでは全体会議が開かれる
  • 会議の前にラジオ体操がある. メチャクチャ久しぶりにラジオ体操をした
  • 会議が始まる
    • 様々なデータが映し出され, これが会社というものかみたいな気持ちになる
  • 全員の前で自己紹介フェーズが始まる
    • 「えー、ニックネームは"かみ”なので, "かみ"と呼んでください
    • アニメの話での盛り上がりがすごい
  • この日は弁当が会社から支給されて, ランチ会のようなものが開催される IMG_5805.JPG (1.6 MB)
  • となりでtokei(インターン生)がケーキを不正受給(大嘘)していた2
  • 誕生日おめでとうございます
  • ピクシブでは誕生日の人をお祝いするイベントがあるっぽい
  • プリキュアruby実装(????)であるRubycureを知る
  • 社内でイチゴが栽培されている事を知る
    • 草いじりが得意なエンジニアは是非ピクシブ
  • 午後からは課題に取り組む
  • 午後は色々やらかしてしまい凹む
    • 変更する箇所はしっかりと見定めましょう
  • 今日もやっぱりKDD(からだ巡茶駆動開発)をする
  • 夜Calmeryと美味しい蕎麦と油揚げを食べることで多少気力を回復した IMG_5807.JPG (1.8 MB) IMG_5808.JPG (1.5 MB)
  • 「天然たいやき!鳴門鯛焼本舗」というお店を帰り道で見つけた
    • 天然たい焼きとは…
    • 我々が普段食べているたい焼きは養殖っぽい
  • 今日もまたインターネットを得られなかった. いつの日かインターネットを得たい
  • 本日のKPT Screen Shot 2018-03-03 at 17.09.54.png (94.2 kB)
    • この日は落ち込んでいたのでなんだか少なめ
    • pushを細かく行なうのではなくて, commitだと思う. どんだけ疲れていたんだ

4日目

  • 午前中はいつもどおり作業をする
  • お昼ごはんをインターン勢5人で食べに行く

    • コロッケと唐揚げ IMG_5809.JPG (1.7 MB)
  • 今日のnonsako

  • この辺からtraP1yakudoがクセになってくる
  • nonsakoが「この牛肉コロッケ, めっちゃじゃがいもの味がする」発言🤔
  • じゃがいもと牛肉をマージしたら牛肉消滅していて悲しいねという話になった
    • コロッケで学ぶgit
  • KDD(からだ巡茶駆動開発)を(ry
  • 夕飯は全国展開超高級イタリアンレストランにtadsan, nonsako, Calmery, mipsparcと行く
  • 全力で間違い探しをする
  • 今日のnonsako2
  • 課題が大体できた気がする
  • 本日のKPT Screen Shot 2018-03-03 at 17.11.15.png (104.9 kB)
    • いい感じになってきたのでKが増えてきていいですね
    • この日はchocomelonさんとの面談があって, 「インターンどうよ?」って話をした. 自信持って頑張ろうって気持ちになった

5日目

  • インターン最終日ということで, 成果発表があります
  • 前日の夜にスライドを書こうと思ったら, 寝ていた(かなしいね)
  • 最終日にインターン勢でのランチイベントが生える
  • 正午集合なのに, 11時過ぎからスライドを書き始めたため終わるはずもなく, 途中の状態でランチに行く
  • 正午というのはやばくて, 任意のお店のリソース(席)が枯渇していて大変だった
  • ので国立能楽堂に行きます(は?)
  • アジフライは大体どこでも美味しい. 実質実家(これは罠で, 実家はさわやか) IMG_5813.JPG (1.7 MB)
  • していません
  • National Noh Theatreって書くのか
  • 帰ってきてスライドを一生懸命書く
  • 絶対に5分では終わらない感じになる
  • 横でElmでスライドを書いている人がいて怖かった
  • とりあえず完成させ, メンターの方と相談する. だいたい良さそう
  • 発表が始まる
  • 皆クオリティが高くて無駄に緊張する
  • 発表本番はほどほどにうけたっぽくてよかった. 卒論感が強かったっぽい. 福井県のアピールをした

トップバッターで緊張するところを, 堂々と発表していてすごいと思った. 直前のカラースキーム変更も頑張って対応していた.

秋山殿〜

Calmery「このスライドもElmで作ってます」←これつよい

  • pixivに実写画像をアップしてはいけないという知見を得られた
  • スライドにげんこつハンバーグの画像を載せるミッションをクリアした
  • 発表後, オフィスのあまり見ていない箇所をtadsan, yudemanjuさん案内でCalmeryとどいちゃんと見て回った
    • 2階と6階にオフィスがあるが, 自分がいたのは2階の中央付近なので他を全く見ていなかった
  • ピクシブ特製クリアファイルというのがあって, めっちゃ可愛い絵ばっかりで全種類ほしいなあという気持ちになった
    • インターン生は全員1枚おみやげでもらいました. ありがとうございます.
  • 6階に行き, pixiv PAYやBOOTHあたりを見て回った
    • 6階は木のいい匂いがします
  • 本棚に「インプレス標準教科書シリーズ H.265/HEVC教科書」があってテンションが上った
  • 6階はお菓子が充実している
  • 18:30から懇親会があった
    • あまり話していないメンターの方ともお話できてハッピー
    • 関数型言語の話をするのって大変なんだなって気持ちになった
    • ビールの泡だけきれいに残るピッチャーが面白かった
    • BOOTHって結構色々売っているので, 今度使ってみようかなと言う気持ちになった.
  • 5日間も一緒に居るとそれなりに仲良くなるもので, 帰るのはちょっと寂しいなと言う感じであった
  • 期間中インターホン貫いてたちょろめくん
  • 帰りの新幹線, みなTwitterしまくりという感じで面白かった.

感想

IMG_5814.jpg (1.6 MB) 写真は頂いたお土産の袋です. ステッカーとクリアファイルと水をいただきました. ありがとうございます🙏

ピクシブ社の印象

オフィスもオープンな感じでよかったし, 特に社員同士をニックネームで呼び合う文化が印象的だった. これはインターン生やアルバイトも例外ではなくて, 最初の自己紹介でニックネームを発表し, メンターさんからもその名前で呼ばれることになる. そのくらいニックネームって重要なので, ちゃんと考えて付けましょう.

日記の方にも書いてあるが, フリードリンク制度が実施されていて大変良かった. 他にも希望のPCを購入できる制度もあったり, 会社の近くに住んでいると5万円の家賃補助があったりと福利厚生的な面でも良いなと思った.

希望のPCを購入できる制度があるのだが, 結構な確率で社員さんはmacを使っていたような気がする(全員を見ていないので何とも言えないが) インターン生でmacではない人が数人いたのだが, いずれも環境構築が辛くなっていた.

あとesa大好きマンなので, esa使ってるのを知って「おっ」てなった.

得られた知見

前述のとおり, 参加前はそれなりに不安もあった. いざインターンになってみると, 周りにいる人々はとても優しく接してくれ, なんなら社内のシステムがどのように動いているかまで詳細に教えてくださった. 良かった点として,

  • 本当にpixivで動いているコードも触ったり読むことが出来る.
    コードの量がすごいので追うのになかなか時間がかかった, がそこはIDEパワーを使った. これが大規模サービスなのか…という気持ちになった.
  • テストの書き方
    今までもテストを書くことはあったものの, 割りとオレオレな書き方だったしテストケースの考え方も雑だった気がするので, 教えていただけたのは本当に嬉しかった.
  • コードレビューをしていただける喜び
    個人的なコードであれば, 最悪自分がわかればよいし他人にレビューをしてもらうということもないと思う. インターン期間中は, 社員の方が自分のコードをレビューしてくださるので, よろしくない書き方についてバンバン指摘していただける. 単語の誤用やインデント, 空行など自分に足りていない部分を認識することができる. プログラムは自分しか読まないコードでも, 汚ければ数日後の自分は忘れて読めないということもありえるので, 常にリーダブルなコードを書くよう意識しなければならないと思った.
  • PHPUnit, Composer, gitの使い方等々
    PHPUnitPHP向けのユニットテストツール, ComposerはPHPのパッケージ管理ツール, gitは分散型のバージョン管理ツール. PHPUnitとComposerは完全に初心者, gitはmasterブランチのみでcommit, pushを行なうタイプの使い方をしている人間なので, ほぼ全てのことが自分にとっては新鮮であった. 最後に書いたコードをパッケージ化するところまで持っていけたのは良かったな, と.

が挙げられる. 他にも色々とあるんだけども. いい機会なので, もしこの先インターンに行く人は気になるところを遠慮なく聞いたり頼ってみるといいんじゃないかと思う.

インターン生たち

あと同じインターン生がなかなか個性的で面白かった. 最初は緊張で無言だったけど, 日に日に仲良くなれてよかったと思う. 初日からほぼずっと一緒だったElm大好きMelcary, 空リプエバンジェリストのtokei, もうなんでも面白いMastdon大好きnonsakoなど本当に楽しかった. ちょろめくんの研究は普通に面白そうで気になります.

日記を見れば分かる通り, 夜ご飯とかはなんだかんだ誰かと食べて帰るという感じの日々が続いた. 5日間とはいえそれなりに一緒にいるので, 積極的に誘ってご飯とか行くと早く仲良くなれるかもしれない. お店は社員さんにお店をリコメンドしてもらうのもアリ.

あまり喋れなかった人もいたので, いつかお話できたらいいなと思う. 能楽堂の食堂でRictyの話をし, ラーメン屋でnpmの話をし, 居酒屋でgitの話をし, 打ち上げではインターネット老人会と関数型言語の話をするなど普段の何倍も刺激的な日々を過ごす事ができたのではないかと思う. またどこかで会えるといいですね.

インターン生みなすごくて, 同世代でコレだけの人がいるのだから自分ももっと頑張らないといけないという気持ちになった. こうやって刺激をもらえる経験はなかなか大学にいるとできなくて, いつもの何倍も刺激的な5日間を過ごすことができた.

まとめ

5日間あっという間だった. 知らないことばかりだったので, 猛者にはなれなかったような気がするが少しは近づけたのでは無いかと思う. 本番環境にコードをデプロイできたのも良かった. 毎日が楽しかったわけではなくて辛かったときもあったが, 終わってみればそれもいい経験だったなと思えた.

5日間しかいなかったので会社の全てをわかったわけではないが, 以前よりピクシブ社に何倍も興味が湧いてきたので良かったと思う. 大規模なサービスにアサインする体験, 会社としての風土や魅力などを知ることができた濃い5日間だった. 全員参加の会議に出られたのも良かったなと思う.

ピクシブが展開するサービスに少しでも興味がある, プログラミングが好き, インターンシップに行ってみたいと思っている人は, 是非応募して欲しい. あんまり技術力が…と思っているそこのあなたも, 落ちたからと言って人生が終わるわけではないのでとりあえず応募してみるのをおすすめします.

5日間お世話になったメンターのtadsanを始めピクシブ社員の方々, インターン生に最大限の感謝を. また戻ってこれるといいな.

ごはん

夕飯や昼飯で行った店のリスト. 意外と探すのに苦労したので, 早めに社員さんに聞いておくのがベター

他の参加者のブログ


  1. ピクシブ株式会社 プレスリリース, “pixivのユーザー登録数が3,000万人を突破”, https://www.pixiv.co.jp/news/press-release/article/6050/

  2. 偶然社員さんの分が1つ余ったのでもらってました. 不正受給じゃないよ(詳しくは彼のブログ記事を読んでね)

HININE NOTEで自分だけのノートを作ってきた

東京都は渋谷区にあるHININE NOTEでノートを作ってきた.

f:id:bath_poo:20171211235852j:plain

というのも, 今月のBabyPeenats(aikoファンクラブ)の会報でaikoさんがノートを作っていたのである. ちょうど東京へ用事があったので, ついでに寄ってノートを作ってみることにした.

店内の様子

f:id:bath_poo:20171212000448j:plain まずはノートのサイズを選ぶ. 基本はB5かB6で, 必要に応じてカットも可能. あとは長辺とじか短辺とじを選択可能 f:id:bath_poo:20171212001900j:plain 実際に製本されているものがあるので, サイズ感や紙, 色の組み合わせなどを確認できる. すでにデザインされた表紙などもあるようだ. f:id:bath_poo:20171212000924j:plain サイズを選んだら, 中に入れる紙やリングの色などを選ぶ. これらは全て上の用にサンプルが置かれているので, 作る際の参考にされたい.
店員さんに「aikoさんの会報を見て〜」という話をしたところ, あのあと何人か店に来ていたみたいだった.

リングの選択

f:id:bath_poo:20171212001013j:plain リングだけでもコレだけの種類が存在する. 今回は金色のリングを選択.

表紙, 裏表紙の選択

f:id:bath_poo:20171212001055j:plain 続いて表紙, 裏表紙を選択. 色は勿論, 様々な素材を選択可能. レザーは1枚900円ぐらいだった気がする(要確認)

紙の選択

f:id:bath_poo:20171212001235j:plain 紙は6種類から選択可能で, それぞれを3〜4パック組み合わせて作成する. 紙は無地, 罫線, 方眼の3つから選択可能. f:id:bath_poo:20171212001404j:plain カレンダーもあったので, 2018年ダイアリーを作成することも可能. カレンダーが終わったあと, 店舗に持ち込むことでカレンダーを取り外してメモだけで使うことも可能. f:id:bath_poo:20171212001612j:plain 試し書きも可能なので, 普段使いのペンを持っていくことをおすすめする. ①②③は滑りやすく, ④⑤⑥は割りと引っ掛かりがある紙だった.

オプションを選択

f:id:bath_poo:20171212001504j:plain ゴムバンドや丸タック, 封筒などをお好みで選択. 今回は赤と青のゴムバンド, 封筒, ポケットを選択した. ゴムバンドは留め具の色を金・銀から選択可能.

実際に作成

f:id:bath_poo:20171212002033j:plain 大量の素材が所狭しと並べられている. f:id:bath_poo:20171212002057j:plain 実際に作っている様子を見ることが出来る. なかなか手帳を作っているところを見ることができないので楽しかった.

完成

f:id:bath_poo:20171212002223j:plain f:id:bath_poo:20171212002229j:plain 表はオリーブ, 裏はカーマインにした. 裏はマットな素材. 表には名前を箔押ししてもらった. 箔押しは5文字いない500円, 6文字〜15文字で800円となる(2017/12/11現在)

自分だけのノート, プレゼントにも最適だろう. ぜひ作ってみては

hininenote.jp

aikoのタイトルは何文字が多いのか調べてみた

昨日に続いてaikoネタ. タイトルの通り, aikoの曲のタイトルを集めて何文字が多いか見てみた.

背景

昨日はFM802のROCK KIDS 802 -OCHIKEN Goes ON!!–にaikoさんが出演された.

22時から1時間まるまるaikoが出演. 「予告」は勿論, 「月が溶ける」がめちゃくちゃ良かった. 番組途中「aikoの曲は2文字とか3文字のタイトル」が多いよねって話に. 言われてみればたしかに多いなとは思っていて. じゃあいったいいくらあるのかと言うのを調べてみることにした.

前提条件

  • 私のiTunesライブラリに含まれているaikoの楽曲(メジャーデビュー以降に販売されたシングル、アルバム曲)
    • 【アルバム】 「小さな丸い好日」から「May Dream」まで
    • 【シングル】 「あした」から「恋をしたのは」

だけでカウントすることとする.

  • 判定条件
    lengthで判定するので, mlikは4, KissHugは7と数えます.

  • 言語
    Ruby, AppleScript

集計

以前使ったものを大いに活用する.

muttan1203.hatenablog.com

とりあえずAppleScriptをかく

tell application "iTunes"
    set lst to {}
    
    repeat with t in (file tracks whose artist contains "aiko")
        copy (album of t as string) to the end of lst
    end repeat
    
    return lst
end tell

なにもわからない. 雰囲気でAppleScriptを書いている. これをRubyに投げる.

require 'gnuplot'

# scriptの実行
songs = `osascript itunes.scpt`.chomp.split(",").map{ |item| item.strip }

# 曲名ごとにカウント
songs = songs.select{|item| !(item.index('instrumental') || item.index('Instrumental'))}.uniq.sort_by { |item| -item.size }

title_histgram = Array.new(songs[0].length + 1){Array.new}
counter = Array.new(songs[0].length + 1, 0)

labels = []
times = []
counter.each_with_index do |item, idx|
  labels << "#{idx}"
  times << item
end

# 描画
Gnuplot.open do |gp|
  Gnuplot::Plot.new(gp) do |plot|
    plot.terminal "aqua font 'ヒラギノ角ゴ Pro W3,10'"
    plot.title  "タイトルの長さ"
    plot.yrange "[0:#{counter.max+4}]"
    plot.xrange "[0:22]"
    plot.ylabel "曲数"
    plot.xlabel "タイトル長"
    plot.bmargin "8"
    plot.style "fill solid border -1"
    plot.xtics "rotate by -90"
    plot.unset "key"

    plot.data << Gnuplot::DataSet.new([labels, times]) do |ds|
      ds.using = "2:xtic(1)"
      ds.with = 'boxes lc rgb "orange"'
      ds.title = ""
    end
  end
end

結果

f:id:bath_poo:20171116232813p:plain 長さが2とか3のものが多い. やっぱりね.

長さ1のタイトル

長さ2のタイトル

  • 距離
  • 初恋
  • 運命
  • 桃色
  • 傷跡
  • 信号
  • 二人
  • 花風
  • 脱出
  • 微熱
  • ボブ
  • 悪口
  • 歌姫
  • お薬
  • 恋人
  • 4秒
  • 合図
  • 半袖
  • 約束
  • 指先
  • 恋道
  • 木星
  • 秘密
  • 瞬き
  • 横顔
  • 花火
  • 恋愛
  • 学校

長さ3のタイトル

  • あした
  • マント
  • 天の川
  • 風招き
  • リップ
  • 朝の鳥
  • 寒いね
  • 二時頃
  • 青い光
  • ずっと
  • かばん
  • 私生活
  • 赤い靴
  • 陽と陰
  • 雨の日
  • Aka
  • 白い道
  • スター
  • あられ
  • ドレミ
  • 自転車
  • 飛行機
  • ライン
  • 心日和
  • 洗面所
  • 相合傘
  • ココア
  • 星電話
  • 卒業式
  • リズム
  • ヒカリ
  • ラジオ
  • 三国駅
  • 君の隣
  • 冷凍便
  • もっと
  • 恋の涙
  • 遊園地
  • 蒼い日
  • 問題集
  • 舌打ち
  • より道
  • まつげ
  • ホーム
  • 星物語
  • 夏バテ
  • 愛の病
  • 桜の時

長さ4のタイトル

  • 恋人同士
  • それだけ
  • アスパラ
  • そんな話
  • 甘い絨毯
  • 小鳥公園
  • ハチミツ
  • 朝寝ぼう
  • 17の月
  • キラキラ
  • 愛だけは
  • エナジー
  • 明日の歌
  • れんげ畑
  • バスタブ
  • トンネル
  • サイダー
  • 大切な人
  • シアワセ
  • キスの息
  • どろぼう
  • 心に乙女
  • 二人の形
  • あの子へ
  • 寒いね…
  • プラマイ
  • 夏が帰る
  • milk
  • beat
  • くちびる
  • ぬけがら
  • 愛の世界
  • 冷たい嘘
  • 何時何分
  • ジェット
  • 雨は止む
  • 線香花火
  • 大切な今
  • 染まる夢
  • えりあし
  • ロージー
  • 4月の雨
  • 好き嫌い
  • 蝶々結び

長さ5のタイトル

  • かけらの心
  • シャッター
  • 深海冷蔵庫
  • 愛のしぐさ
  • 恋ひ明かす
  • 海の終わり
  • カブトムシ
  • 赤いランプ
  • あなたの唄
  • 蝶の羽飾り
  • 恋堕ちる時
  • ナキ・ムシ
  • すべての夜
  • 夢のダンス
  • ハルとアキ
  • ウミウサギ
  • 嘆きのキス
  • あの子の夢
  • 前ならえ。
  • 彼の落書き
  • なんて一日
  • 夢見る隙間
  • キスが巡る
  • ドライヤー
  • 水玉シャツ

長さ6のタイトル

  • さよなランド
  • テレビゲーム
  • 透明ドロップ
  • 未来を拾いに
  • 恋をしたのは
  • ずっと近くに
  • シーソーの海
  • カケラを残す
  • 戻れない明日
  • Yellow
  • アンドロメダ
  • 星のない世界
  • 最後の夏休み
  • キョウモハレ
  • ふたつの頬花
  • ふれていたい
  • ビードロの夜
  • 鳩になりたい
  • 親指の使い方
  • キスする前に
  • ハレーション
  • ポニーテール
  • クローゼット
  • ひとりよがり
  • クラスメイト
  • 向かいあわせ
  • あなたと握手
  • 夏にマフラー
  • 今度までには
  • 白い服黒い服
  • こんぺいとう

長さ7のタイトル

  • 終わらない日々
  • おやすみなさい
  • あたしの向こう
  • ゴーゴーマシン
  • あなたを連れて
  • その目に映して
  • KissHug
  • 水とシャンパ
  • いつもあたしは
  • 恋愛ジャンキー
  • オレンジな満月
  • ボーイフレンド
  • Smooch!
  • 何処へでも行く
  • キスでおこして

長さ8のタイトル

長さ9のタイトル

  • 帽子と水着と水平線
  • September
  • ひまわりになったら
  • 恋のスーパーボール
  • 明日もいつも通りに
  • mix juice
  • 気付かれないように

長さ10のタイトル

  • Loveletter
  • 雨踏むオーバーオール
  • 密かなさよならの仕方

長さ11のタイトル

  • more & more

長さ12のタイトル

  • アイツを振り向かせる方法
  • 相合傘 (汗かきMix)

長さ13のタイトル

  • Power of Love
  • You & Me both

長さ15のタイトル

  • イジワルな天使よ 世界を笑え!

長さ16のタイトル

  • I'm feeling blue

長さ17のタイトル

  • be master of life

長さ22のタイトル

  • Do you think about me?

感覚的にmilkは3文字だろって感じなので, 3文字タイトルはもうちょっと多いかもしれない. Akaなんて2文字だし, Smooch!とかスムーチで4文字にしてもいい気がする. ここの処理面倒だったのでやらずじまい. こういうのうまく変換するアルゴリズムみたいなのあるんですかね?

まとめ

2文字と3文字のタイトルは多い. あとaikoはいいぞ.

予告

予告が11/29発売!11/28フラ毛だからみんな買ってね.