何だか危機感の漂うタイトルだが、去年のタイトルと対になるようにするとこうなってしまった。
とりあえず生きてはいる。
まあ調子の良い時もあればそうでない時もあるといったところか。
逆に去年が働きすぎだった気がしないでもないのでこのくらいでちょうどいいのか?とも思うが、ちょうどいいくらいのところで留まるために今のような働き方を始めたわけではないので、来年はもう少し何とかしたいところではある。
調子の良い時ばかりフカしていても仕方ないので、とりあえず振り返っていこう。
お仕事の振り返り
終わったお仕事から終了順に。2021年12月〜2023年1月 週2日 Go
この会社は平日1日、休日1日で稼働日を確保していたのだけど、徐々に自分に振れるようなちょうど良い粒度のタスクがなくなりつつあるような雰囲気を察知し、自分に振るタスクを調整してくれている方の負担のほうが大きくなってきたんじゃないかな…という懸念がありこちらから終了を打診した。1年2ヶ月ほどお世話になった Go 開発のお仕事が終わりました。整備されたコードベースは学びが多く、組織・サービスの成長の過程を共に味わえて刺激的な経験になりました。ありがとうございました!(なまはげ乱入イベントのあるお店にて最後の会👹🍻) pic.twitter.com/TSzbyche1C
— ザネリ (@so_zaneli) January 31, 2023
思えばこちらの前に同じく平日1日、休日1日で稼働していた会社の終了理由も同じようなものだったので、やはり他の社員の方と別働隊として休日も稼働するような働き方だといずれこういう状況になるものなのかもしれない。
社員だけで回るように組織が安定してきたのであれば良い事ではあると思うし、著名なエンジニアの方など集まる凄い開発組織になってきているので、今後は外から応援したい。
大規模リファクタリングを厭わず常により良い状態を目指して新規開発と改善のサイクルを積み重ねていく開発姿勢は刺激的で楽しいものであった。
個人的にはpdfcpuを利用したPDF既存機能の改善タスクがうまくいったようで、ある程度の満足感もある。
2020年12月〜2023年5月 週2日 Go
今振り返るとTwitterでたまたまお仕事募集のツイートを見かけて応募しただけの、それまで中の人と特に関係値も築けていないどこの馬の骨とも分からない私によくこんなタスクを任せてもらえたな…という感想があるが、とにかくそういう大きいやつとひたすら格闘していた。というか、自分に関わらずこの決して多くない開発チームでこんなインパクトのあるものを開発しているのか…という"小さなチーム、大きな仕事"感は客観的に見ても強さであり美しさでもあるように思う。
よくここに混ざって開発ができたなぁ…食らいついていけていたかは何とも…だが。
最後のほうは決済が絡むような神経を使う処理があり、正直うまく着地できたかどうか分からないくらいのタイミングで終了させてもらった、というのが実情。
ここのお仕事での数年間で、Go,GraphQL,GCPなどについて随分深く使いながら学ばせてもらった。
手厚いレビューやE2Eテストの堅牢さと実行速度の改善など、勉強になる事が多々あった。
とあるサービスのAPIについても理解が深まった。(いや、あれはAPIというかもうある種の開発環境みたいなものだったな…。)
こちらも新しいプロダクトのリリースをアナウンスしていたりと発展が続いているようで、外から応援を続けたい。
2019年10月〜2023年9月 不定期 Scala
去年は幽霊部員化していたが、契約終了までの数ヶ月はScalaで新規バッチを開発したりと今年は多少稼働できた。そもそもScalaプロダクトではAPIサーバーしか既存実装がなく、バッチの仕組みを新しく考えて作るところからだったので、それなりに手応えのあるお仕事だった。
ここはこちらから申し出て終了ではなく相手側都合だったので予定外と言えば予定外なのだが、いきなり終わったわけではなくそうなるだろうな…という空気はだいぶ前から感じていたので致し方なしというところ。今月でお仕事が一社終わり、今日が最終稼働日だった。この時誘われて、翌月から仕事させてもらうようになったので4年か。一時期稼働できない期間もあったけど。前職同僚や前々職からの同僚もいたのでずいぶん長い付き合いになった。https://t.co/zJDpQda7WD
— ザネリ (@so_zaneli) September 15, 2023
色々と会社や組織の再編やなんやかんやがあり、まぁこの状況で自分のような半端者の居場所はなくなりそうだな、という見立てはあった。
昔の同僚から誘われたのは純粋に嬉しかったし、前職・前々職からの付き合いの長い方々とまた一緒に働けるのも楽しかった。
特に契約終了に至った事に悪い感情はなく、むしろもっと自分が尽力できていれば…いやしかし開発サイドでどうこうできるたぐいの話でもなく…という申し訳なさや無力感は多少あるにはある。
中の人の情熱の火は途絶えていないと信じているので、今後もぜひとも頑張ってほしい。
(何だか謎の上から目線っぽくなってしまったが適切な言葉が浮かばなかった)
またビールが黒くなるまで語り尽くしましょう。
2019年9月〜現在 週2日 Scala
以下、継続しているお仕事。相変わらずScalaでガリガリバッチやAPIの開発を続けている。
何かScalaの凄い技術をアクロバティックに使って洗練されたこんな素晴らしい事をやってますよ、という感じではない気がするのだが、地に足をつけてきちんとした自分たちがやるべき開発をやり続けていて、それを当たり前にやり続ける事自体が凄い事なのだと思う。
この会社を持ち上げるために他社を下げる意図はないのだが、過去Scalaを採用してはいるが何だか凄そうな技術を使う事に気を取られすぎて開発者自身が十分理解して実装できているのだろうか…?そのメリットを享受できているのだろうか…?と思い悩むような開発現場に遭遇したこともあるので、自分たちの手に負える範囲内で最大限にそのプログラミング言語の力を発揮させるというのは結構重要な事だと個人的には思っている。
Cats Effect,doobie,FS2を組み合わせた開発はとても快適で手に馴染んでいる。
現状、Scalaでのお仕事はここ一社となったが、ここでのお仕事をやっているとScalaでの開発が当たり前過ぎて、Scalaが下火だとか不人気だとかの世のトレンド(?)はただの雑音かのように聞こえる。
2022年6月〜現在 平日夜 Go,QuickSight
データ基盤業務的な事を引き続きやらせてもらっている。Goでのバッチ開発もやっているが、Amazon QuickSightで分析やダッシュボードを作成するというのは他のお仕事ではあまり無い変わり種の作業。
QuickSight APIを利用した便利ツールなども開発しており、APIが安定していなかったりドキュメントが少なかったりで色々と苦戦する事もあったがそれも含めて楽しい経験になっている。
QuickSight API,「別の分析の内容を丸っとコピーする」というのがシュッとできそうでできない。
— ザネリ (@so_zaneli) March 30, 2023
DescribeAnalysisDefinitionで返ってきた内容をUpdateAnalysisに渡すだけでできるかと踏んでいたが、見通しが甘かった。😞https://t.co/rlNYhu8rMy
QuickSight API まだドキュメントが足りてない感があり暗中模索。🫠
— ザネリ (@so_zaneli) March 31, 2023
DescribeAnalysisDefinition、APIは存在するのにページ自体無い?と思ったらja_jpには無いけど大元?のほうにあるにはあった。https://t.co/fJ0wCxqV4fhttps://t.co/U2oBonqxAy
QuickSight API の(おそらく)ドキュメントとして明記されていない事前条件などトライ&エラーで探り当てて、とりあえずやりたい事が出来たから一旦良しとしよう。ブラウザ上で作成可能な分析の定義がAPIのバリデーションに引っ掛かる事があり、Describe➡️Update間でDefinitionを加工する必要があった。
— ザネリ (@so_zaneli) April 4, 2023
QuickSight API くんの気持ちに寄り添う。
— ザネリ (@so_zaneli) May 12, 2023
QuickSightに限らず、embulkでデータを用意したり、ParquetとCSVのデータを比較するためにありもののツールとSQLを駆使したりと色々やらせてもらっている。Amazon QuickSight API, やっぱりブラウザから作成できる分析定義がAPIのバリデーションエラーになる事象がいくつかあるように思うな…。🤔
— ザネリ (@so_zaneli) July 20, 2023
む… embulk-input-bigquery ってネストしたカラムは読み取れない…???https://t.co/E5F4KxDN47
— ザネリ (@so_zaneli) April 28, 2023
こちらの件ですが、ネストしたカラム(RECORD型のカラム)を含むデータも期待通り読み取れる事を確認できました。大した情報もなくて恐縮ですが、embulk-input-bigquery との比較でいうと、ファイルとして一度GCSにアップロードする関係でkeyfileに指定するアカウントがBigQueryに対する権限だけでなく
— ザネリ (@so_zaneli) May 2, 2023
欲しかったやつが見つかったかもしれない。別形式(ParquetとCSV)のデータを突き合わせたかったけど、これでそれぞれの値をゴニョればいけそう。「Not under active development」が気にはなるけど、とりあえず手元のParquetファイルを食わせて正しく読み込めてはいる。 / dsq https://t.co/HA9mmR6LTR
— ザネリ (@so_zaneli) December 13, 2023
2022年9月〜現在 不定期 Go
色々あって不定期ながらサーバーサイド開発者は自分一人のみ、という体制で始まったお仕事だったが、フルタイム開発者が増えて安心もあり、人が増える事による問題が起きないかの不安もあり。来月からもう一人サーバーサイド人材が増え、ありがたい事ではあるのだが、自分が一から構築したこのシステム構成で果たして3人同時開発に耐えうるのか?という不安は拭いきれない。「ぼくが考えた最強には程遠いけど一人開発短時間低コストでそれなりの機能を提供するプロダクト」だからなぁ…。 https://t.co/hfkY0yHWtf
— ザネリ (@so_zaneli) May 16, 2023
ただ、ここは自分が一からサーバー側実装を書き始められた事もあり、こういう構成になっていたら人が増えた際にもスケールするはずだという自分の思いをブチ込む事ができた。とりあえずスキマ時間のみ参戦の自分を含めサーバーサイド3人体制になったが、今のところ大きな交通渋滞もなく開発を進められている気はする。いい人が来てくれた事も嬉しいし、自分が0から作ったアレがとりあえず自分一人での開発以外でもそれなりに回る事が分かってよかった…。 https://t.co/X3bXUQLdyh
— ザネリ (@so_zaneli) June 10, 2023
自己評価ではその思いは実際に人が増えた現在、それなりにうまくワークできてはいると思う。
今後、そんなに人は増やさず小さなチームのままやれる事をやり続け、そのうちあまり手をかけずとも回るようなプロダクトに成長してくれればいいのだが…まだ道半ばでやる事も色々ありそうではある。
今年10月〜現在 週2日 Go
こちらは唯一今年新しく始まったお仕事先。9月で予定外に終わったお仕事の代わりがシュッと見つかってよかった。
Twitterでお仕事募集を見かけて応募したものになるが、直接の面識はない(はず?)ものの、間接的に同じところで働いていた事があったり何となく認知はされていたりという距離感の方が募集をされていた事もあり、割とすんなり話が進んだように思う。今日からGo,GraphQLを使った新しいお仕事始まった。初日でPR2つ出して1つマージされて本番デプロイまでできたしまずまずの滑り出し。やるぞやるぞやるぞー。💪
— ザネリ (@so_zaneli) October 3, 2023
Go, GraphQL, GCPなどを駆使した開発で、過去の経験が活かせている。
既存機能に追加する機能開発やリファクタリングなど少しずつできる事をやらせてもらっている。
改善できる箇所は色々ありそうだが、既存構成に寄り添いつつどこまでやれるのか、匙加減が難しいようにも思う。
お仕事振り返りまとめ
去年からの継続が3社、新しく始まったのが1社、終わったのが3社。あと、確定ではないが来年早めに終わりそうなのが1社。
のんびりやるならこれくらいでもちょうどいいか、とも思っているが、前述の通りのんびりだとかちょうどいいだとかをかなぐり捨ててきたつもりなので、悪い意味で落ち着かないように前を向いていきたい。
…それはそうとX(旧Twitter)が徐々になんかアレになってきて、自分もあまりツイートしたりする機会が減り、別に執着しなくていいかと思っていたのだが、意外とTwitter経由で得られた仕事があった事を再確認した。
OSS活動
個人的な興味でGoのDBライブラリsqlcにコントリビュートしたらおせんべいをいただくなど。お!sqlc に出した初PRマージされてた。🙌 https://t.co/zXnYiVJStI
— ザネリ (@so_zaneli) February 4, 2023
sqlc にちょろちょろ追加でPR出していたけど、1つマージされた。👍 https://t.co/0l75owGOMA
— ザネリ (@so_zaneli) February 14, 2023
残り3つともマージされた!これで今のところ sqlc に出していた PR は全て取り込んでもらった事になる。issue 見ていくと他にもやれそうな事があるかもしれないし、時間があったら確認してみよう。https://t.co/6am01TJyR1
— ザネリ (@so_zaneli) February 23, 2023
時雨堂が利用している OSS のバグを取っていただいたり、貢献していただいたりすると粗品を送らせていただいております。sqlc のバグ対応ありがとうございました! https://t.co/omv2Jccmq6
— V (@voluntas) March 14, 2023
自分のライブラリも久し振りに更新。私のコミットも少し入った sqlc 1.18.0 がリリースされたようだ。👀
— ザネリ (@so_zaneli) April 27, 2023
(自分がやった修正とは関係ないけど)MySQLのIN句に対応したらしいのが個人的には嬉しい。https://t.co/qsD6rWuKNA
なんと、そうでしたか。こちらこそ使っていただきありがたいです。先ほどリリース行いまして、mvnrepository\.com にはまだ反映されていませんが https://t.co/CBynhbKL2a にアップロードされている事、libraryDependencies に新バージョン指定して依存解決できる事を確認できました。
— ザネリ (@so_zaneli) October 14, 2023
scalikejdbc-athena の Scala3 対応版をリリースしました!🚀使ってくれている方がいらっしゃるらしく嬉しく思います。(Scala3 対応のPR自体は2年も前にいただいていた…🙇ケツを叩いていただいて感謝です)https://t.co/0lBnQFUcla
— ザネリ (@so_zaneli) October 16, 2023
その他
今年もちょろちょろ旅に出た。旅は良いね。
五年振り三度目の沖縄を満喫しましたとさ…! pic.twitter.com/ozP1oLD2pL
— ザネリ (@so_zaneli) March 21, 2023
船出の時間だオラァ!!!
— ザネリ (@so_zaneli) May 30, 2023
24時間デジタルデトックスの航海が始まる…! pic.twitter.com/zR6GRiEgX0
都内某所。 pic.twitter.com/5xuaEDRCN2
— ザネリ (@so_zaneli) May 31, 2023
開発合宿に来ました。主催の私を含め総勢一名もの参加者が集まりわいわい楽しくやっています。「旅館のあのスペース(広縁)」あって最高。海の見える作業スペースに、プール(は入ってないけど)まである。 pic.twitter.com/avHfcnIudg
— ザネリ (@so_zaneli) September 18, 2023
来年もガリガリコードを書いて、ちょろちょろ旅に出て、もふもふ猫を撫でて生きたい。夜行バスの最高峰のひとつ(?)はかた号で14時間かけて博多から新宿に帰る。ケツの肉が取れないか心配だが、個室席のプレミアムシートを取ったので大丈夫だろう。🚎😴 pic.twitter.com/ZaAYeqSrBl
— ザネリ (@so_zaneli) September 19, 2023
生きよう。