圧倒的猛者に一歩近づいた話
pixiv spring boot campに参加してきた
あーんなことやこーんなことがあってpixiv spring boot campに受かって参加してきたお話です
余計な話
これは個人的にエモい話なのですが、
これが10月の僕です
今度東京行くときはpixivに行くという気持ち
— りゅう (@Ryu1__1uyR) 2018年10月22日
これが12月の僕で
ピ社のインターンダメでした!!!!!
— りゅう (@Ryu1__1uyR) 2018年12月7日
これが2月の僕です
ぴ、ぴくしぶさんのインターン受かりました!!!!!!!!
— りゅう (@Ryu1__1uyR) 2019年2月5日
💪💪💪💪💪💪💪
むりりんさんの絵…!!
参加のきっかけ
さぼさんは僕のプログラミングのお師匠さんの一人で、世界に7人いる足を向けて寝れない人間の一人、元々はpixivの社員さんで、憧れているていた+行ってみればのお言葉があった
かるめりくんは別のインターンで出会った強い学生、福岡のpixivでバイトをしているらしく強い、割と仲良くさせてもらっていて、彼に春インターンめっちゃ楽しかったから是非いってみて!!!と言われた、強い(ほんとありがと)
みたいなきっかけがあり、応募しようかなーという感じでした 僕は書類みたいなの書くと弱いほうの人間なのでGitHub選考一択で、割と物を作っているつもりだったけど、不安だったので追いポケモン図鑑などをして応募したよ
確かコースはpixivコースとpixivFANBOXだったはず、面接はオンラインでやりました
コードテストはめっちゃ緊張していたけどどうにか突破できていたらしく、合格メールもらった時はめっちゃくちゃ嬉しかった記憶があります…
(コードテスト、Rubyでかいて!どどん!って言われて言語に慣れておらず書き方があっあっってなりながら書いた…)
インターンでやったこと
pixiv百科事典を色々改修した!!!!
百科事典、なかなかこれがすごくて、
作られた時期が結構古いので…(察して)
秘伝のたれっぽいおれおれフレームワーク
こんな感じで、僕はそこで
Whoops導入してエラーハンドリングの仕組みを統合した+自作エラー画面の撤廃
型を付けたい箇所をPHP7っぽくリファクタリング
みたいなことをしました
プルリクは9個くらいマージされてて、合計で11とかプルリクを8日間のうちに送れたのはとても良かった!!!(結構な量をコードレビューしてくれたたっどさんはほんと感謝)
初日で1つプルリクを作れたのは今思うとやばいスピード感
いくつかは僕の実装で実環境にマージされたやつもあって、百科事典に僕のエキスを流すことができてとてもうれしい…
学び
山ほどあるが全部書くと経典みたいになるので、
- 読んでもらうためのプルリクの作り方+上手なcommitの作り方(rebaseやresetとかその他色々)
- PHPの細かい仕様
- コードの副作用と防衛的なプログラムの書き方
- フレームワークの設計
- オブジェクト指向での開発とは
- ツール(terminalとかエディタとか)をフル活用する方法
軽く書くとこんな感じでメンターのたっどさんからは手堅く堅実で今後も廃れない技術を教えてもらったのは神だった
最終日のプレゼン、今までLTで培ってきた力をフルに出せた気がしていて、10分のプレゼンで10分ジャストでキメて、たっどさんやbashさんによかったって言ってもらえてめっちゃうれしかった…
業務外の小話とか
はかたしさんにボドゲを誘ってもらえたのめちゃめちゃ嬉しくて、そこでアトムさんとかめさんと一緒にゲームできたの最高だった、
ナショナルエコノミーしてきたんですが!!!(初心者が多かったので)1位取れました!!!
そういやtechsalonでゲーム内定の話してたなー(ちら
たっどさんとラムダ式とかSKIとかチャーチ数とかで盛り上がったの本当に楽しかったので、こういうマニアックな話ができる環境はとても良いなぁと思った、話し足りないのでまた話に行きたい…
昼飯の時も結構えもくて、げたさんやいろんな方に人生相談をしたりしてました!!(暇なら眺めてみてね)
pixiv techsalonにも参加した
pixiv techsalonっていう完全招待制のイベントにも参加させてもらった。神か?
techsalonで配られてたサイリウムです
様子です
今起こったことを話すぜ!CTOの基調講演が終わったと思いきやサイリウムが一斉に振られ、会場内ではスマブラ大会が始まりDJが流す「青空のラプソディ」に合わせてバ美肉がスクリーンで踊ってる!何を言ってるのか俺にもわからねえ! #pixivTECHSALON pic.twitter.com/rjAhMAYd41
— 東京カルチャーカルチャー (@tokyoculture2) 2019年3月5日
資料は公開されているらしいので是非みてみてほしい!!!! inside.pixiv.blog
techsalon、どの発表もめちゃくちゃ良かった
その中ですっっっっっごい共感したのがこの発表で
大多数のメンバーがコードを書けるチームにおけるエンジニアの役割 / pixiv TECH SALON - Speaker Deck
37,38あたりのスライドの内容はマジで意識していきたいなぁという感想です
webglでvjをずっと後ろの方でされてて、めっちゃ興味持ったので触ってみたいなぁというお気持ちが湧きました
techsalon懇親会の時とか、推している存在のきりみんちゃんやすのーまんさんなどに出会えたのもとてもとても良かった…神…
他にもツイッター上でしか知らなかった御方々とお話しできたのすごくよかったです
ぷらすくん話しかけてくれてほんとありがとう…緊張してうまく喋れなかったの申し訳ねぇ…
その他のお話し
インターン懇親会の鍋ですおいしかった
懇親会後に、会社に戻ってさらに飲み直したのがめっちゃ良かった楽しかった… 梅酒をウォッカで割ると美味しい知見をえた
僕もうれしい…ここにりゅうくんがいるのうれしい☺️のりおさん太ってる😂おつかれさまです! https://t.co/S6IdM9S3i2
— さぼ@ギークハウス沖縄 👨💻☕️🎹🎧🐈 (@saboyutaka) 2019年2月27日
pixiv、インターンの選考、話によると記号コーディングで興味を持ってもらったみたいで、芸はどこで役にたつかわからないなぁと思いました。趣味に救われた…
終わりに
8日間最高の経験をさせてもらいました。 インターンの内容、業務などももちろん最高だったのですが、憧れていた人や、尊敬できる人との出会いって面でもめちゃめちゃに最高でした
プログラマーになりたいなぁみたいなお気持ちがより一層強くなったので、ほどほどに頑張っていこうと思います!!!
この春、僕も少しは、圧倒的猛者に近づけた!!!!と思う!!!!!!!!
pixivでのインターン中、いろんな方に人生相談をした話
pixivでのインターン中、いろんな方に人生相談をした話
個人的に気になってたことや質問などをいっぱいしましたまとめ お昼ご飯のときにげたさんとお話ししたり、就業時間後にいろんな方にお話を聞いたり、色々ためになったので備忘録もかねて書きます
好きなものと仕事に使うものの話
僕の考え、悩み的な
僕が興味のあり触りたい技術と実際お金になり稼げる技術の乖離
げたさんの考え
人間は年齢を重ねていくと、生存時間がだんだん減ってくるので、相対的に時間の価値が上がっていく そのために、最短の時間で最高のパフォーマンスや最も成長できる手法を取るようになる(らしい)
こういう資本主義的な考え方になるにあたって、そうじゃない人もいる
そうじゃない人 => ( 好きなことに無限にコミットしていく人 || 興味ある1つのことを無限に掘り下げていく人 ) => 時間 !== お金 な間隔の人々
効率が悪いように思えるけれど、実は全然悪いことではない(劣っているわけではない)。
好きなことを無限に極めていく過程で得られる知見や新たに生まれる視点はかけがいの無いものだし、その先の人生で全くの無価値にはならない 例 : 昔Javaが好きで自作のフレームワークを作成したことがあった、その経験からRailsをあまり知らなかったけど、フレームワーク自体のバグに気が付いてfixみたいな体験談も聞かせてくれた
感想
(想像)まっすぐ好きなことに突き進んでいくのもいいけど、勧めていく上で、自分自身のスタンスや哲学を自身で把握しておけるととても良さそう的な裏がありそう
僕自身の価値観、考え方、なんでコードを書くのが楽しいのか、理解不能なコードに魅力を感じるのか、などを深掘りしていくと自分自身の理解に繋がりそう(自己分析的な)
スキルセットのお話
僕の考え、悩み的な
自分自身のスキルは、あまり仕事に行かせるかわからない、スキルセットとpixivの使っている技術と離れている
げたさんの考え
自分自身のスキルが会社にマッチしてないと言って悩むのはめちゃくちゃ杞憂なこと。 その人を会社が必要か考えるのは会社なので、雇われる側はあまり悩まんほうがいい(新卒なら特に)
おれきゅーさんの考え方
Javaがめちゃめちゃ好きだったかたがいて(お名前聞きそびれてしまった…)、
(おれきゅーさん)https://twitter.com/orekyuu!!(後日しっかりお名前を聞いた)曰く、それこそ今までpixivに今までJavaのプロダクトは少なかったけど、Javaがめちゃくそ好きって推してたら入社できた
その上自分でJavaのプロダクトを立ち上げて無双したらしい最強だ
フレームワークのお話
僕の質問
今からJS書くならTSで矯正とかしていったほうが役に立ったりするのか気になった
げたさんの考え
そこまでする必要はない。 生JS、TSそれぞれにそれぞれのいいところがあるので、これ一択!みたいなのは野暮 (JSなら開発スピードの速さ,TSならテストのしやすさとか?)
言語、コードを書くことは何か物を作るための手段であるために、その過程は過程なので個人ならぶっちゃけ好み 技術選定は、人間やチームの規模で最適解が変わってくるので、焦りすぎてあれもこれもになるのはしんどい
でもそこで、何か1つの技術を深いところまで押さえておくと他のフレームワークや言語を使った時に強くてニューゲームできるというのはよく聞く話だけどほんと
学歴について
僕
結構学歴不安
社員さんたち
むしろあんまり気にしたことがなかった。そもそも僕も専門学校いってたけど、特に問題がなさすぎて別になんも気にならなかったのでわからない… 僕は普通に大学行ってたけど、それでもあまり周りの学歴とかは気にならなかった
感想
プログラミングを扱う会社ではこうなのか🤔わからんけど…実力社会的な感じなのかなぁと思った、僕が過剰に気にしすぎているところはあったかもしれない
きりみんちゃんとも学歴の話をした!
pixiv TECH SALONできりみんちゃんとお会いした!!!!めちゃくちゃうれしかった… その時にも色々相談させていただいた!!!ありがてぇ…
新卒の時は結構苦労もしたらしい、でも中途など、社会に入ってからは実力を見られるようになってからが本番。
是非とも早くのし上がってくるといいよ!!
感想
- その時お酒も入っていて、個人的に憧れてたきりみんちゃんとお話もできてめちゃくちゃ高まっていたので、まともに会話できていたか不安だけど、 めちゃくちゃえもくてよかった。
- 言い訳なのですが、きりみんちゃんとお話しした時のメモを酔っていて詳しく残していなくて、大雑把に記憶でしか言ってくれたこととかをかけなくて申し訳ない…
- めちゃめちゃ嬉しい言葉ももらったので、是非ともどしどしのし上がっていきたいなって気持ちにめっちゃなった!!!!!FOO
後日たっどさんにも聞いてみた
pixivのインターン中にメンターさんやってもらってめちゃくちゃお世話になったtadsanにもお話をふっかけてみましたというあれこれ!!その日は言語学(自然言語の方言とかルーツの話)で盛り上がって最高に楽しかった…
ご意見
もし、アメリカにいくなどの選択肢を残しておくみたいな意味合いであれば、学歴があったほうが就労ビザなどは出やすいので、自分がアメリカに行く可能性を残す意味合いでは学歴はあるに越したことはない。 しかしながら、専門=>通常の就職で言って日本に留まりがち、みたいな文脈で行くならば、極論で学校をやめて就職できるならしてしまうってのも間違ってはいない 自分のライフプランみたいなのと相談みたいなところはありそう
感想
- そもそも海外をみてなかったので結構面白い良い意見だった。(前に怠惰な人がその話をしてくれた気もする)
- 自分のこの先の立ち回りを全て考慮して大学に行くかどうかの選択をするというのは結構難しい所だなぁと思っていて、自分の場合は大学か、専門かどっち行くかみたいなのを考えてた時にはこんな考えは毛頭なかった。
- 自分の可能性みたいなのを潰してしまう、となると結構勿体無いような気もしているけど、アメリカ行くの?ってなると正直わからない…となるので、割と決めあぐねるというのが現状。
- 自分の中にこの考え方を実装できたってのが一番大きいかもしれない
- またご飯いきたい!!!!!!!
全体を通しての感想
- 結構僕の場合は悩みからか自己評価が低くなりがち => 全然杞憂なこと多い
- 好きなことにコミットするのは全然いいこと、経験も生きてくる
- これからも自分が面白いと思ったことをどんどん布教していきたいと思った
インターンの体験記はまた後日別ブログで… => まだ全然かけてない…もう書いて出してる人いるのに…
いろんな人と喋れて意見をもらえて、激強エンジニア目指してやっていきたいお気持ちが強くなった..!!!!!
やっていきたい生存戦略的な
エンジニアとしてこれからいきていきたいので色々極小の脳みそで考えるんですが、考えまとめるために雑メモ
技術の世界で生きていくには流行りの技術の並みに乗っかるか、波を作るか
波を作るのは超天才めちゃすご究極のエリートたちで、波を作る側になるのは結構鬼門かもしれない
なので僕みたいな平凡マンは最速で波に乗っかって行かないと淘汰されちゃう。波に乗っかるの遅すぎても淘汰される。
自分自身のスキル、軸が複数あるととてもいい。
片方の軸が死んだときにもう片方の軸にシフトできる。
両軸が生きてる状態だと、スキルの掛け算ができるので重宝されるような気がする。
なので1つの技術とか流行りのフレームワークに依存しすぎると危険。
広く浅くではないけど、ある程度できるもの複数ある&&適応能力高めな感じだと生き残れるかもしれない
puma-devでxip.io使うときのメモ
xip.io使う祭迷わないように備忘
手順
ちょっと詳細
puma-dev使ってるやつの.envに
APP_URL=https://example.172.0.0.1.xip.io APP_DOMAIN=example.172.0.0.1.xip.io SESSION_DOMAIN=.example.172.0.0.1.xip.io #アドレスは調べた自身のアドレスいれる
.env書き換えたらサーバーを再起動
ちなみにテザリングでもいけたので結構便利
参考
https://qiita.com/pi_chan/items/6860b2520ed1089e7741
https://github.com/puma/puma-dev#xipio
沖縄のペンション借りてハッカソンしたよ
ハッカソンしてきました
今から開発!!!!! pic.twitter.com/57QaWHBqV3
— りゅう (@Ryu1__1uyR) 2018年11月23日
やっていき申!!!!!! pic.twitter.com/Cx7oIJEhq3
— りゅう (@Ryu1__1uyR) 2018年11月23日
こんな感じのところで2日間アプリケーションを開発してました。がしゃがしゃーーーっと。
β版ハッカソン2日目!
— CODE BASE@プログラミング教室5期生募集中 (@CODEBASE098) 2018年11月23日
今日は恩納村のコンドミニアムをお借りして開発合宿を行っています!
ビーチまで徒歩1分とリゾートな環境です🏝
楽しみながら開発しましょー😁#β版ハッカソン#開発合宿 pic.twitter.com/fxKLbEyRJE
すごい綺麗めなところで歩いて10秒で海みたいな感じでした。散歩捗るめっちゃ
海です!!!!! pic.twitter.com/59iC7Q3DAk
— りゅう (@Ryu1__1uyR) 2018年11月23日
いつもと違う場所で開発するのは程よく刺激になって、開発のモチベーションは上場な感じでした。あと沖縄はまだ夏です。
どんなことしたか
アイディアは@puremoru0315さんのカフェなどが小物などを売る際、仕入れ先とのマッチングを支援するアプリケーションみたいな感じでした。多分そんな感じです開発手法はissue最初にめっちゃ立ち上げて、それをペアプロベースでガンガン解消していく感じ。初めてのペアプロでした◎
技術選定は、サーバーサイドがRuby on Railsが決まってるくらいで、競合とかちゃんと回避して扱えるならgem好きなの入れていいし、フロント何使ってもいいみたいなラフな感じででした!(今思うとElmとかTypeScriptチャンスだった)
僕が何したか
僕がいる間に僕のチームでやったのは、
- アプリケーションのログイン機能
- 大まかなチャット機能
チームメンバーさんの熱いプッシュにより、ログイン機能はgemのdeviseで実装することに。
さすがRailsとdeviseって感じで、色々よしなにやってくれすぎて怖い…って気持ちでした。ログインのロジックとか生でcontrollerに実装したい気持ちもあった!!けどそれはそれ。devise自体はちゃんと扱えれば便利そうだなぁって感想です。
めっちゃ個人的に頑張ったのがチャットの機能。
そもそもポーリングで実装するかWebSocketで実装するかみたいなとこから悩んでて
ポーリング => CORSが回避できない、回避したらCSRFで積みそう
WebSocket => 知見がない
みたいな感じだったのでとりあえず2通りがしゃがしゃ作ってみて、最終的にはWebSocketで非同期な感じで実装しました。
徹夜で実装しててWebSocket完全に理解したときの僕の様子です
チャット機能、websocketでじっそうできた。dbかませば非同期通信になるぞぞぞぞぞぞぞぞぉぉxぞおぉぉx
— りゅう (@Ryu1__1uyR) 2018年11月23日
ググったらCoffeeScriptの実装しか出てこなくて、読むのに時間かかったり、そもそもWebSocketとは🤔みたいなとこからだったので、時間はかかったんですがチャット機能うまいこと実装できてよかった…
他にも知見になったことがあって、git rebaseまわりの事知れたのがよかったですね。軽率にmargeしちゃダメだったんだ…えぇ…って気持ちになってました。
その他色々
飯がうまかったです。夜はBBQ!
— CODE BASE@プログラミング教室5期生募集中 (@CODEBASE098) November 23, 2018
開発でお疲れの中、お肉で回復します!
みんな楽しそう😆😆😆#β版ハッカソン#βhackathon#BBQ pic.twitter.com/o1S17FaWy0
お昼ご飯です pic.twitter.com/2i6gZiqtTN
— りゅう (@Ryu1__1uyR) November 23, 2018
ボードゲームがめっちゃたのしかったです
ナショナルエコノミーばりくそ楽しいすぎて欲しくなってくる pic.twitter.com/8sTUEZNZ4B
— りゅう (@Ryu1__1uyR) November 23, 2018
またこういう場所でわいわいがやがやコードを書いていきたいなーって思います。
今まで何も考えず.then使ってたけどよくなかったらしい
知見
- fetchでthenな感じのやつはasync awaitな感じで書くといいらしい
const getFirstUserData = () => { return fetch('/users.json') // ユーザ一覧のJSONを取得 .then(response => response.json()) // パース .then(users => users[0]) // 最初のユーザを取り出す .then(user => fetch(`/users/${user.name}`)) // 指定ユーザのJSONを取得 .then(userResponse => response.json()) // パース } getFirstUserData();
async function getFirstUserData() { const response = await fetch('/users.json') // ユーザ一覧のJSONを取得 const users = await response.json() // パース const user = users[0] // 最初のユーザを取り出す const userResponse = await fetch(`/users/${user.name}`); // 指定ユーザのJSONを取得 const userData = await user.json(); // パース return userData } getFirstUserData();
みたいな書き換えができる
書き換えのメリット
- 可読性の向上
- jsonの例えばusers[0]をみて処理を変える時とか、thenだと面倒くさいコードになりがち
別件
- ===で厳密比較を使っていくとよさそう
1 == '1' // => true 1 === '1' //=> false
ISUCONに出てみた話
ISUCONの予選に出ました
http://isucon.net/archives/52388756.html
初めて出たいなーと思ったのが今年の1月くらいで、okinawa.rbのmeetupで去年ISUCONに出た学生さんのお話を聞いたのがきっかけです。
当日までにしたこと
ぶっちゃけ全然足りませんでした。SQL力が全然々々足りなかった。未熟...
当日したこと
- N+1解消しようとした
- SELECT * FROM みたいなSQLの分の*を取りえず置き換えようとした
- ローカルでも動く環境を整えようとした(出来なかった)
これくらいしか意識してできなかった...マジで悔しい....
H2Oぶっちゃけ知らなかったし、サーバーの3台あって、どういう配置にしたら効率的かみたいな話をできなかったのでTHE無力でした。しんどい。
鈴木さんにうちかてなかったあああああああああ
来年に向けて
- 言語を絞る。これならいけるってやつを作る
- 基礎的なところしっかりさせる
来年も絶対ISUCON出るしリベンジしてやる!!!!