pixivウィンターインターンに参加してきた!

はじめに

pixivさんの2日間のウィンターインターンに参加させていただいたので
体験記をまとめようと思います!

recruit.pixiv.net

どうして応募したの?

応募したきっかけは、、、

このようなツイートが回ってきて、、、

・あのピクシブか!!!

・しかもハッカソン!!!

・めちゃめちゃ楽しそう!!!

とりあえず応募してみよう!

っていうような感じで、
ダメもとでも応募しないと合格可能性は0%だなって思ったので光の速さで応募しました!

選考フロー

選考の方法としては書類選考・GitHub選考があって、当時はgithubに見せれるコードがなかったので書類選考を選びました。

そして2,3日後に書類選考の合格をいただき面接を受けに行きました。聞かれたこととしては
・どうして応募したんですか?
・なんでプログラミングやろうと思ったんですか?
とかだったと思います。

とまあ、そんなこんなで面接が一段落したところで突然

面接官・・・「あ、そういえばコーディングのテストやるから」

面接官・・・「問題これね、ハイッ」

面接官・・・「答えをこのホワイトボードに書きながら説明してください、ではどうぞっ!」

僕・・・「(あれ、コーディングテストするなんて言ってたっけ、、、やばい、、、)」

みたいな感じで相当焦りました笑

ただ、面接の雰囲気は割と和やかな感じでおなわれていたので、こんな感じのメソッドあったとおもうんですよね〜みたいな感じで話しながらゆっくり書いていきました。多分10分〜15分くらいでやったと思います。
言語指定は特になかったので僕はrubyで書きました。

ちょっと裏話をすると、ちょうど面接の3日前くらいに兢プロの簡単なやつ問題を解いててそのときにrubyのいろいろなメソッドとかの勉強をしていたので解けたみたいなところあります

それがなかったら多分頭真っ白になって死んでたw

そして面接が終わり、、、

2週間後くらいになんと、合格 の連絡をいただきました!!!

めちゃくちゃ嬉しかったですw1日中飛び跳ねてました(割とマジですw)

2日間でやったこと

2日間でやったこととしては最初にも少し触れましたがハッカソンです。

「あなたの考える最高のpixivを開発(つく)れ!」

というテーマのもと1、2人に1人のピクシブのメンターさんについていただき2日間で作品を作り上げました。
また、それぞれにユーザー検索・イラスト検索・ランキング検索等々ができる、ピクシブAPIを提供していただきそれをもとにコーディングを行うような形でした。

1日目

それぞれの参加者の自己紹介とか今回のハッカソンのテーマを改めて伝えられ、各自ハックスタート! f:id:takehann:20181221003105j:plain 僕には@runbaさんがメンターとしてついてくださりました。
@runbaさんとの自己紹介も終わり、今回作るものに関して決めていきました。今回のインターンにするにあたって軽くどんなものを作るか決めていたのでそれをその案をお話して具体的な内容に落とし込んでいきました。
とても拙い言葉でしか自分のやりたいことを伝えられなかったのですが、@runbaさんがいい感じに僕のやりたいことを深掘りしてくださったので、かなり具体的に構想がたちました。

(ここ最近エンジニアはコーディングスキルだけじゃなくてお客さんからニーズを聞き出すことや、感じ取ること、同じチームの人とどのようにコミュニケーションするかというのもとても大事だと感じていたので、コーディングだけじゃなくて対人のコミュニケーションスキルもプロってすごいなって感じてました。)結局コミュ力大事w

とまあ、そんな感じで構想は立ったものの僕の最初の予定では、railsを使って頑張る気満々だったのですが、APIがあることを知らされ、

個人的にも、、、「あれ、バックエンドいらなくね?」ってなり、@runbaさんが「言語どうする?react勉強してるって言ってたしreactにする?」と言ってくださったので急遽reactで開発を行うことになりましたw
(ちなみに僕のreactの知識量はというと、、、軽いコピペアプリを2,3個作っただけでした。stateとpropsの違いもよくわかっていませんでした。わかってるつもりではいた

まあ、なんとかなるだろうと思ってやってみたいいものの自分でもびっくりするぐらい実装ができず、永遠と@runbaさんに聞きまくってましたw
結局1日目でできたのは大枠のベースとなる部分だけでした💦

2日目

前日朝の5時位までデザインの修正をしていたので睡魔やばかったですが、なんとか起きて2日目にむかいました(ハッカソンあるあるだと思いたいw)
2日目は1日目でできたベースのコードを動的に変化さられるように修正する調整と発表の準備をしていました。
発表の準備のときもここをこういうふうにしたら伝わるよ!であったり、こんなふうに伝えたほうがいいんじゃないというような感じで発表についてもいろいろ教えてもらいました! ただ、コーディングにかなり時間を取られてしまっていたので発表の準備はちゃんとできませんでした。
ハッカソンは発表がとても大事とわかっていながらも、ちゃんと時間が取れなかったところは残念、、、次からはもっと時間に余裕を持って発表準備できればと思いました。

作ったもの

作ったものはボカロの曲を聞きながらその曲に紐づいたイラストを一緒に流すことのできるようなものを作りました。
なんでこのようなものを作ったのかというと僕自身ボカロがかなり好きで暇な時はボカロを聞くことが多いのですが、その時曲と一緒にイラストが流れてくる物があってそれを見たときにイラストレーターさんの世界観を感じられて とてもエモい感じになったのでそれだけに特化したような物があればいいなと思ったのでこのようなものを作りました。

個人的にはかなり満足の行くものができました😆

発表!!!

発表時間は10分間で、評価基準は
・完成度の高さ
・使いやすさ
の2点で評価されました。
発表は案の定ガチガチに緊張したのですが最低限伝えたいことは伝えられたかなって感じです。

僕の発表は割と最初の方だったので別の参加者さんの発表はかなり気楽に見れたのですが参加者皆さんかなりレベル高くてそれぞれのクオリティが2日間で作った制作物のクオリティじゃなかったです笑

そして結果発表!!!

残念なことに僕は賞を受賞できませんでした、、、

残念!

優勝したのはぷらすくん!
ぷらすくんの作品は無限にイラストを見続けられるものを作っていました。
機能としてはとてもシンプルなものでしたが、無限にイラストを出現させるアルゴリズムや、洗練されたUIには脱帽でした、、、 マジですごかったし、ああいうサービスあったらかなり面白そうだなってまじで思いました。

まとめ

~技術面だと~
初めて0からreactのプロダクト作ったのが鬼ほど難しかった💦
でも、この2日間のインターンでなんとなくふわふわしてた概念がしっかりつながっていく感覚があってかなりスッキリしました!
メンターをしていただいた@runbaさんには感謝してもしきれませんm(__)m

~会社の雰囲気~
社員の皆さんどうしでの呼び方が常にニックネームで呼んでいたり、昼食では技術の話や、ぶっちゃけトークがあったりと、とてもわきあいあいと2日間すごさせてもらいました! 他にもCTOの方のお話も聞かせていただけてトップの方がどんなマインドでお仕事をされているのかも少しだけですが、わかったところも良かったです!

最後に

最後の終わったあとの懇親会で寿司とか食べながら f:id:takehann:20181220050444j:plain
プログラミング言語かるたをみんなでやりましたw

初見のプログラミング言語だらけで僕は1枚も取れませんでしたが、いろんな言語知れてそれはそれで面白かったですw
(ほんとに技術が好きなんだなって一人で再確認しました笑)

undefined method `map' for "translation missing: ja.date.order":String Did you mean? tapにはまった話

datetime_select
を使おうとしてハマりました

エラー文

f:id:takehann:20180930181101p:plain
エラーは

i18nの 「ja.date.order」 がないよっていうエラー

ってことで

config/locales/ja.ymlに、、、

ja:
  date:
    formats:
      default: "%Y/%m/%d"
      short: "%m/%d"
      long: "%Y年%m月%d日(%a)"

    day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日]
    abbr_day_names: [日, 月, 火, 水, 木, 金, 土]

    month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
    abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]

    order:
      - :year
      - :month
      - :day

  time:
    formats:
      default: "%Y/%m/%d %H:%M:%S"
      short: "%y/%m/%d %H:%M"
      long: "%Y年%m月%d日(%a) %H時%M分%S秒 %Z"
    am: "午前"
    pm: "午後"

をつければ解決する!

Unable to autoload constant ****, expected****to define itにはまった話

先日「Unable to autoload constant ****, expected****to define it」というエラーに初めて出逢いまして、、、

class Admin::WomanController < Admin::BaseController
  def index
    @women = Woman.all
  end
  def new
    @woman = Woman.new
  end
end

こんなな感じのコードだったのですがどこが悪かったかというと、、、

class Admin::WomanController < Admin::BaseController

修正前↑

class Admin::WomenController < Admin::BaseController

修正後↑
どこが変わったかといえば、、、

woman→women

と、今回はコントローラーを自分で作ったのでこんなことになっていたそうです笑
以上!

参考記事

RailsでLoadError: Unable to autoload constantの原因 - おけらのブログ++

ol タグの数字がスマホだと消えるバグ

olタグの数字がスマホの実機で見ると消えるバグの修正方法
olタグをそのままつけると実機だと表示されなくなる
f:id:takehann:20180827154841p:plain
そんな時はつけてるクラスに

ol li  {
  display: inline-block;
}

を付け加えることで f:id:takehann:20180827154849p:plain しっかりと数字が表示される

bootstrapハンバーガーメニュー 以外を押すとハンバーガーメニューが閉じる

bootstrapのハンバーガーメニュー 以外を押すと自動でハンバーガーメニュー を閉じる方法   の、備忘録、、、、、

:javascript
  $(document).bind('click', function(e) {
    var opened = $('.navbar-collapse').hasClass('collapse in');
    if ( opened === true ) {
      $('.navbar-collapse').collapse('hide');
    }
  });

を追加するとハンバーガーメニュー を自動で閉じられる

Rails link_toでのurl指定で「'」にやられた話

link_toでidを渡す

=link_to"詳細", '/tweets/#{tweet.id}', method: :get

という風に渡すと、、、   f:id:takehann:20180807230711p:plain
となってしまいidをちゃんと渡せない

=link_to"詳細", "/tweets/#{tweet.id}", method: :get

urlの指定をシングルクォーテーションではなくダブルクォーテーションで囲むと   f:id:takehann:20180807231136p:plain
ちゃんと行った、、、   昔シングルクォーテーションじゃないとダメみたいなコードあったと思うんだけど忘れたので思い出したらまた書きます^^;