NoahOrblog

某・福島にある大学のコンピュータ理工学部の大学生のお話。

はてなインターンで最高の夏を過ごして来た

f:id:NoahOrberg:20180907142720j:plain

実はしれっと、はてなインターン2018に参加してきました!!!

developer.hatenastaff.com

応募まで

応募が始まった瞬間、エントリーシートを記入しました。(14:00 からだったのですが、その前から待機していました。)

提出するものは、自分のポートフォリオと簡単な技術課題(ROT13の実装。任意の言語を選択可能)だったので、実装してシュッと提出したのを覚えています(30分位で提出した記憶)

応募に至った動機としては、以前のバイト先が同じで、大学の先輩である id:upamune さんと id:ktr_0731 さんが一昨年、昨年のはてなインターン生(2人ともmackerelチーム)で、話を伺っていたので自分もmackerelチームにインターンで参加したいな、と思っていました。

応募から選考に受かるまで

個人的にはてなインターンが第一で行きたいところで、(もしはてなインターンに落ちたときの万が一のために)それ以外にも複数のインターンの選考を受けていました。

選考のフローとしては、書類選考の後に面談を一回行って、それから合格のメールを数日後にいただきました

前半過程

前半過程では、去年まではPerl, Scalaでしたが、 Webサービス開発の上流から下流までを網羅した充実の講義プログラムを用意 という通り、今年はGolangでのサーバーサイド、React.jsでのフロントエンド、GraphQLを用いたWebサービスの実装、AWS機械学習、インフラなどといった講義が行われ、濃い二週間でした。

GraphQL実装、すごく楽しかった。

普段書いているGolangはもちろん、個人的に普段書かないフロントエンドについてや、触れたことのない機械学習などの技術にそれこそ上から下まで触ることができて最高だった。

後半過程

希望通り、mackerelチームに配属され、 id:albacore (通称メテオ)と最初はペアプロしてました。

Scalaを基本的には使い、外部APIを生やしたらmackerel-client-go にPR投げるなどを主にやりました。

数日でそれぞれ別タスクをやることにしましたが、 id:albacore の実装が尋常じゃないほど早く、自分が1機能作ってる間に彼は3機能くらい手を付けていたのでやばかった。(語彙力)

ちなみにmackerelチームは配属準備の2週目の金曜日、その次週の月曜日(本来はこれが初日)に外部向けのRoleAPIを実装してインターン最速リリースをすることができました。

mackerel.io

mackerel.io

インターン生活

他のインターン生も、みんな同じ志をもっているので、結構仲は良かった(例年より仲が良かったらしい。

夜は id:albacore と共に id:E_ntyo の部屋に押しかけたこともあった。

あと、はてなインターンは本当にお金を使いません。朝はホテルの朝食(券が貰えるが朝に弱く実は一度も使っていない)、昼はまかない、夜は社員の方がご飯に連れてってくれます

あと、素敵なステッカーももらえます。

まとめ

はてなインターン、最高の夏!!!!!!

実はこの記事はインターン後に伝統の三嶋亭に諸用で行けなかったので、みんなと東京ですき焼きを食べながら書いて公開しています。(本当です。)

普段の技術バイトなどで触る一部の業務だけでなく、前半の講義パートでWeb開発の大枠を掴み、後半で実践のできるはてなインターンは、是非大学の後輩にも行って多くを学んで来て欲しいと思いました。

あわせて読みたい他のインターン生の記事

id:E_ntyo キャラが濃い。1日目に遅刻したことをかなり後悔していた。はてなでわっしょい。 e-ntyo.hatenablog.com

id:albacore 通称メテオ氏。技術的にも〇〇的にもヤバかった。mackerelチーム優勝出来なかったのは心残り。 blog.meteors.me

id:gazimum がじまむ。一番の常識人だった気がする。実は同じ地元だったのと、彼が次に行くインターン先に id:culumn がいることも衝撃。 tomoyaf.hatenablog.com

id:YaaMaa 服部の人。 ずっとこれの言語Rubyなの、服部の色意識してかと気になってたけど最終日に違うことが判明してよかった yaamaa-memo.hatenablog.com

id:turtar_fms かめの人。一般人かと思ったら意外とやばかった。 いいんちょと一緒にいるイメージが多い(後半過程より)。 turtar-fms.hatenablog.com

id:mizdra キングドラのひと。一番熱意があって最高。 彼のプレゼンが一番見たかった。

www.mizdra.net

id:guni1192 ツッコミ担当。彼の鋭いツッコミが、僕は好きです。インフラの知識ありまくりで凄かった。

記事が増えたら貼るよ!お楽しみに

学生版ヒダッカソン サーバーサイド編 に参加してきた

Noahです。

結構前の話なのですが、サイバーエージェント主催の学生版ヒダッカソン -サーバーサイド編- に参加してきました。

www.cyberagent.co.jp

所感

2日に渡って開催され、初日はサイバーエージェントの社員さん方のLT、メインとなる2日目はISUCONのようなパフォーマンスチューニングをしてスコアを計測し、そのスコアの高さを競うものでした。

前日のLTでは、パフォーマンスチューニングする際にボトルネックを見つける方法など、翌日に活かせられる内容ばかりでした。

2日目では実際にパフォーマンスチューニングをしていくわけですが、MySQLにINDEXを貼ると途端にパフォーマンスが上がり、その他細かい変更などをすると午前中には1, 2位まで浮上しました。

が、午後になるとこれ以上のボトルネックを見つける方法がわからずに右往左往してしまい、そのうちにも徐々にランキングは下がっていき、N+1の箇所を発見するも解消まではできず。

ついに終了1時間くらい前にメンターの方からDBに負荷のかかっているボトルネックの探し方(mysqldumpslowなどを利用し、スロークエリを探し出す方法)や、原因がわかったらその問題に対してよくやる解消方法などを教わり、最終的には5位でヒダッカソンを終了することができました。

終わってみて

パフォーマンスの向上に計測は不可欠であり、基本的なことである 推測するな、計測せよ ということがとても大事だということがわかりました。

コードを読む、というよりは(今回の構成では)主にMySQLに負荷がかかっていたので、そちらを計測し、ボトルネックをみつけ、修正する、という単純ですが難しいことをやってのけるには、やはり日頃から経験を積むしかないとも思いました。

終わってからの社員さんからの解説では、並列化テクニックや、GolangならではのDBコネクションなどの内部処理にも着目されており、とても勉強になった2日間でした

2日目の夜の懇親会には諸用により参加ができなかったのがとても心残り…

Vimプラグインのキーバインド

Noahです。

TL;DR

map、これからはinit.vimとかで設定していこう

具体的な話

今までファイル内の文字列を探すとき、ptをCLIでよく使ってたんですけど、

Vimから似たような感じで検索できるctrlsfというプラグインがあって最近はこっちをよく使っています。

github.com

このctrlsfの単語での検索を、

function! InteractiveCtrlSFCmd() abort
  let s = input("plz input word: ")
  if (s != "") 
    execute ":CtrlSF " . s
  endif
endfunction

こんな感じに関数を書いて、 <SPACE>sf に割り当てたら、何故か期待通りに動作しない。原因調査すると、

github.com

こんな感じにplugin側でキーマップしているのが原因だった。(しかも自分の作ったプラグイン

まとめ

ちゃんと考えて、バッティングしないようにしよう(戒め

アルバイトをやめた

同じとこでアルバイトしてた友人が上げていたので上げる

都内にあるベンチャー企業のサーバーサイドエンジニアとして1年程度アルバイトしてましたが、5/19付でやめました。

やめた理由とか言ってもアレなので、良かったところを書きますが、個人的には色々な人との関係が築け、多くの学びがあったのが一番良かった。

自分はそこで1年程度働きました。最初はTwitter経由でそこの支社長からDMが飛んできて、トントン拍子に契約まで行ったのですが、そもそも仕事で使うGolangすら書いたことなかったし、フロントかサーバーサイドをどっちでもいいよと言われてサーバーサイドを選んだけど、その時は課外授業でやって興味を持ったという理由だった。(よくそんな自分を雇ってくれたと感謝しかない)

そんな自分でも先輩方にコードレビューしてもらったり、大学が夏季休業中はオフィスである趣きのある日本家屋でフルタイムで勤務する中、社の先輩や社員の方とペアプロをしたりしつつ自分自身成長することができたことがとても良かった点。

あとはアルバイト先の先輩たちと(目的は多々あれど)小名浜まで行ったり、慰安旅行で京都に行ったり、他にも貴重な経験があってとにかく最高の経験でした。

正直、この環境が無ければ今の自分はなかったと思うし、先輩方や社員の方に感謝してもしきれない。


ちなみに今度は(また別の)東京にあるベンチャーで(また)サーバーサイドとしてリモートワークする予定なのでがんばるぞー💪

MacでSpotifyをNeoVimから操作できるようにしてみた

Noah です。

最近、Spotifyを契約したのですがこれがまたとても良い。

www.spotify.com

プレミアム3ヶ月100円に釣られました。はい。

で、

SpotifyをNeoVimから操作できるようなプラグインを書いてみました。

Mac かつ Shougoさんのプラギンマネージャ、dein.vim の環境下でしか現状は動きませんが、最近Linuxマシンを手に入れたのでそっちも対応させたい 💪💪💪

github.com

(わりと最近書いたつもりだったけど最終コミット2ヶ月くらい前やん…)

ちなみに名前はBiSHのアユニ・Dさんから取りました

おうち開発環境を整えた

Noahです。

おうちの開発環境を整えました🎉

今まで

2015年モデルのMacBookProのみで開発を行っていました。

外部ディスプレイとかなしで、キーボードとかマウスももちろん無し。

バイト先で初めてデュアルディスプレイで開発したとき、作業の効率がグンと上がったので感動してたくらい。

買ったもの

ディスプレイ一枚、トラックボールマウス、ThinkPadのキーボードを買いました。

ディスプレイ

予算が大してないので、クーポン適用で1万ちょっとで変えるディスプレイを購入。

スピーカーは付いていないが、別に使わないので構わない。

普通に画面大きくてめっちゃ良い。これで12kなら満々足。

ThinkPadキーボード

ThinkPadのキーボード。ThinkPad自体は使ったことがないですが、使ってる友人曰く最高らしいので購入。

ケーブルレスがいいので、Bluetoothモデルを購入。

一番届いたのが遅かったけど、打ち心地は普通に良い。

トラックポイントが感度難しい。慣れかも。

ラグもなくてストレスから解放されてる。

トラックボール

LOGICOOL ワイヤレストラックボール M570t

LOGICOOL ワイヤレストラックボール M570t

慣れない。でも便利。

トラックボールのおかげで移動させる必要がないので、めちゃ便利。でも慣れない。

2日触ってようやく少し慣れた。快適。

その他

HDMIケーブルとか買った。Thunderboltも。

不満点を言うなら、トラックボールは専用レシーバーが必要。あまりさしたくない。

ディスプレイのHDMIケーブルはしょうがないけど、元あったディスプレイ(HDMI入力があるなんて思っていなかった)含めてトリプルディスプレイにしているので、何箇所もケーブルをささねばならないのは面倒。

ThinkPadのDock Stationみたいなのほしい。

QC30を修理に出した話

Noahです。

かなり前の話ですが、QC30が調子が悪くて修理に出して返ってきました🎉

故障

3月のインターンの頃から、電源を切っても緑のライトが付いたままだったり、充電中にオレンジの点滅のはずが緑のまま点滅してたり挙動不審。

でも、操作も問題ないし、まともに再生できるしそんなに気にしていなかった。

(電源切れない、というわけではなかった。)

4月に入って、帰省をした頃に満充電でも電源をつけた数秒後に電源が切れる症状に陥った。

修理

挙動不審だった頃から同じQC30を使ってる先輩に相談とかしてたのだが、さすがに使い物にならなくなったのでBoseカスタマーサービスに連絡。

郵送すれば無償で新品交換してくれる話になった。

大体一週間くらいで返ってきた気がする。

手厚いサービスがあって最高。

終わりに

ちなみにだが2A出力で充電するのも駄目っぽい。

MBPのUSBポートから充電するようにしてる。

あと、3月中にはインターン先の社員さんにこんなこと言われた。

これはこれで怖い