It's okay to be weird

レールの無い道を行くプログラマーのブログ

2021年冬季休暇にやりたいこととか近況とか

ここのところ仕事もプライベートも忙しくてなかなかプライベートな時間でスキルアップをできていない。ただ1年中突っ走る生活もしたくないので、プライベートなスキルアップは余裕のある時でいいかなと思っている。仕事を通じて十分スキルアップさせてもらっているということもあり。
人生で何を大事にするかなんて問いも浮かんだりしている。その辺については前にも少し書いた

それはさておき、少し気が早いが冬季休暇にやりたいことをNotionページに書き出していっている。
まずやりたいこととしてはGatsby Starter Blogほぼデフォルトのこのブログをもっと充実させたいのが一つ。そして、開発しているGo製OSS takolabelを改善すること。あとは密かに狙っているghへのコントリビュート。そして遊びでは今のMicrosoftが出してRTS界の重鎮Relicが開発したということで興味を持って購入したAge of Empires IVをプレイすること。
休みって毎回あっという間に終わってやりたいことの20%もできずに終わるのだけど、無為に過ごすよりはある程度目標を立てておいた方が有意義に過ごせるだろうなと。

2021年もカウントダウンが始まってきた。このままいい年にしたいものである。

Vimを始めとして環境を見直してみた

僕は開発環境にはJetBrains IDEsを使って、その他のテキスト編集にはVimを使ったりVisual Studio Codeを使ったりといったことをやっているのだけど、ふと使う道具を少なくしようとVisual Studio Codeは使わずに、がっつりした開発以外のテキスト編集やスクリプト作成などにはVimを使おうと思い立った。高機能なVisual Studio Codeを単なるテキストエディターとしか使えておらず、Vimはカスタマイズや操作を組み立てるのが楽しかったり、ターミナルから抜け出さなくて良いというのが理由。

それでまずは6年前に読んだ実践Vim(の英語改訂版)を読み返した。プラグインの機能はほとんど使用せずに様々な操作が可能なことを教えてくれるこの本はVim wayを知る上で本当にいい本だと思う。新たな学びもあったけど、ふとした時に出てくる自信のない操作も多い(マクロとか)。

あとはVimを使った開発の動画を観たりした。良かったのはこの2本: tmuxとvimによる開発作業フロー (動画) | 週休7日で働きたい【解説】開発ライブ実況 #1 (Vim / Go) 編 by メルペイ Architect チーム Backend エンジニア #mercari_codecast | メルカリエンジニアリング。特にメルカリの方のやつは作業が速すぎてRTSのプロゲーマーを観ているようだった。

んでそのままの勢いに実践Vimと同じ著者が書いたVim 8とNeovimについてのModern Vimを買って読んだ。といっても "Craft Your Development Environment" と副題がついているように、開発環境向けの機能やプラグインの紹介が多く、僕の利用目的とは合わない感じだったのでそういうプラグインもあるんだな、Neovimにはそういう機能があるのねー、程度にざっと読んだ。

動画を観た影響もあり、Vimで開発もやってしまったらかっこいいなーと思いつつ、カスタマイズや操作の修練も行き過ぎるとけっこうダルいなと思ってしまったし、JetBrainsのAll Products Packにお金を納めたばかりだったので一本化はやめることにした。

そして出来上がったVimの環境なのだけど、とりあえずNeovimにcoc.nvimを入れてLSPによる恩恵に預かることにはしたのだけど、コンフィグやプラグインはかなりミニマルな構成にした。昔入れたプラグインやキーバインドも使ってないものはごっそり捨てた(dotfilesはこちら)。

あとはtmuxについてtmux 2を読み返したけどそんなに発見が無くて十分使いこなせてる感を感じたあと、Tao of tmuxをざっと読んだり、fzfを使った便利なコマンド無いかなーと探したり(結局使いたいと思うものは増えなかった)といったことをやっていた。

とりあえずVimの環境はスタートラインに立てたので、あとは必要に応じてカスタマイズしたり習熟していきたいと思う。というこの記事をNeovimで書いたのであった。

ISUCON11でISUCONに初参加した

ISUCON11に同僚の @akht_ikd と2人チーム「team”渇き”」として出場した。
結果としては58450点の58位で予選落ちだった。

詳細なレポートは @akht_ikd がブログに書いてくれたので個人としての感想などを。

まず、過去問などをやったり他の人がやったことを調べるにつれて、自分の思っていた以上に幅広く深い知識が要求されるコンテストだということが明らかになっていき、まだまだ知ることが無数にあるのだなということを痛感した。
また、近年は学生で上位に入る方々も多く、世の中には本当に優秀な人々がいるのだなぁということも知れた。

チームの面でいうと、ISUCONに出てみないかと声をかけたところ、即座にのってくれた @akht_ikd には本当に感謝している。
スクリプトを作ってくれたり、やることリストをまとめてくれたり、競技中の改善にしろ、かなり頼りっきりだった。今回楽しめるレベルで参加できたのは彼によるところが非常に大きい。本当にありがとうございます。

大会前は過去問をビデオ通話を繋ぎながら一日かけて一緒に解いたりして、部活みたいな面白さがあって良かった。
まだまだ自分自身のスキルは足りないが、こうやって一緒に行動を共にできる仲間がいることに感謝。

大会が終わった後の大会公式Discordでの感想戦の話なども分からないことが多かった。個人としては自分の足りなさをさらに実感する初参加となった。チームメイトに頼りっきりになってしまったことも反省している。
分からないことがドサッと来ると頭や手が動かなくなる癖があるので、物事を分解して各個撃破できるスキルをもっと身につけなければと思う。

渇きが増した大会だった。実力を今よりもっとつけて、来年もまた参加したい。

将来の生活の質より毎日の生活の質

この連休中、ずっと料理との付き合い方に向き合っていた。

去年の10月に初めての一人暮らしを始めて、最初の頃は楽しかった料理も、だんだんと面倒なものに思えてきて、特に夜の料理は仕事終わりで疲れている中、コードを書いたり勉強したりする気力や時間を奪う邪魔者になってしまっていた。
ついには料理を放棄して、朝シリアル、昼レトルト丼、夜冷凍弁当という全く料理をしない生活を数週間ほど続けていた。結果的に、因果関係は定かではないが、調子があまり良くない状態になっていた。

このままではまずいと思い、夜に料理をせずに栄養があって美味しいものを食べるということをテーマに、ホットクックをレンタルしてみたりと色々と策を練った。週末に副菜を作り置きして、朝にホットクックで夜に出来上がる予約調理をするという方法を考えたが、大量の作り置きがかえって負担となりあまり良いとは思えず、これといった解は出せずに時間だけが過ぎていった。

そんな時ふと、夜は勉強せずに料理をして、くつろぐだけの時間にしたらどうだろうか、という案が思い浮かんだ。それならば料理は邪魔者ではなく、むしろ楽しむものとして付き合うことができる。

そう考えるとなんだか途端に気が楽になった。更にそこから派生して、毎日の生活の質を落としてまでスキルアップに勤しんだ結果、将来にそれだけの価値のある生活が待っていると言えるのだろうか、と思えてきた。

僕はふと思い立って極端なことをやりがちな癖がある。自分を追い込めば何者かになれるのではないかと、他は捨て去って一本に集中してしまいたいと発作的に思うことがあるのだ。しかし結局それは持続可能なものでなく、調子をくずしたりして頓挫して続かないことが多い。 以前に一流エンジニアなんて目指さなくていいのかもなんて記事を書いたことがあるが、その時も疲弊してしまったあとに書いたものだ。

将来の生活の質なんて約束されていないのだから、毎日の生活を思う存分楽しんで、毎日の生活の質を高めたほうがいいのではないか。そんな気持ちになってきた。

だからといって全くスキルアップの時間を無くすのではない。朝をスキルアップの時間にするのだ。毎晩早く寝て毎朝早く起きて、ベースの練習をして、運動して、無理のない範囲でスキルアップをやっていく。なんだかこれを書いているだけで、明日からが楽しみになってきた。

さて、連休が終わる。今夜は早速豚キムチを作って食べた。なかなか美味しかった。
明日からは同僚氏と朝活をやっていく予定だ。早起きしていいスタートを切っていきたい。毎日の生活の質を高めていくのだ。

個人Webアプリ作成という荒野に立った

const writeWebAppWithStrongWill = true; で宣言したとおり、Webアプリ作りに着手している。

技術スタックは所属するペパボ ホスティング事業部でこれから使っていくものに沿っていく方針。ひとまずTypeScriptとNext.jsを使うことは確定している。

アプリの肝となるノードを描画するUIが必要なので色々と検討した結果、https://github.com/wbkd/react-flow を使うことに決めた。この辺のライブラリー、ドキュメントがあまり充実していないので使いながら覚えていくしかなさそう。

ノードUIライブラリも決まったので、ひとまず npx create-next-app したあと、ESLintとPrettierを導入したところまで進めた。ルール多すぎてどう設定したらいいか分からん状態だったけど、そのことをTwitterでつぶやいたらアドバイスいただけて、ESLintとPrettierの共存方法が分かり、ESLintはrecommendedを使ってルールはあとから追加していく形で良さそうと分かった。

次はMaterial-UIを導入しようとしているのだけど、Next.jsのCustom AppやらCustom Documentが分からん、むしろNext.js何も分からん状態になっている。 ReactとNext.jsは半年ほど前に1回チュートリアルをやったのだけど、完全に忘れてしまっているのでもう1周しようと思い、ひとまずReactのチュートリアルを終えた。
モダンなReactの書き方を教えてくれるヘルシンキ大学の Full stack open もまた1周するか迷っているところ。

学習しながら作るの、体系的に学ぶ癖のある僕にはさじ加減が難しいのだけど、最初から全部を把握することは諦めたほうがいいだろうし、あまりチュートリアル煉獄には陥りたくないので、つまみ食いしながらアプリを作っていきたいと思う。

やってくぞー。

const writeWebAppWithStrongWill = true;

同僚たちと毎週夜にCode Completeの読書会をやっているのだけど、本編自体は早めに終わったあと、僕の「雑談いいですか?」という一言から、仕事とプライベートでやっていることについて色んな話をした。

その中で、GoやらTypeScriptやらLinuxやらサーバー運用やら、やりたいことがありすぎて何をやっていくべきか見失っているみたいな話をした時に、ずっと温めていたあるWebアプリの話をしたら、「それいいじゃないですか」と言ってもらえた。

自分でもなかなかのアイデアだとは思っていたけど、客観的にアイデアの段階で評価してもらえたので、これはやっていくしかないという気持ちになった。

作るとすればTypeScript + Next.jsで作ろうと思っているのだけど、業務の中でもTypeScriptはこれからやっていく必要がありそうだし、まずはこのWebアプリ作りにフォーカスして、必要ドリブンで学習しながら作っていこうと思う。

常時リモートワークの中で人と話す機会が少なくなっている中、人と話す中で自分の中に眠っているものを発見できたりと、やはり人と話すというのはいいものだなと思った。

毎日時間を作ってこの温めてきたWebアプリを作り上げていこうと思う。やり遂げるのだ。

僕が参加しているオンライン勉強グループ「きまべん」の近況とメンバー募集のお知らせ

僕が参加しているScrapboxを利用したオンライン勉強グループ「きまべん」の近況についてお知らせしておこうと思います。

これまで

以前僕のブログできまべんについて紹介したものとしては以下の記事があります:

blog.okweird.net blog.okweird.net

そもそものきまべんが何かであるというのは1つ目の記事を見ていただくと分かりやすいかと思います。 最近はSlackでのやりとりも活発になってきました。
また、2つ目の記事にあるように、日々の勉強とは別に、時折イベントを開催し、オンラインもくもく会をしたりといったことをやってきました。

それに加え、最近はReal World HTTP 第2版 輪読会を1年弱に渡って行い、Real World HTTP 第2版を無事読了することができました。

これから

きまべん発足当時は、朝6:00〜9:00、夜20:00〜23:00という「決まった時間に勉強」が略の、ジャンルレスな勉強グループとして発足しましたが、最近定義が更新され、ソフトウェアエンジニアのための「きまぐれに勉強」するグループとなりました。
これは参加メンバーがほぼソフトウェアエンジニアのみであることと、勉強時間は各自自由に取っているという実体に即するための変更となります。

2021/02/23(火)からは第2回輪読会をエンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリングをテーマに行っていきます。
キックオフ)にて色々な候補が上がりましたが、一般的な知識が得られてチームに実際に適用できそうとのことからこの本に決定しました。

メンバー募集しています!

そんなきまべんですが、いつでもメンバーを募集しています。第2回輪読会に興味がある方や、勉強仲間が欲しいというソフトウェアエンジニアの方がいたら是非 @tommy6073 までお声がけください。その際はきまべんのはじめにページを読んでいただけると幸いです。

あなたも一緒にきまぐれに勉強しませんか?