りゅうくんの備忘録

徒然なるままに思ったことを書くところ

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使う祭迷わないように備忘

手順

  1. ifconfig |grep inet とか叩いて雑に自分のipv4アドレス調べる
  2. .envに色々書く
  3. サーバー再起動
  4. 同一LAN内からスマホでアクセス

ちょっと詳細

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

沖縄のペンション借りてハッカソンしたよ

ハッカソンしてきました



こんな感じのところで2日間アプリケーションを開発してました。がしゃがしゃーーーっと。


すごい綺麗めなところで歩いて10秒で海みたいな感じでした。散歩捗るめっちゃ

いつもと違う場所で開発するのは程よく刺激になって、開発のモチベーションは上場な感じでした。あと沖縄はまだ夏です。

どんなことしたか

アイディアは@puremoru0315さんのカフェなどが小物などを売る際、仕入れ先とのマッチングを支援するアプリケーションみたいな感じでした。多分そんな感じです

開発手法はissue最初にめっちゃ立ち上げて、それをペアプロベースでガンガン解消していく感じ。初めてのペアプロでした◎

技術選定は、サーバーサイドがRuby on Railsが決まってるくらいで、競合とかちゃんと回避して扱えるならgem好きなの入れていいし、フロント何使ってもいいみたいなラフな感じででした!(今思うとElmとかTypeScriptチャンスだった)

僕が何したか

僕がいる間に僕のチームでやったのは、

  • アプリケーションのログイン機能
  • 大まかなチャット機能
だいたいこんな感じでした。


チームメンバーさんの熱いプッシュにより、ログイン機能はgemのdeviseで実装することに。
さすがRailsとdeviseって感じで、色々よしなにやってくれすぎて怖い…って気持ちでした。ログインのロジックとか生でcontrollerに実装したい気持ちもあった!!けどそれはそれ。devise自体はちゃんと扱えれば便利そうだなぁって感想です。


めっちゃ個人的に頑張ったのがチャットの機能。

そもそもポーリングで実装するかWebSocketで実装するかみたいなとこから悩んでて

ポーリング => CORSが回避できない、回避したらCSRFで積みそう
WebSocket => 知見がない

みたいな感じだったのでとりあえず2通りがしゃがしゃ作ってみて、最終的にはWebSocketで非同期な感じで実装しました。

徹夜で実装しててWebSocket完全に理解したときの僕の様子です

ググったらCoffeeScriptの実装しか出てこなくて、読むのに時間かかったり、そもそもWebSocketとは🤔みたいなとこからだったので、時間はかかったんですがチャット機能うまいこと実装できてよかった…

他にも知見になったことがあって、git rebaseまわりの事知れたのがよかったですね。軽率にmargeしちゃダメだったんだ…えぇ…って気持ちになってました。

その他色々

飯がうまかったです。

ボードゲームがめっちゃたのしかったです

またこういう場所でわいわいがやがやコードを書いていきたいなーって思います。

今まで何も考えず.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に出た学生さんのお話を聞いたのがきっかけです。

当日までにしたこと

  • Rubyを1から => チームでRubyを使うってなったので
  • shinatraの基礎
  • ざっくりnginx
  • 本読んだ => Webを支える技術,プロになるためのWeb技術入門,この辺

ぶっちゃけ全然足りませんでした。SQL力が全然々々足りなかった。未熟...

当日したこと

  • N+1解消しようとした
  • SELECT * FROM みたいなSQLの分の*を取りえず置き換えようとした
  • ローカルでも動く環境を整えようとした(出来なかった)

これくらいしか意識してできなかった...マジで悔しい....
H2Oぶっちゃけ知らなかったし、サーバーの3台あって、どういう配置にしたら効率的かみたいな話をできなかったのでTHE無力でした。しんどい。
鈴木さんにうちかてなかったあああああああああ

来年に向けて

  • 言語を絞る。これならいけるってやつを作る
  • 基礎的なところしっかりさせる

来年も絶対ISUCON出るしリベンジしてやる!!!!

TeamLabのインターンに参加してきました 

T社のインターンに参加してきました

borderless.teamlab.art
planets.teamlab.art
こんなことしてる会社さんにインターンにいって来ました。
初一人東京!!!初一人飛行機!!!生まれて初めてのインターン!!!!って感じでした。

ぶっちゃけ行く前はちょービビってたよね。
こう、学歴の差とかそういうアレとか、初めてのことが多すぎて。

インターンで何したの

僕が配属されたチームでは、ECサイトをゼロから作った。他のこともやった。
僕がバックエンド側(DBのお世話とかAPIの作成)をやって、もう一人の方にフロント周りをやってもらった

色々あって、APIRuby on Railsで、DBはMySQLを使うことに決定、因みにフロントはVue.jsでした。

頑張って作ったんだよ

ぼくがRuby on Railsを触り始めたのが先月くらいだったので、知識が浅いのもあり作業スピードはあんまし早くなかったです。


個人的にRails書いてて詰まった点

  • 既存テーブルに新しいcolumnを追加する時
  • 変数等の命名
  • 決済の実装

変数名は特に今後気をつけようと思っていて、下手な名前つけちゃうと自分でも何してるコードなのかわかんなくなっちゃうから。
決済機能は最終的に外部のAPIを使ったんですが、結構pay.jp使いやすかったです。

それ以外で困った点

  • Dockerの知識不足
  • API,DBの設計ミス
  • AWS周りの知識
  • Amazon Linux (CentOS)
  • 僕の机のディスプレイがDVIケーブルしかなくて使えなかった
  • メンターさんと物理的に距離が遠い
  • 誰かと一緒にものを作る時のコミュニケーション
  • 昼飯代が高すぎる

困った点の前半4つは結構解消できて、割と知見になったのでよかった。
東京マジで昼ごはん外食してるとお金が爆速でなくなるので怖いなぁって思いました。

得られた知見とか

  • Ruby on Railsの知識 => RESTFulAPI を1から作れるようになった
  • AWSのEC2のある程度の使い方
  • Dockerfile , docker-compose.yml , そこそこかけるようになった

=> Ruby on Rails && MySQLをDockerで立てて最初から連携させとくくらいは行ける!
Railsも総プレイ時間が180時間くらいは行ったので、そこそこ知見溜まって来たのかなぁなんて思います(まだまだ未熟ですが)

最後にはAPIをEC2でデプロイもできたし、フロント側とも連携が取れて、個人的には成功だったので満足度高いです!!!

その他雑に

多人数で1つのものを作る時、どんなにコミュニケーションに気をつけていても、伝達ミスや、解釈違いが起こるものなんだなぁって思いました。
設計の時とか、お互いに相違が生まれないようにがんばる(もし次があったら)

個人的には他のインターン生と喋るのも結構楽しくって、唐揚げをロボットアームで掴む研究してる人とか、Elm布教マンとか,プロ並みカメラマンとか、他にもすごい人ばっかでした。
インターン生の懇親会とか披露できる芸(記号コーディングとか)もっててよかったなぁって思いました。話すきっかけを作るのに黒魔術コーディングは効果的だからみんなやろうぜ。

欲を言えばなんですが、インターン先でコードレビューまであったら嬉しかったなぁって思います。(絶対いっぱい突っ込まれるけど)

今回作ったECサイト、目標の日までに完成させるのを優先して、セキュリティ的にがばがばな部分が多々あるので、これから開発をして行くときはある程度セキュリティにも配慮しながら作っていきたいなーって思います。

まとめ

  • パッケージチームのインターン個人的にはとてもよかった。計画力、現状把握とか得意な人は好きなこと学びながらお金もらえるのでおすすめ。
  • 社風を知るのにはとても効果的。他のインターンにも参加してみたいと思った。
  • 沖縄にいたら得られないような知見が溜まった。外に行ってインプットするのとてもいい。

ブログに乗せてもいいよとのことだったのでコードです https://github.com/s17001/teamLabProject
強いエンジニアになりてぇ