はてなリモートインターン2021に参加しました :saikounonatsu:

はてなインターン2021参加しました

TL;DR

いや、全部読んでください。

前半戦(講義パート)

講義では企画からインフラまで、Web開発に必要なものを洗いざらい教わった。(カリキュラムはこちら
とんでもない物量の講義が毎日襲いかかってきて、これが最前線のWeb企業の速度か……と内心ビビっていた。 しかし、受講者がそう思うということは、用意した側はたぶん5倍以上の苦労があったはず。我々8人のインターン生に教えるためにそれだけのリソースを割いてくれているわけで、こんな教育が充実したインターンは他にないのではないかと(エアプながらに)思う。

講義では特に個人ではなかなか腰を据えて勉強するに至れないKubernetesやマイクロサービス、食わず嫌いだったデザイン、爆速でJS→TS→Reactと駆け抜けていくフロントエンドなどが印象に残っている(特にフロントエンドはボリュームがすごいを通り越して 異常 の域に至っていると思う、本当にすごい講義&資料だった)。全ての講義が大変ためになるので、これらを受けられたというだけでも、このインターンは今後の人生にきわめて大きな好影響を与えてくれると確信できる。Webエンジニアを目指す全人類にはてなインターンを経験して欲しい。

ちなみに、2019年のインターン生である id:lunastera さんが今年にはすでに講師を担当されており、後進の育ち具合に戦慄した。

前半戦2(課題パート)

ブログにmd記法を導入したりとか、URLからのタイトルフェッチをするServiceを立てるとかそういった課題があった。多分2020年の課題と同じだと思う。 適切な質問ができなかったり、そもそもgRPCとKubernetesの理解がだいぶ浅かったりで、特に見せ場なく終了した。
テストの更新漏れがあってCIが落ちまくったり、課題がクリアできなかったりしたので、これは前半で脱落するやつか〜〜〜???と思ったが、全然杞憂だった。破滅しても割と大丈夫です、安心してください。

後半戦(業務パート)

希望していたブクマチームに配属してもらえて最高だった!
何をどれぐらい書いていいのかの判断ができないので、詳細は全然語らないが、インターンの真価はこの業務パートにあったと自信を持って言える。
学生のうちから、ユーザが大勢いるサービスのかなり重要な機能に携わる経験ができて本当に良かった。ただ言われた通りにコードを書くだけではなく、レビューやテストをすり抜けたバグをちょこちょこ見つけたり、UX的な部分に自分の意見を取り入れてもらったりもしていて、拙いなりにもチームの一部として動けていた感覚があったし、機能への愛着もめちゃくちゃ湧いている。自分の子供感ある。
実装した機能はこちら👇 bookmark.hatenastaff.com

業務パートの感想

実装した機能が本番環境で不具合なく動いているのを見てめちゃくちゃ感動した。しかも多数のユーザさんから肯定的に受け取られていて再び感動。エンジニアという生き物はこの瞬間のために生きているのではないか。
インターン期間内にリリースできたのは、メンターさんをはじめとするブクマチームの皆さんと、同じくブクマチームに配属された id:mds_boy さんのおかげだった。チームの皆さんにはリモートなのに常に反応をもらえるレベルで全力サポートしてもらえたし、mdsさんはコードを読むのも書くのも圧倒的に早く、全体的に引っ張っていってもらえた超ラッキーな立場だったと思う。実際Perlでかなり危険なコードを書いたりもした。
それでも、方々でメンターさんにめちゃくちゃ褒めていただいてとても嬉しかった。
とはいえ、今回はメンターさん頼り放題プランで、(リリースまでだいぶ短いのもあって)わからないことを聞きまくっていたが、実際の業務になるとそうもいかないはずで、その中でも自分がしっかり貢献できるイメージはあまり浮かばない。今のままでは実力が足りていないと思う。(インターンで社員並みの働きができる方が異常だと思うけど)
ちゃんとチームに貢献できるエンジニアになるために、そしてリリースできて気持ち良くなった経験をもう一度味わうために、これからも精進したい。

まとめ

講義も業務も最高!
なぜ自分がお金をもらう側なのか不安になるレベルで最高の体験だった。
あなたもはてなインターンで最高の夏を過ごしてください。

以下余談

始まり

インターンの応募課題はF12押せばいいだけで、自明だった。
「これ受からなかったら普通に夏休みは勉強漬けでいいか〜」と思って、はてなさん以外のインターンはどこも受けなかった。 はてな一筋!
というのも、はてなさんはインターンに激慣れしていて、サポートがはちゃめちゃに手厚いのを過去の体験記からひしひしと感じていたからで、本格的なインターンが初めての自分はここ以外考えられなかったからである。
ちなみに、はてなインターン2021の応募資格には「メモリ16GB以上のPCを用意できる」というのがあって、自分のは8GBなので、実はかなりハイレベルなダメもとだった。

面談

面談のメールをいただいたときは、8GBなのに時間をとってもらっていいのかと思っていたけど、残りの8GB分は気合と技術力でカバーするつもりで面談に臨んだ。
ものすごく緊張している自分にアイスブレークを投げてくださり、やってきたこと、やってみたいこと、過去の開発の失敗談など色々伝えることができて楽しかったし、かなりの手応えを感じた。
この時の面談のお相手はid:taraoさんだったとチーム配属後に知り、面談の時点でこんな BIG な人にマンツーマンであれだけ時間を割いてもらえるというあたりにインターンへの期待や本気度のようなものを再確認できた。

当落メールが来ない

迷惑メールに入ってました😵
当落メール来た!と思ったら、実はそのメールはリマインドで、先日ご連絡を差し上げたとか参加の可否が確認できていないとか書いていて、心臓が止まるかと思った。 リマインドも迷惑メールに入っていたら、Googleの全てを憎み戦うバーサーカーになっていたと思う。
ちなみに、過去に重要なメールがプロモーションのタブに入っていて破滅したこともある。プロモーションタブを消して全部受信トレイに来るようにしてもなおこういうことが起きるが、とりあえずプロモーションタブは消した方がいいと思う。

立つ鳥跡をめっちゃ濁す

最終日にはてな社サーバー上で動いているScrapboxに間違えてMackysonという名前のProjectを生やして、しかもなんか削除ができないという状態になった。f:id:Mackyson:20210903174756p:plain
記念碑ということにした。

【Golang,MeCab】形態素解析でみるゆかりおんさんのパーソナリティ【ゆかりおん】

この記事は鉄球連盟ガバガバアドベント(笑)カレンダーの12/23のエントリです. ちなみに12/23にして二日目の記事です.初日の記事はこちら

はじめに

今回は鉄球連盟という変態集団を束ねる異常者の王,みんな大好きゆかりおんさんについて,形態素解析を使って,どんな人なのか調べてみました!Rustで形態素解析器を自作する偉人もいますが,僕はあかちゃんなので作れません.

f:id:Mackyson:20200909042119j:plain
ベッドで眠るゆかりおんさん

テスト

入力

$ mecab ゆかりおん

出力

ゆかり    名詞,一般,*,*,*,*,ゆかり,ユカリ,ユカリ
おん  名詞,一般,*,*,*,*,おん,オン,オン

わかりました.
ゆかりおんさんは「ゆかり」と「おん」から構成されているようですね.

いかがでしたか?

本走

ツイートデータに対して,品詞別の語の度数を見て,ゆかりおんさんについて考察しましょう.

実行環境

Manjaro
Golang 1.15

mecabのインストール

$ yay mecab
$ yay mecab-ipadic

を実行し,MeCab(形態素解析ツール),MeCab-ipadic(辞書),MeCab-ipadic-NEologd(Webから単語を取得するタイプの辞書)をインストールします.SNSなどから入手した文書の場合,新語が多く含まれている可能性が高く,neologdは必須のようです.執筆時点でMeCabのバージョンは0.996でした.

ツイートの取得

これが最大の壁ですね.ゆかりおん本人にOAuth通させてツイート全部引っ張るコード書くのはあまりにもダルすぎるし,そもそもネタ思いついたの21日の午後9時なので,多分時間的に記事書けません.しかし,Search APIは直近一週間までしか取れないクソザコ仕様です.どうすればいいでしょうか?

……僕は,高専生活でいろいろな大切なことを学んできました.プログラミング,アルゴリズム線形代数マインスイーパーのテクといった技術的なこと,そして,高専プロコンで垣間見た,俺達に秘められた凄まじい力.

†人力†

というわけで,Twitterで「from:yukarion09」で検索し,コピペで頑張りました.2020/12/1から2020/12/21までの3週間に呟いたツイートのうち,自動生成のもの以外をCSVデータとしてまとめました.鉄〇連盟名言集ガチャとかいうおぞましい診断メーカーによってつくられたこの世の終わりみたいな文字列は含まないことにしました.まぁあれほとんどゆかりおんさんの発言じゃないしな…… 加えて,CSV形式にした関係で,ゆかりおんさんが半角カンマを使っているツイートは該当箇所を全角に置換しました,また,絵文字は正しくコピーできないので全部捨てました.ごめんね.

形態素解析

さて,CSVにできたので,これをMeCabにぶちこみますが,単語ごとの計数とかしてほしいので,そのへん実装するために,
こちら github.com のライブラリを利用します!
動かす前に環境変数の設定が必要です.yayで入れた場合,mecab-configも入っているので,次のコマンドを実行します.

$ export CGO_LDFLAGS=(mecab-config --libs)
$ export CGO_CFLAGS="-I"(mecab-config --inc-dir)

これでライブラリを動かせます.コマンド出力の埋め込みはfishの書式で書いているので,お使いのシェルに合わせてください.
依存関係はgo.modなりgo getなりで解決してください.

実装ですが,mecab-golangのREADMEにあるExampleをちょっといじればすぐにできます. 実装したものがこちら, パイプによる標準入力でCSVを流し,リダイレクトで結果をファイル出力します.
解析に際して,1回しか使ってない語は除外しました.名詞だけは2回使った語も除外しています.また,連体詞と接続詞はなんかしょっぱかったので捨てました.

データのビジュアライズ

ヒストグラム(的なもの)を書いたことないため,一番時間かかりました.gnuplotいい感じにやります.以下が得られたグラフです.

f:id:Mackyson:20201222023944p:plain
fig1. 名詞
f:id:Mackyson:20201222024213p:plain
fig2. 動詞
f:id:Mackyson:20201222024437p:plain
fig3. 形容詞
f:id:Mackyson:20201222024501p:plain
fig4. 助動詞
f:id:Mackyson:20201222024516p:plain
fig5. 副詞
f:id:Mackyson:20201222024532p:plain
fig6. 感動詞

考察

名詞

グラブルが飛び抜けるかと思いきや,そうでもないですね.このグラフから分かることは,一人称が「私」であること,よろしくお願いする頻度が高いこと,「チェーンソーマン」のファンっぽいこと,12月は「スライド」がホットトピックだったことですね.「スライド」がDDRのスライドなのかGoogleスライドのスライドなのかは,グラフだけではわかりませんが.
もっと奇怪なジャーゴンまみれになると面白いのですが,ゆかりおんさんはちょっとグラブルやってるだけでわりと普通の人間ですね.

動詞

これについても特に異常なワードは見つかりませんが,「寝る」(の語幹である寝)が多いことから,活動時間は夜がメインで,行動をTwitterにそこそこの頻度で報告する程度にツイ廃ですね.

形容詞

ポジティブな語が多いですね.二重否定構文で使われている可能性を無視すれば,嫌われないタイプのいい人だと思われます.

助動詞

断定が多いですが,普通の分布でしょう.

副詞

絶対数が少ないですが,「本当に」「めっちゃ」そして名詞「めちゃくちゃ」,動詞「すぎる」を鑑みれば,オーバーな表現をしがちだと考えられます.

感動詞

「ありがとう」が突出していますが,これはゆかりおんさん誕生日があったためで,考察からは弾くべきです. 「なるほど」は単発のツイートではほぼ使わないので,リプライや空リプをよく使う,ガンガンフォロワーと交流する系の人間ですね.

結論

ゆかりおんさんは,ややツイ廃で,グラブルをやっているパンピーで,コミュ強いい人です.Twitterではオーバーな表現をしがちということがわかりました.

いかがでしたか?

明日の担当はカプチーノPです.鉄球連盟が誇る最強の文豪が書く記事をお楽しみに!

こぼれ話

  • 今回はゆかりおんさんの習性からして半角カンマはほぼないだろうという見込みで,結果うまくいきましたが,一般的に,ツイートは普通に改行あるし,カンマもあるし,データの保存形式が結構ムズい気がします.TSVならいけるかな?
  • ネットストーキング上級者のみなさんはSearch APIを使って,知り合いのツイートを毎日欠かさず収集しましょう!コピペ地獄から脱することができます. 僕はSSDの寿命をそんなことに使いたくないのでやりません.
  • 本当はカプチーノPの解析がしたかったけど,リツイートばっかりで文豪ツイートが掘り起こせないのでゆかりおんにしました.

WindowsでGuakeを使いたい

目標

Guakeな感じのターミナルとまともなシェルが使いたい.

つかった

  • ConEmu (Quake styleという設定項目がある)
  • MSYS2 (pacmanが使える←衝動的に採用)
  • fish(MSYS2のパッケージにあった)

やった

  1. ConEmu,MSYS2をインストール
  2. 足りない脳みそで考えず,こちらを参考に
    もうちょっと真面目にMSYS2でfishを使う - Qiita
  3. Color schemeをxtremに(好み)
  4. regeditを開き[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]を開く
  5. UserDebuggerHotkeyの値を13(これはPauseキー)に変更
  6. Generalの中段にある Minimize/Restore hotkey:をF12にする
つらかった

最初はBash on Ubuntu on Windowsとかいう名前が頭悪いやつとかQonsoleとかを使っていい感じにしようとしていましたが,BoUoWは何故かロクにパスワード設定すらできねぇし,Qonsoleはめっちゃ頑張ったけど手に入れられた情報が少なすぎてF12がただのMSYS2起動ボタンに成り下がりました.つらいね.最初から現在のセットで構築すれば10分で終わった構築ですが,一日かかりました.

注意

レジストリを書き換えるとブラウザでF12を押してもデバッガが開かなくなるのでCtrl+Shift+Iで開くようにしましょう.