monolog

monora log #=> ものろーぐ

2017年10月の投稿

Wantedly のインターンに参加した

雑記

こんばんは。 最近色々あり、またあったのですが文章にしていなかったために物に残るものがない。

残していきたい/おきたいシリーズです。

Wantedly のサービス自体は比較的前(4年前?)から使っていましたが、まさかインターンに来ることになるとは当時は思ってもいませんでした。 やはり学部3年になると就活の時期ということになるわけで、スカウトを何件か頂いていたうちの1件で実際に人事の方と話させて頂いた上で決めました。

働き方、というよりはそのモチベーションを変えるというところで社会を変えようとしているというのが会社の考え(であると僕は認識しています)で、それは自分の考えとも一致するところがあり、技術的にもそこそこイケているのでは、というところが選択した理由になります。

参加したのは 9/5-22 の平日で、所用の休みを除いた12日でした。(業務委託契約なので実際にはインターンではない)

今夏はフロント/バックエンド/モバイル/機械学習みたいなコース分けがあり、とはいえ別に同じコースだからといって同じ日程であったり同じ人の下であるとは限らないという感じでした。日程も内容もある程度メンターと話し合って決めることができます。

面談で、最近のフロントエンド技術(React使ったSPAみたいなこと)には興味があるみたいな話をしたところ、なぜかバックエンドチームになり Rails を書いていた気がします。ずっとRubyばかり書いてますし、最近のアルバイトでは Rails でアプリケーションを書いていたので、そのあたりが考慮されたのでしょう。ちなみにこの話を当日したところ様々なアレがあり、最終的には最後の週にReact漬けになりました。React難しいね!

雑感

バックエンドというのはいわゆるサーバサイドのアプリケーションですが、私は Wantedly Visit という Wantedly の一番最初からある企業への訪問であったり、そのスカウトであったりというところの改善作業をしていました。 詳細は多分あまり書けないのですが、技術サイドでは BigQuery を初めて触ってクエリが実行されるごとに課金される様子を楽しんだり、そこから集計したデータを使ってごにょごにょしたりしていました。

ただ、やはり大規模 Rails というのはなかなか凄みがあって、様々な趣があり読んでいて面白いなと思いました。 そしてやはり社員の方の地力が強く、様々な点の技術判断というのはなかなかイケていると思っていました。僕が今回実装した部分についても、しっかりとデータに基づいた議論がありとても良かったです。あとは Ruby が好きなのが伝わってくるコードベースで個人的には良さみが深かったのも良かった。

最終週には前述したフロントエンドチームでも少しコードを書かせて頂き、本番へマージされたのはごく一部でしたがアイデアの PoC みたいなことをしていました。UX を良くするためにブラウザのレンダリングパフォーマンスと格闘する経験はなかったので、面白いなと思ったり。

その他

白金台MGビル、始めてきた時に強い既視感があり、Cookpad が昔ここにあったなあという気持ちになった。(フロアは違うらしい) 土地柄、やはり飯が高く1000円スタートみたいなところがあった。様々ある。

インターン期間中に上場があり、パーティーなどがありエモい雰囲気であった。

最近色々な記事がありましたが、残業しているインターンは確かに多いが別に定時に帰ろうが、それより早く帰っても何も言われない感じでした。そもそも業務委託契約なので業務時間も明記されていないし、ちゃんとやることをやればよい。そもそも残業しないと終わらないようなタスクを抱えるのはコミュニケーション/マネジメントの欠落では。 まあ、周りを見ているとこの内容でこの報酬かという気持ちにはなったりした。色々ありましたね。(ネガティブにもポジティブにも / 人事とも話した)

インターン生が多かったので色々話したりした。やはり2, 3社目としてこのインターンに来る人が多いのだなと再認識したりした。そしてやはり世界は狭い。

人事面談が毎週あったのも個人的に良かったポイントで、色々話したり聞いたりできたので、会社についてや、働くということについても色々聞けたのかな、と思う。

総括

新しい技術に触れるというよりは、どちらかというとアイデアで勝負したり、サービスを成長させるためにちゃんと数値を見ながらやる、みたいなところへ注力したインターンでした。 しかし、技術的にもある程度のレベルはしっかりと求められており、それに基づいたやっていきがありとても良かったなと言うのが感想です。 普段使っているサービスの裏側が見られるというのはやはり楽しいですね。

メンターの方との分かりややっていきもとてもあり、タイムリーなところではISUCON7 の予選も突破していたのを観測して、やはり強いなとあらためて思うなどした。

そんなこんなであっという間に過ぎた3週間でした。改めて、Visit のとある組織の皆様、メンターの方、人事の方、ありがとうございました!!!

こんばんは。 最近色々あり、またあったのですが文章にしていなかったために物に残るものがない。 残していきたい/[…]

ISUCON7 予選に参加しました

Infrastructure Programming

チーム「まだチーム名で消耗してるの?」で同期3人 (自分 @kyontan, @hogas, @h-otter) 初参加で2日目でした。学生枠突破ならずでした。

Ruby実装で挑み、最終スコア 38605点@2017-10-22 20:59:30, ベストスコア: 67792点@2017-10-22 20:44:59 でした。 ベストスコアでは予選ラインは超えていたんだなあと思いますが、最終的には伸び悩んだチームも多いようで、結局落ち着くところに落ち着いたのかなと思います。

ソースコードは kyontan/isucon7_qual です。踏み台でやっていた影響でコミッタが僕に見えますが、だいたい僕ではない。

[caption id="attachment_1668" align="aligncenter" width="620"]

ISUCON7 予選での Score / LoadLevel の変化[/caption]

次回も参加したいなという気持ちになってきたので、ひとまずはやったことを記していきます。

実は僕と @hogas は ISUCON6 の夏期講習に出たことがありましたが、そのときには日程等もあり参加しておらずということで、今回が初参加に。 @h-otter というインフラにとても強い同期がいたことや、周囲でも参加する人間が何故か多く、とにかくやっていくしかないという流れに。

チーム名を決めるところで消耗/摩耗し、本番前日までSlackはほとんど流れておらず。前日夜になって僕とか @h-otter がぽちぽち参加記やチューニングできそうなところを貼っていく感じに。

最近、正午より前に起きると早起きしたと言い出す僕が時間に間に合っていたあたりで色々とミスっていたんですが、東京都内の某所で3人で集まってやっていました。

事前にやった

とりあえずグローバルIPを持つ作業用サーバを用意しておいた。Rubyは事前に入れておいて、開始後に MySQL  も入れてスタンドアロンで動くようにした。あとあと @hogas はここでずっと作業してたり、 @h-otter が Prometheus のサーバを立てたりしていた。便利

コードについては GitHub リポジトリを立てて、普通にブランチ切ってやっていた。便利

情報共有は対面だったので、コードスニペット貼れるしリアルタイムで最高な HackMD を例のごとく使っていた。ベンチマーカの結果を全部ペタペタ貼っていたら容量制限に引っかかり、2スレ目、3スレ目が誕生した。HackMDのタイトルは**「ISUCON7 まだチーム名で消耗してるの? 2スレ目」**でした。

やったこと

ミドルウェアより下は正直 @h-otter に丸投げしていたので、アプリケーションより上をぽちぽち見ていました。 インフラについては正直何をしたのかは全容を把握していないですが、初手で nginx や MySQL に基本のチューニングを突っ込み、Prometheus で延々と監視しながらPDCAを回していたっぽい。正しいインフラチューニングや……

言語は僕と @hogas が使い慣れている Ruby を選択しました。正直クエリ弄るぐらいでいいなら Go でもいいよねーって言っていましたが、慣れてるほうが便利でした。Sinatra の文字列には幼馴染のような安心感がある。

僕と @hogas はよしなにアプリケーションコードを読みながら色々した。以下は色々

erb を haml に置き換える / hamlit gem の導入

気持ち+2000点ぐらい

初期実装が erb で、erubis に置き換えるというのも一案ありましたが、行きの車内で「erubis hamlit 速度」などで検索した結果やっぱり hamlit かとなっており、ノータイムで haml に書き換えることを決断しました。 erb2haml とかあったね〜と @hogas と話しながらやってもらった。

以下様子です

http://twitter.com/sukukyon/status/922121692440182785 http://twitter.com/hogextend/status/922125423697305600

(erb2haml はコマンドラインツールとかではなく、Rails に追加する rake タスク群ということに気が付いた様子)

nginx <-> Puma を UNIXドメインソケットに

気持ち +2000点

定番です。HTTP 5000/tcp から UNIXドメインに変えた。

SQL のクエリ改善

気持ち+10000点ぐらい

これは定番ですね。SELECT のカラムを絞ったり (@hogas)、 LIMIT を付けたり (@hogas)、インデックスを張ったりした。N+1 は手を付けていましたが、コード変更に集中できなくて最終的に投げてしまった。悔しい

終了直前にソースコード眺めてたら statement.close を意図的に忘れていそうなコードが見つかり慌てて修正した。スコア上の変化は分からず。

画像を静的ファイルに書き出す

気持ち+15000点ぐらい

ユーザーのアバター画像が DB に blob で入っていたので、雑に Ruby のワンライナーで書き出して (ここまで @kyontan)、 nginx に try_files で食わせる (@h-otter) みたいなことをした。 既に話題になっていますが、最終的には Cache-control 的な問題でキャッシュヒット率が悪かったらしい。むむむ。

SHA1 を殺す (パスワード, アバター画像)

気持ち+2000点

パスワードのソルトを生成している random_string を見たときに、これは要らないのではと思ってしまったのが始まり。初期データのパスワードはハッシュ化されていたので、 id が1000より大きい user は全て平文パスワードを DB に突っ込んだりした。 (by @hogas) アバター画像は、ファイルの内容を SHA1 したものをファイル名に使用する実装になっていましたが、もしかしていけるのではと言いながらユーザIDをそのままファイル名にしたら通ってしまったのでそのままに。

Redis (最終的に入れず)

気持ち+2000点ぐらい(?)

画像をバイナリで入れるのはまあそうだね〜〜と言いながら、Redis に載せようとしていた。正直コードの変更は大したことがないのは分かっていたので実装はシュッとできたけれど、実際に動かしてみると意外とスコアに有意な差が出なかった。その後も永続化周りで少し足踏みしていたり、他の変更を見ていたために最終的に入れられなかった。残念

アプリケーションサーバ3台化

気持ち +3000点ぐらい

@h-otter がラスト30分でイケると言い出してやってた。ここで Puma (アプリケーションサーバ) のスレッド数を調整していた (10 -> 18スレッド)時に出したのがベストスコアです。

その他

  • 再起動試験は何の問題もなかった???? 過去の参加記なんかを見てるとここが関門かなというのはあったので絶対やっておきたかった (やりました)

  • Redis に手を出してなかったのでここで不安はあまりなかった

    MySQL の Too Many Connections が割りと頻発した

  • ここは statement.close 忘れも影響してるかなと思うけれど、500が途中で出たり安定しないことがあった。最終的には安定しました

    日ごろは頭痛の頭の字もないのに、とにかく頭痛が酷かった。緊張にはやはり弱い。 JSONシリアライザが遅いのは分かっていて、 Oj を入れるぞと言いながら入れるのを忘れた。あれを入れただけでシリアライズについては数倍速くなるというのは分かっていたので、ただただつらい。 ICTトラブルシューティングコンテストでスコアサーバを延々とやっていたことが知見として生きたとは思う。DB設計なりアプリケーション設計なりチューニングなり。

  • 当時のオーバーキルなチューニングしたときの操作が生きることになるとは思ってなかった

    最後のベンチマークの結果を見て全員で嘘やんって言ってた

  • ルールを読んでなかった。次回は読みます

  • にゃーん

そういえば30分ほどですがスコアボードの上位に乗っていました。学生トップなのは分かっていたので、これは予選突破できるんじゃない? とか言いながら笑っていたのを覚えています。このあたりが後々ボーダーになるんだろうな〜という話をしていて、実際そうなったのである程度読みは正しかったのかなと思いつつ。

総括/最高

監視に強い人(@h-otter)強い。常に横で IOバウンドかネットワークバウンドか、みたいなことを見ながらアドバイスしてもらえる環境は最高。

限られた時間の大会という環境でもくもくとコードいじれる人(@hogas)強い。とにかく僕が頭が回ってなくてコードをまともに書けない状況にあったので、そんな中でちゃんと改善する変更を入れ続けてくれて最高。

基本的にどこに手を入れればいいか、この変更はコスパ的にどうかみたいなことを常に考えながら立ち振る舞えてはいたと思うので、そういった点ではなかなか善戦はできたかなと思いつつ。 しかし、できたことは山のように残っているなという感想。、途中で集中力が切れてしまったこともあり、こういう結果になったのは悔しいなと思う。

ただ、これだけ言えるというのはつまりバランスが最高だということに他ならなくて、こういった駆け引きができるバランスのゲームを作るのはとにかく難しいなと思っているだけに最高だな!!!という気持ちです。 こんな最高のコンテストを生み出してくれた運営の皆様、ありがとうございました。そしてお疲れ様でした!

本選に行かれる皆様はぜひとも頑張ってほしいなと思うところです。

 

次回は最高の♨️から最高の心構えでやっていきたい。

 

 

チーム「まだチーム名で消耗してるの?」で同期3人 (自分 @kyontan, @hogas, @h-otter[…]

ICTSC8 の運営委員を務めました

雑記

こんばんは。

に引き続きのエントリになります。ちなみに記事はないですが第5回でも運営委員を努めさせて頂いていたので、これで4回目になります。 後述しますが5回目はないので運営委員シリーズはこれで最後です。(そもそもシリーズものではないですが……)

偉そうになんやかんや語っているところだらけですが、あくまで主観だし間違いも色々あると思います。ただの記録や雑感として受け取って頂ければ幸いです。

read more »

こんばんは。 第6回 ICTトラブルシューティングコンテストの運営委員をしていました ICTSC7 の運営委員[…]

第50回 情報科学若手の会に参加しました

雑記

こんばんは。現地時刻はJST 3:15ぐらいですが、最近はUTCで生きている気がします。そういえば21歳になりました。

さて、第50回 情報科学若手の会 (...) | 情報科学若手の会 というものがあります。 詳細はリンク先の説明に譲ります。

毎年この時期にやっていることは以前より知っていましたが、秋の花火を打ち上げる諸用と被っていたことが理由で参加できずにいました。 今年はかぶらないという事で、参加させて頂きました。

雑感

カジュアルではありながらも、少しでもアカデミックに若干寄ったイベントというのは初めてで、質疑応答の時間も長く、新鮮なイベントでした。

特に登壇者層は若手から若手(ではないが夢がある者)へと幅広く、話題もノンジャンルといって良いほどに幅広いものでした。ブロックチェーンやAIといった最近流行っているテーマから、人生戦略、ECMAScript, 研究支援, 地政学, 量子プログラミング, 考古学, オフィスを建てる, ... 様々ありました。

交流の時間も非常に長く、また幹事の方々が考えられた交流イベント(QRコードへ付箋を貼りつつ戦っていく、往年のバーコードバトラーのような何か)もとても盛り上がりました。ありがとうございました!!

また、ナイトセッションでは酒とエモい話が並び、大変にNSFWな感じで良かったです。

登壇した

そして、やはりイベントに出るからには登壇する必要があるようで、気がついたらショートセッションの枠へ登壇登録をしていました。しかも実際にはショートセッションを2つマージし @h-otter と合同で登壇するという暴挙にでていました。 内容としては、ICTトラブルシューティングコンテストの紹介と称してざっくり歴史をまとめつつ、自分たちが参加した会でのやったこと、辛かったこと、上手く行ったことなどを順に追っていく成長記録のような感じでした。2年間ですが、色々あったのかなあと思いつつ、やはりマネジメントは難しい。 ロングトークのマネジメントも難しいですね、精進します。

スライドはこちらです。HackMD (Reveal.js) なので一覧性が低く申し訳ないです :bow:

雑感その2

会場の Wi-Fi も非常に快適で、やはり Aironet は最高という気持ち。そのまま勢いで自宅の Aironet をギガビット対応させるべく電源を購入しました。

やはりこういう少し変わったイベントには少し変わった人が多く来るという(主観的な)偏見があり、実際そのように様々な人と話すことができました。しかしコミュニケーションは難しい、やっていきたい……

その他、次年度の幹事になるなどのイベントが発生しました。マネジメントつらいという話をするとマネジメントをする側になるのだなあとしみじみ思う次第です。どちらかというとオーガナイズよりな気がしますが、楽しんだもの勝ちなので全員で楽しんでいけるような会にしたい……!

やっていくぞ。

 

私信になりますが、もうすぐ就職か院進かというところで色々な悩みが発生したりしなかったりしています。 フィーリングでやっていきますが、もし何かお話等ありましたらご連絡いたしましたら幸いです。

こんばんは。現地時刻はJST 3:15ぐらいですが、最近はUTCで生きている気がします。そういえば21歳になり[…]