株式会社はてなに入社しました

はい

blog.sushi.money


本題

f:id:anatofuz:20210330190909j:plain

ということで2021年4月1日より株式会社はてなに新卒入社しました。

職種はアプリケーションエンジニアで、勤務地は京都*1です。 チームはノベルチームなので、カクヨムなどのインターネットサービスに関わることになると思います。

はてなPerlのアプリケーションがもりもりあるので、合法的にPerlを書くことができる環境で仕事をすることになります。(以前のインターン先では脱法Perlをキメていた)

はてなとの関わり

はてなとは2017年のサマーインターンに参加したりといろいろな関わりがありました。 サマーインターンでは近年まれに見る途中リタイアだったので、終わった後は色々とありました。 「自分はIT業界でやっていけるのだろうか。。。プログラミングしていけるのだろうか。。。」みたいなものですね。 YAPC::Tokyoや大学・大学院の学生生活を経たり、いろいろな人と関わっていく中で気持ちがだんだんと戻ってきて、就職先を決めようとなったタイミングで「やはりインターネットコンテンツに関わる仕事がしたい」ということではてなに応募しました。 実は2019年のサマーインターンに応募していて、そのときにid:motemenさんから「アナグラくんはインターンじゃなくて選考の方を受けてほしい」という話があり、実際に選考を受けることを決めていたのは2019年の夏前となります。

そして季節は流れ、21卒のはてなの選考が始まるくらいに声をかけていただいて、選考を受けました。 はてなの選考はいろいろなステップがあり、技術面接やプレゼンテーション面接などをしました。

技術面接では好きな技術についてディスカッションするか、なにかお題のアプリケーションを実装してきてそれについて議論するという形式が選択できました。 もともとあまりwebwebしていない生活を送っていたので、素で技術ディスカッションするよりはお題があったほうがいいと思い、アプリケーションの実装の課題を通して技術ディスカッションする形式を選択しました。 golangでwebアプリ書いてそれについてのディスカッションをしました。(Perlでは書かなかった)

プレゼンテーション面接だとひたすらに「インターネットがすき」ってのをアピールしたと思います。いやまぁいつも通りといえばいつも通りですね。

他の面接の思い出としては会社内の段差に躓いて、死ぬかと思ったなどがあります。

就活自体は2019年に応募した会社の中から決めていたので、コロナ禍の今ですが、会社を決めたのはコロナが流行する以前の段階でした。 今もう一度就活をするならなにか変わるかもしれませんが、多分変わらずはてなに入社していた気がします。 これはインターンとかのケリを付けることとか、Perlの会社に行きたかったとかが関係していそう。

ちなみに内定がでた直後のツイートがこれです。 結果が来るまでめっちゃ早かったですね。

思い返せば人生かなりid:papixさんの影響を受けていると思います。B2でPerl入学式に参加した流れでここまで来た気がする。

4月から

4月からはついに新卒でわくわく!びくびく! 大冒険が始まります。 もともとそんなにweb系っぽい学生生活を送っていたわけではないので、webアプリケーションの様々なことや、AWSこと、Perlgolangやjsやいろいろなことをまた勉強しながら業務していきたいですね。 そんなときは人のスキルと自分のスキルを比較するのではなくて、考え方とか振る舞いを比較して真似していけたらなぁと思っています。 比較すると落ち込んじゃうもんね。

あとは以前アドバイスしてもらったアンチパターンを踏み抜かないようにしていきます。

困ったときには人に聞く 変に自分でやろうとすると暴走する傾向にある 困らなくても人に聞く 対人でのコミュニケーションに注意 人を頼っていく テキストに頼りすぎない 絵とか図とかを使う いきなり新卒から色々できないといけない気にならない そもそも新卒は戦力として期待されてない それよりは出来ることを増やす感じで 3年後に成果をだすくらいで 思い込みに注意 あんまやる気が出ないことも実は向いてる可能性があるので頑張る そういうときは早く終わらせに行く傾向にあるので、手段とかを人と議論する 他になにかあれば募集してます

新卒アンチパターン - anatofuzのなんかそういう感じ

ちなみに会社は本名ではなくID呼ばれる環境で仕事ができそうですでにインターネットっていう感じがします。 問題がidはAnaTofuZですが、よく呼ばれるのはアナグラなので、運用でカバーという感じでやっていこうと思います。 Twitterにツイートする感覚で社内チャットを荒らしながら仕事をしたい。

試用期間の最終日に家にお茶漬けセットが送られてこないことを願いつつ、楽しんでやっていきたいと思います。 というわけでこれからもよろしくお願いします。

*1:フレキシブルワーキングスタイル直下なので物理出社しなくても良いです

ラズパイでsingularityを動かす

引っ越しでデスク周りを整備したり、ネットワークが強化されたのでラズパイサーバーを稼働することが可能となった。 ラズパイといえど直接色々インストールしないである程度仮想化したい。UID/GIDの面でdockerとsingularityを両方使いたくて、singularityのインストールをしてみる。

ちなみにx86マシンで作成したsifファイルはラズパイ上だと動かなかった。まぁそれはそうだと思う。

実はapt install singularity-containerでもインストール可能ではあるのだけど、この方法でインストールしてしまうとビルド時に--fakerootが使えない罠がある。(fakerootを別途installすればできるかもしれないけど) なので素直にgolangのソースからビルドするのが正しい気がする。

とりあえずgolangのインストールから。ansibleを書いたほうがいい気がするけどめんどくさかったので...。

$wget https://golang.org/dl/go1.16.2.linux-armv6l.tar.gz
$sudo tar -C /usr/local -xzf go1.16.2.linux-armv6l.tar.gz

忘れずに/usr/local/go/binにPATHを通す。

あとはsingularity公式にあることをやっていけばいい。

sylabs.io

必要なパッケージをインストールして

$ sudo apt-get update && sudo apt-get install -y \
    build-essential \
    libssl-dev \
    uuid-dev \
    libgpgme11-dev \
    squashfs-tools \
    libseccomp-dev \
    wget \
    pkg-config \
    git \
    cryptsetup

singularityのソースを持ってきて

$ export VERSION=3.7.0 && # adjust this as necessary \
    wget https://github.com/hpcng/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \
    tar -xzf singularity-${VERSION}.tar.gz && \
    cd singularity

ビルドしてインストール

$ ./mconfig && \
    make -C builddir && \
    sudo make -C builddir install

ということで無事singularityがインストールされた。あとはいろいろ

琉大(院)卒業した

琉球大学大学院を卒業しました

というわけで琉球大学大学院理工学研究科情報工学専攻博士前期課程を修了しました。 正式名所はクソ長いですが、要は情報工学科の修士過程を無事終えました。 卒業式は今日でしたが、すでに京都に引っ越してしまったので、情勢的にzoomで遠隔で卒業式しました。学位証は4月に来るそうです。

修論

修論は研究室で開発しているOS GearsOSに関するものでした。 研究室のhgリポジトリはオープンになっているので、興味がある方はPDFを見れます

OSといいつつ実際にやったのはPerlを使ってGearsOSで拡張したCbCから通常のCbCに変換するトランスコンパイラの開発だったので、 言語をやっていた感じがあります。

修論は前半はリモート(在宅)で行っていて、システム更新をして以降は研究室で進めていました。 途中で開発環境がmacOSからwindows, linuxと変わっていったりしたのも思い出深いです。

琉大の生活

もともと山梨出身なので琉大に進学したのは勢いでした。 6年もいた今となっては琉大に進学して良かったな、という感じです。

今はコロナでもはや土地柄も無くなってきているところがるかもしれませんが、偶然にも情報系をやりたくて進学した琉大がある沖縄は、その土地柄か情報系について非常に力をいれている世界でした。 例えば情報工学科が他の大学よりも早く設立されていたりとか*1ハッカーズチャンプルーを始めとするコミュニティ活動が非常に活発だったりとか....。 あとはこれは情報工学科ならではでしたが、とにかく先生との距離が近く、だいたいの講義を前列で受けてたこともあり、ほとんどの先生に認知されるみたいな生活をしていました。 後半からは名嘉村先生を始めとする数多くの先生にアナグラと呼ばれていたりする感じでした。 個人的に面白かった講義とかはよく質問した気がします。 やっぱりOSと並列分散処理は面白かったな。

そんな訳でプログラミングやITが未経験で入学した僕ですが、情報系のオタクみたいになって卒業する事ができました。 今まで関わっていただいた、大学内外の皆様のおかげです。。。。ありがとうございます。。。 特に同期の皆様方には多大なるご迷惑をおかけしたことをお詫びいたします。。。。。訴えられたら負ける気しかしない。。。

琉大の情報系は今は閉鎖されていますが学年自習室(実際は部室みたいなノリ)があり、常に大学にいるみたいな生活を6年くらい送ったかと思います。 そのために友人の家に集まってどうこうするみたいなのはなかったですが、実質大学が家みたいなところがあり、いい友人にも恵まれて楽しく過ごすことができました。 B4からは研究室配属されて、611(河野研)に入り浸る生活が始まりました。 先輩と一緒に「KING OF PRISM by PrettyRhythm」を見たり、「超次元革命アニメ『Dimensionハイスクール』」を見たり、「うる星やつら2 ビューティフル ドリーマー」を見たり....。なんか研究以外のことばかりしていますね。 611非常に居心地が良かったので、もう気軽に611に行けないのは寂しいですね。

こんご

Twitterみている方とかはわかると思いますが4月からはついに社会人編が始まります。次回作にご期待ください。

*1:そのおかげか琉大はかなりのIPをガメている

京都に引っ越しました

ということで京都に引っ越しました。なんで引っ越したかは4月までお楽しみにということで(就職です)

自宅は堀川通沿いです。テレワークの昨今だからもう少し都市部から離れても良かった気がするけど、なれない土地で一人暮らしなので初手は都市部の方がいいだろう的な感じ。

新居

これは内覧に行かなかったのが悪い*1のだけど、極めて日当たりが悪くて便所が一番明るいという状態になっている。 隣にクソデカホテルがそびえ立っているのも原因っぽい。 あとはサーモスタットが風呂についていなくて蛇口で調整する必要があったり、ところどころ部屋の設備のネジが外れかかっているなどの辛さがある。 一応全部現状報告の紙には書いたけど退去のときに色々請求されそうな....いやでも入居時にこれだったので雑なのかもしれない。

それ以外はまぁ特に不便することもなくという感じ。大通り沿いなのでなかなか声が響いてくるけど寝るには問題ない。

ゴミ

沖縄にいたときは月曜と木曜が燃えるゴミで、火曜が燃えないゴミ、水曜が資源ごみみたいな世界観だった。 ゴミ袋は町で指定されているやつ。

新居は民間が回収するらしいので1Fのゴミ回収BOXに打ち込めば24時間いつでもいれていい方式らしい。 ゴミ袋は透明・半透明ならなんでもいいらしい。百均で買えるやつでいいっぽい。 毎日ゴミ捨てできるタイプなのでそこは嬉しいですね。しかし燃えないゴミが出せないのは大変そう。不動産屋さんに聞いたらだいたい燃えるゴミでもいいらしい...そんな....。包丁とかは明らかに燃えるゴミじゃない気がするけど...。

近所にはスーパーとか商店街とか飲食店とかが乱立しているので食べ物には困らなさそう。 道を歩けばUberのチャリを見かけるレベルにはUberで色々済むらしい。沖縄にいたときはUber未対応だったので使ってみたい気もするけど、この距離なら歩いていくな...みたいになってる。

食事

今の所フライパンで温める以外の自炊環境が整ってないので買って食べたりしている。 スーパーと外食店とコンビニが極めて近いので食事には困りそうにない感じ。 とはいえカロリーで殴ってくる系の店が多いので気をつけないと体重が悲惨なことになりそう。FitBoxingを再開するべきっぽい。

インターネット

光回線

ネットで調べたところ引越し先の物件がフレッツ光しか対応していなさそうだったのでフレッツ光に。 幸い部屋に光ケーブルを引き込めるタイプで、かつハイスピードタイプだったので結構速度は問題なさそう。 引っ越してから自宅ポストにauひかりにしませんか的なチラシがついていてどっちなのか不安になった。

いろいろやりたいことはあるけれど、とりあえずオーソドックスな構成にしようとONUオンリーのプランでフレッツは契約した。(ひかり電話なし) IPoE使いたかったのでv6オプションに加入した。

プロバイダ

ツイッターで聞いてみところ教えてもらったオープンサーキットにした。 今の所固定IPはいらないので、v6プラスでIPoEができるv6Neoを申し込んだ。

ポートの関係で一部のオンラインゲームができないとかあるらしいけど、現時点ではオンラインゲームする予定ないので大丈夫そう。 必要とアレば固定IPプランに変更する感じかなぁ

ルーター

TP-Linkのarcher a2600にした。 atermのやつにしようとしたけどレビュー見たりツイッター見てたらあんま安定感が最近はないらしい。 v6プラス喋れててそこそこ早ければまぁ安定しているのがいいかなと思いTP-Linkにした。

今の所取り立てて問題が発生しない程度には安定している。 ちなみにPCは常に有線でつないでいるのでwifi喋っているのはFireTV StickとiPhoneくらい。

ツイッターでおすすめされたサンワサプライのやつ。 意外ともう少し奥行きがあるやつを買っていても良かった気がする。 ディスプレイおいたら奥行きが無くなったのでテレビ台買うか悩みどころ

明かり

なんか明かりは消耗品だから入居者で変えてくださいという感じらしい。 入居してきたときについていた玄関とかの明かりは、つけてもほとんど変化がないほど消耗していたのでヨドバシに行ってLEDを買った。

玄関開けて扉が閉まると真っ暗になるので、人感センサーのやつにすればよかったかもしれない。

部屋の明かりはヨドバシで頼んでつけてもらった。脚立がないので...。

はい

他の情報はまたあとで書きます....

あ、これが欲しい物リストです

https://www.amazon.jp/hz/wishlist/ls/1CODJT3U9MSZL?ref_=wl_share

*1:このご時世なのでいけなかった

#プログラミング原体験

blog.utgw.net

papix.hatenablog.com

小中高と家に家族共用のパソコンはあったのだけれど、プログラミングはしようと思っていなかった。 だいたいPCでやることは、近所の本屋のPCコーナーに売ってある「サルでもわかるDVDコピー」とか、PSPエミュレーターの動かし方、PSPの改造の方法を調べるのと、Flashゲームをやりつつエロサイトを見ることだった。

プログラミングをしようと思っていなかった原因はいろいろあり、当時は電気工事士になりたかったこと*1や、プログラムはコンピュータも含めて人間が作ったものだから、人間が理解出来るという中2的な発想があったことなどがある。それより大きかったのは、「そもそもプログラミングは高度に教育を受けた研究者がなんか火花をちらしている研究室で、めちゃくちゃ高い機械で行っている」という印象があったため。近所の本屋でもPCコーナーに売ってるのはプログラミングの本ではなくて、DVDコピーとかWinnyの本だらけだった。今だと検索すればいいじゃんで終わるが、そもそも検索しても出てこないと思っていたので検索しようという発想がなかった。

高校自体はいろいろつらく*2、文転して民俗学を勉強したかったが、学校のクラス的に文転ができず、理系で興味がゆいつあった情報工学科がある琉大に進学した。ここでMacBookを指定で買い、講義を受けることになる。

初めてやった課題は谷口先生のC言語のReport1で、*を使って好きな図形を書きましょうというのだった。 大学初年度と言えど精神年齢が小5から進化していないので、💩のAAを作って喜んでいた覚えがある。

このときのレポートは紙に印刷して提出だった。そういえば筆記体の練習とかもした気がする。

後半ではfor文とか鬼門のポインタとかやっていた。ポインタはよくわからんかったが、for文では尊師マーチを出力するプログラムを書いて喜んでいた覚えがある。

後期は山田先生のJavaだったのだが、課題という課題もなかったのでRobocodeを動かした覚えしか無い。よくわからんが壁伝いのWallロボットが最強だった気がする。Javaのコードが全然読めなくてパラメーターを変えただけだったっぽい。

この時期はなんか自分で母国語みたいなのが欲しくてScalaをやってみようとしていた。冷静に考えるとJavaも関数型もオブジェクト指向もわからんこの段階でScalaは完全に失敗だった気がする。

2年生になるとプログラミングの講義自体は無いが、プログラミングを要求される課題がいくつか増える。 実験といういろいろな先生が持ち回りで1,2週担当する講義があって、ここのnal先生の担当のシェルスクリプトプログラミングがめちゃくちゃ面白かった。 今までCとかしか書いたことなかったので、なんか書きやすくて面白かった。特にcurl/wgetでwebの情報を撮ってこれるというのは自分の中で革命的だった。nal先生は冗談が通じると個人的に思っていたので、DMMのグラビアアイドルカテゴリからランキングを取得するシェルスクリプトを書いた。当時の実験受講者でトップだったのでレポートが公開されたのは思い出に残っている。

今みたらGitHubに上がっていた。 github.com

後期には河野先生が担当しているOSという講義があって、なかなか難易度が高い講義として知られている。 この講義でPerlを使うということを聞いていて、たまたま琉大でPerl入学式を開催するという話を聞いたのでそこに参加した。東京からきたやばいエンジニアがいるということで、恐る恐るid:papixさんに懇親会で話しかけたのが思い出深い。

Okinawa.pmでPerlを母国語にしたいと宣言してからはや数年、なんとなく日常会話は出来るようになった気がする。

C言語は得意でもなく苦手でもなかったが、2年生のコンピュータシステムとかコンピュータアーキテクチャとかで、アセンブラやCPUって結構面白いなぁとか思っていた。 そして2年生後期でOSを受けて、そのOSの中にあった「Linuxのkernelをデバッグビルドしてコードを読む課題」がめちゃくちゃ面白くて、当時のクリスマスはひたすらLinux のKernelをビルドしていた。これは小学生の頃から持ち続けていた「OSって高い機械でバチバチしながら開発している」とイメージしていたものが、手元のMacBookで見れるようになったというのが大きい気がする。

コンパイラに興味を持ったのは、これも河野先生の講義があったB3からなのだけど、OSと同様にわけわかんない存在だったのが以外とコードが読めるというのが楽しくて、以降は触っていた。当時はいろいろあったので、周辺の人々が触っていないニッチなところをやろうと思っていたのもあると思う。

後は低レイヤーとかPerlとかに興味を持って今に至る感じ。僕もpapixさんと同じで大学に入って始めた口なので、小中とかでやってる人を見るとすげーっと思ったりするけど、まぁ今も十分楽しいのでいいかなぁと最近思っています。

*1:父の職業に憧れがあった

*2:3年間同じクラスで同じ担任だったが、全てに置いてうまく行かなかった

singularityを使ったLaTeXのビルド環境を学科GitLabに構築した

自分がubuntuに作業環境を変えたこともあるのだけれど、最近の新入生のMacBookの容量が125GBとMacTeXをいれるには心もとない状態だったので、GitLabのCI/CDでLaTeXのビルドをしようとしていた。

paperist/alpine-texlive-jaにパッチをあたものを使っていたのだけれど、GitLab CIでLaTeXをビルドしようとする場合、 生成したPDFがroot権限になってしまうという問題がある。

su-execとか使ってどうにかしようとしたのだけど、ちょっとめんどくさいしidをdocker runの時に渡さないと行けないのが解りやすくないので厳しい気持ちになっていた。

学科システムでは別のコンテナランタイムとしてsingularityを使っている。

singularityはなんとuid/gidが実行時ユーザーと同じ状態で実行されたり、自動でホームディレクトリがマウントされるなど、今回のようなlatexのコマンドをコンテナから使う環境としてはぴったし。 ということでDockerfileをもとにsingularityのdefファイルを作った。

defファイル

gitlab.ie.u-ryukyu.ac.jp

dockerからの変更点

基本的にDocker時代のものをそのまま利用すれば良いのだけれど、singularityならではの変更点がいくつかある。

  • singularityの場合/tmpにファイルを書き出してbuildするのはNG

    • /tmpはホストの/tmpとマウントされてしまう
    • 今回はLaTeXのインストールスクリプトを置く場所を/latex以下にすることで回避
  • %environmentはビルド時に解決されない

    • PATHをいじってビルドしようとする場合は問題が生じる
    • %postの中で明示的にexportすることで解決

他にはepsを含めたいのでgostscriptを、makeしたいのでmakeをインストールするようにしている。 あまり関係ないが、CTANもミラーサーバーに向けているなどの違いがある。

あとはsingularity run latex.sif uplatex hoge.texとかしたいので、%runscriptで引数をexecするように書く。

%runscript
  exec "$@"

ビルド

singularity build --fakeroot latex.sif latex.def

使い方

sungularity runでも良いのだけれど、sifファイルにはシェバングが埋め込まれていて、自動でsingularity run出来る。

なのでこんな感じで使える。

$latex.sif latexmk
$latex.sif make

gitlab ciの設定は別のエントリで

合わせて読みたい

ie.u-ryukyu.ac.jp

ubuntuでdf: /run/user/1000/doc: Operation not permitted とか怒られる

なんかdfするとdf: /run/user/1000/doc: Operation not permittedとか怒られる。

$ df       
df: /run/user/1000/doc: Operation not permitted
Filesystem     1K-blocks      Used Available Use% Mounted on
tmpfs            3214652      2404   3212248   1% /run
/dev/nvme0n1p2 959863856 160878272 750157376  18% /
tmpfs           16073244    116640  15956604   1% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs               4096         0      4096   0% /sys/fs/cgroup
/dev/nvme0n1p1    523248      7984    515264   2% /boot/efi
tmpfs            3214648       136   3214512   1% /run/user/1000

ググったとことdfのバグとか、flatpackのバグとか主張しているサイトが見つかったが、ubuntuの場合はxdg-document-portalを止めればいいらしい。

$ systemctl --user stop xdg-document-portal.service

問題なさそう。ちなみにディレクトリは消せなかった。

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
tmpfs            3214652      2416   3212236   1% /run
/dev/nvme0n1p2 959863856 160933308 750102340  18% /
tmpfs           16073244    377076  15696168   3% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs               4096         0      4096   0% /sys/fs/cgroup
/dev/nvme0n1p1    523248      7984    515264   2% /boot/efi
tmpfs            3214648       140   3214508   1% /run/user/1000

askubuntu.com