転職して3年

みなさんお元気ですか、と1年前と全く同じ挨拶で始めることにします。

さて、わたしは自分のチームを持ち、必死に奮闘する毎日です。プレイヤーの役割もまだ担っているので、様々なレベル感の業務に立ち替わり向き合っている状況です。

プライベートでの変化は特になく、ただただ仕事ばかりという生活のままでいいのかな、というぼんやりとした思いをようやく抱き始めてもいます。言い換えれば、技術者としての興味が一段落したのかも知れず、他のことを考える余裕ができたのでしょう。

全然違う仕事をしてもいいのかも。でもきっと、そんなに甘くないでしょう。自分の能力の限界も見えてきた状態ですし、いよいよ中年らしくなってきました。

相変わらず、数学基礎論型理論記号論理とトポスについても考えていた一年でした。そしてなんと、これらもいったん自分の中で一息ついたのです、つい先日。途端に、平凡な現実に戻された数ヶ月でもあります。

ちょっと仕事量を減らして、身辺整理ってやつが必要なのかもしれませんね。旅行にでも行こうかな。あー、でも、あのリリースがー、とか言ってると無理だからなあ。ワーカホリック、よくないな。

 

転職して2年

f:id:ironoir:20220605165931j:image

早い。みなさんお元気ですか。なぜか自宅から遠く離れた地のコメダ珈琲店からお送りしています。

最近買ったiPad miniにHHKBをつなげております。それなりにmy new gear...しています。

iPad Proも所持していますが、持ち運ぶのは断然こちらがいい。マンガや小説を読むのも。iPad Proが古い(確か第3世代)のもありますが、見た目としてもHomeボタンがないほうが好きです。操作は少し面倒ですけど。

現行のiPad Proとも迷いましたが、Touch IDをつけてほしい。あと、技術書籍と論文を読むときぐらいですよね、必要なのは。動画を見るのは Pro/mini 両方でやるので、これも場合によるなあ。なんなら同時に別の動画を再生させていたりもするし。なので、次の世代とかで買い換えるかもしれませんね。買って以来、ずっとiPadを褒め称えていますが、これはこの数年、揺るぎませんね。

それはともかく、転職後、丸2年が経ちました。実は半年前に異動しまして、面倒を見るプロダクトも役割も変更になっております。平たく言えば、一般のECサイトからエンタープライズ向けの購買システム連携機能に、そしてなんと、アプリレイヤからシステム基盤の人になりました。ぜんぜん平たく言えてねえな。

エンタープライズ向けなので社外の方でご存知の方は少ないでしょうが、弊社、メインとなる一般向けECサイトとは別に、購買システムとの連携機能を持ってます。購買システムそのものも一応、持ってます。ここが近年売上を伸ばしていて、そこに引っ張られる形で異動となったわけです。

ただ、個人的には異動そのものよりも、アプリではなくてシステム基盤担当になったことのほうが、変化量ははるかに大きいです。実はずっと今までアプリ畑で生きてきたわけで、業務でインフラをしっかり運用した経験はないんです。あっても小規模だし、視点はアプリ屋からのものなので、責任もないし、AWSGCPもわかる範囲でしか触っていなかったわけです。

そんなわけで、キャッチアップが大変な半年でした(まだ学習中ですが)。ぶっちゃけシェルスクリプトの書き方から始める必要ありましたし、それなりのリクエストを捌くWebシステムなわけで、ログの運用まわり、ネットワークまわり、クラウドインフラの学習をしながら、異動先のプロダクトのことも知る必要があるわけで、この年齢での「ジョブチェンジ」はなかなかのものなんだな、と我ながら実感しました。

とはいえ、これは自身が望んだことでもあります。転職活動の際の基準の中には「大規模Webシステムの運用に関わりたい」がありましたし、苦手意識もありました。Webシステムの本格的な運用の経験は、個人や小さな会社では難しい場合が多いです。その意味では願いが叶いましたし、モチベーションは高いのです。

ただ一点、後悔を述べるとすれば、ちょっと願いが叶って張り切りすぎまして、冷静さを失ってしまい、お仕事としてあんまりよろしくない状況だったりもします…幸い、周囲の助けにより顧客影響を与えるのは防いでもらっていて、結果的には一番いいところで失敗させてもらって、良い経験を作ることができています。このブログを書ける状態にまでは、お仕事的には落ち着いたわけです。

圏論DBのこととか、最近考えてる言語のこととか、他にも話題はありますが、いったんはここまで。

コメダのカツパンはちょうどよかった。ダイエットしたいのでシロノワールは我慢。それでは。

転職一周年

ironoir.hatenablog.com

もう一年ですか。早いですね。概ね、いい感じです。

職場環境の安定感

現職で感じる一番はこれ。といっても、ビジネスは目まぐるしく動いていて、ありがたいことにすごい勢いで伸び続けていますし、在宅勤務しつつも忙しさはなかなかです。ここでいう安定感は、そういった状況に対するアプローチが一貫しているので、メンタル的な安定が保たれやすいこと。副次的には、自社内で構築・運用しているサービスなので、融通が利くことが多い(これは部署によりますが)。そしてなにより、一緒に働くメンバーが総じて(平均すると、ぐらいの意味で捉えてください)穏やか。他ならぬ自分自身も少し影響されて穏やかになったはず。これはもともと求めていたことでもあるので、大変ありがたい話です。

規模による文化

超大企業とまでは言わないまでも、それなりの数の従業員が全国/国外で働いているわけで、何をするにも、これまでのように身軽ではいられません。合意をとって動かないと、存在すら気付いてもらえない事態になります。ただなぜか、それなりに調整業務はできているようで一定の評価をもらったりはしているものの、重りをつけて動いているような感覚にようやく慣れつつあるところです(実際は家で座っているだけですが)。IT技術者以外という意味も含め、多様な人々と意見をすり合わせる機会は確実に増えているので、その点でもいっそう鍛えられますね。その割に人間的なしがらみはほぼないのは不思議。文化と呼ぶべきか、単に私が鈍感なのか。。。

技術的にはレガシーとの戦い

モダンな開発をしている箇所もありますが、わたしはメインのバリバリ稼働しているECサイトの人なので、日々レガシーとの戦いです。「成長痛」と表現したこともありますが、20年、積もったものをみんなでがんばって少しずつ切り崩している状況です。その中で新機能も作るのですが、その度にわりと「なんでやねん」を心で唱える羽目になります。個人的にはなんとかしたいと思って、ただし上記の規模感の話と合わせると、これまでのように強引に一人でがんばって一点突破を狙う、という手法は通用するはずもありません。作戦を練って、しかし自分の未熟さに日々うなだれたりしつつ種を蒔いている最中でございます。あと、最近は、採用のためにも技術的な発信(ブログ)に力を入れていて、はてブの数で喜んでますね。巨大ECサイトの開発に携わりたい方、絶賛募集中でーす。

いやー、それにしても、重りを外して動き回れる、個人の趣味開発は天国じゃー

いい上司がいます

これは本当に幸運なのですが、良い上司の方々と働けています。年齢の上下にかかわらず、的確な指導をくれる人間ってとても少ないわけですが、現在のところ(こんな私でも)素直に指導を聞けている状態が続いています。あ、年下の上司もいます。上層部にシステムをわかっている人間がいることもこの規模だと本当に強い。あと、程度問題でしょうが、本当に数字で合理的に判断する会社なのでそこはありがたい。少なくとも性には合ってます。たまに、もう少し「遊び」があってもいいのかもと感じる瞬間もありますが、窮屈というわけでもないですね、不思議と。

まあ、完全在宅で仕事以外のコミュニケーションが少ないのは、へーしゃだけの事情ではないですが、まあ、悩ましいですね。

のびしろいっぱいなのでがんばります

もう何年間も伸び悩んでいた気もするので、環境って大切です。ひきつづき、がんばりますのでよろしくです。

抽象化が得意なのではない、具体化が嫌いなだけだ

要旨を抽象化すると?

タイトルの通り。

具体的な説明

という冗談はさておき、本日感じたことです。わたしはと物事を抽象的に考えることが多く、学生の時には哲学をほんのちょっぴりかじったりしましたし、現在はプログラミングでの「よりよい設計」に心血を注ぐ、しがない中年です。

抽象化思考ができることは、個人的には「特技」だとすら考えていたのですが、「具体的にはどうするんだよ」という(世の中でよく見る)問答には大変弱いということが判明しました。正確に言うと、具体的に考えることが、嫌い。だって「本質」はもうわかってるんだから、残りはあまり興味がない。やってみればできるのですが、大変苦痛なので、「苦手」というより「嫌い、面倒」なんだなと認識を新たにしたのでした。

ここまででも、具体的なことが書いてないですよね。正に、こういうところです。お仕事上はもちろん頑張って必要に応じて具体例を出すし、なんなら時間をかけて説明を考えて披露すると褒められたりもするのですが、価値観として「具体」に重きを置いていない

ところが、周囲はもちろんそんな人間は稀なので、最近「つまりどういうこと?」と聞かれることが増えました。人がたくさんいる会社に入って、知らない人に自分の状況や意図を説明する機会が増えてきたが故だとは思いますが、これが予想外にきつい。「いや、もう一言でまとめちゃってんじゃん、そこから考えてくれよ」と一瞬だけ考えてしまう。これが大きな間違いであることを知っているだけ、まだマシですが。

いい加減に具体的なことを書きましょう。それなりの規模の企業に属すると、他人からの評価とか出世というやつが近くに寄ってきます。本当にそんなことにも興味がないので余計につらいんですが、人事評価のために長期間の目標を立てろと言われます。しかも具体的な目標を。これが圧倒的に向いていない。少なくとも、とても時間がかかります。「具体例を考えるの面倒だなあ」ではなくて、「こんなことをしてしまうと具体に縛られてしまう, よくない」と考えてしまうのです。つまり、むしろ積極的に拒否しているのです。

ま、他人が抽象的な説明しかしていなかったら、絶対問い詰めるんですけどね!

…すみませんでした、サボらず頑張ります!

新しい四半期と自作WebAssembly進捗など

早くも6月

きづいたら、梅雨ですらなく、暑い。みなさんいかがお過ごしですか。わたしはようやく、長期プロジェクト後のGWを経てようやく回復してきました。

wasmiq

github.com

進捗は出ているよ

前回は4/1でしたね。自作のWebAssembly処理系ができたー、と書いてました。実はあれからあれこれしてまして、一通りのデバッグも終わり、そこそこサンプルコードは動く状態にはなっています。未実装だったマクロ的なsyntax sugarも、結局、全部実装しました。地味に大変だった。全体の流れを変えないといけなかったし、もう一回作るとしたら違う方法を取るじゃろなあ、という感じ。

参考にしたコードサンプル

以下の書籍を少し前から買っていて、読むついでに自分の処理系で処理して、テストがわりに遊んでいました。結構細かいパースエラーとか出たので有益でした。そして普通にWebAssemblyの勉強にもなりました。仕様書って、実装する内容はわかるけど、使い道とかが想像しづらい機能とかもあるんですよね。 techbookfest.org

次は「コンテナ」つくりたい

それからはWASIを調べてました。WebAssemblyに興味があるみなさんならWASIもご存知でしょう。これもsnapshot_preview1(でしたっけ?)が出ているので同様に実装したいな、と考えています。が、仕様の記述がすこし趣が違っていて、どうやって実装しようかなというのが難しい。コンテナ的なものを作りたいんですよね。よくわからないで書いていますが。

さらにGUIもしたいんです

あくまでもRustのGUIです。ちょこちょこ以前からことあるごとに、Web以外でGUIを作りたいと考えていながらElectronで「妥協」したりみたいなことを繰り返していました。いくつか実際に試していますが、今のところ、conrodが最有力候補です。不満がないわけではないですが、ほしいのは便利ライブラリではなく(それならRustでGUIしようとすること自体が不毛)、最小限のパーツを用意してくれていて適度な抽象化をしてくれているライブラリなのです。まともなものをつくろうとするとちょっと大変そうですが、GUI構築用のDSLを作ろうとも思っていて、それにはこれぐらいのプレーンさがちょうどいいのです。

github.com

体力が欲しい

というか、GWでタガが外れたように食いまくってしまい、コロナ禍での運動不足があいまって歴史上最大級の増量中である。大変ピンチで、少し前から努力を開始している。早めに戻そう。。。

WebAssembly処理系完成、ブログを再開します

嘘ではありません。

3月後半、忙しくなってブログをお休みしていました。落ち着いたので再開します。年明けから毎日書いていましたが、特にルールとして決めていたわけではありません。多少休むことがあっても継続することの方が大切だと考えているので、潔く、しばらく休みました。いやあ、仕事と、そのほかも少し、大変でした。3/11でやめているのが意味深に見えたかもしれませんが、他意はありません。

ただ、ネタ切れしていたのも確かです(忙しくて調べたり実装したりする暇がなかったのももちろんそうです)。ブログを書くことが形骸化しないように気をつけないと。

そういう意味では、ブログを更新していない間に進捗が生まれていました(忙しかったんじゃないの?という声が聞こえますが、作業に取り掛かれるようになったのはつい最近です)。ここでつらつらと書いていたWebAssemblyの処理系自作、ようやくほぼ仕様書のすべてを実装することができました。正確にいうと、ランタイム部分を作ったのが最近で、その他の部分は以前から分割して作っていたものを統合しました。ともかく、これでいろいろ試していくことができます。夢が膨らみますね。

github.com

とはいえ、品質はどうなのかわかりません。自分のために作っているので、現在のところまともに使えるのかも怪しいです。ドキュメントなど、対外的な整理はこれからですね。ちゃんとテスト書いてCI回したい。WebAssembly公式のテストがあるらしいですが、それも全然試してません。

ちなみに今回はバイナリフォーマットパーサ、テキストフォーマットパーサ、そして型検査、ランタイムの4つが主な機能で、これはWebAssemblyのコア仕様に書かれているものの大まかには全てです。ほぼすべて、と書いたのは、テキストフォーマットの記法の中に一部対応していないものがあるからです。これらは大きくFoldingとAbbreviationsに分かれますが、どちらもLispでいうマクロにあたるような書かれ方をしていて、基本的にはsyntax sugarなので現時点でも書けない機能があるわけではありません。

S式でマクロと聞けばヨダレが出る方もいらっしゃるでしょうが、今回はその法則に当てはまらない書き換え規則もあり、実装方法に関してはまだ悩んでいます。パーサを拡張するのか、もしくはもう一段階増やして、マクロとして構文木を書き換えるのか。趣味だけでいえば多段階計算したいけれど、一方でOne passからTwo passesになるだけでなく、書き換え規則上ではストリーム的な書き方ができないので方法がなくて唸っています。

でもまあやりたいことはできるし、コンパイラがテキストフォーマットを吐くわけでもないので、あまり気にしていません。そのうち作りましょう。

このwasmiqの話は、引き続き行うと思いますので、どうぞよろしくお願いします。

『「継続性アーキテクト」という生き方』を読んで

朝から311に思いも馳せましたが、記事の内容は無関係です。

tech.bm-sms.co.jp

個人的にとても刺さりました。わたしの頭の中をうまく言語化してくれています。

システムアーキテクチャの全体像を描ききれるような能力を身に着けたいということ。それから、システムアーキテクチャの根幹に関わるような部分での技術的な意思決定をできる裁量を得て、自身の能力を最大限に活かしたいということ。そして、その重要な役割に見合った待遇を得たいということ。

つまり「ぜんぶできる技術裁量待遇がほしい」ですね。

実際にソフトウェアアーキテクト(やそれに近い立場)として活動をしている人たちは、「本当にそれほどよい設計というものが必要とされているのか」「”Just enough” (ちょうどよい塩梅)な設計はどのくらいか」といった葛藤を抱えていたりする

そう、未熟ながら、痛いほどこの気持ちです。

一つ目の理由は、完成させてリリースすることではなく、サービスを成功させるということが仕事の中心になった

二つ目の理由として、ソフトウェアが完成しなくなった

そうですね。「しっかり設計して、大作を産みだす」時代ではないということだと思います。

弊社はアジャイルで成長してきましたし現在もそうですが、しかしながら現在、技術的負債に苦しめられている箇所が少なくありません。設計もアーキテクチャも、不要ではないどころかみんな必要としているのに、結果としてビジネススピードとの兼ね合いで「とりあえずこのパターンだけ通して」「ここは今回対象外で」ということになる。売上が少ない場所やその当時の情勢で関心が薄い部分と、主要な部分の仕様が解離するものの、後から見たときに経緯がわからない。仕様の統一感がない。レガシーシステムの上でこれが行われるので、割れ窓どころか尾崎豊ばりにパリッパリにガラス割れてます、みたいな状況で、開発者のモチベーションが下がっていく……みたいなことに、もしなったら、困りますよね(あくまで仮定の話ですよ、あくまで)。

最後に、「継続性のアーキテクト」が実現できる環境として以下のポイントが挙げられています。

  1. 今後長きにわたってニーズが増えるマーケットである
  2. マーケットの置かれた環境が変化していく
  3. 対象となるマーケットで1位になる力を持っている
  4. ビジネスモデルが変化していく
  5. システムが硬直化することを許容しない

上記を満たした環境が「継続性のアーキテクト」に向いていること自体に異論はありません。さて、個人的にはどうなんだろう、と考えを巡らせてみます。うーん、例によってあまり具体的なことは書けませんが、何点かは満たしているし、何点かは微妙なところ。

そもそもですが、まだ転職して一年未満だし、お仕事も新しく設計をするような機会は少ないんですよね。ただ、わたしが目指している一つの像が、今回ご紹介した記事にあるようなアーキテクトであることは間違いないかと思います。そのために日々がんばります。