HappyGoLucky

Web系サーバーサイド寄りの自動化大好きエンジニアの徒然なるブログ

VS Code から Vim に帰ってきた

GitHub Copilot で設計も実装もゴリゴリするようになって VS Code を使うようになった。 特に Markdown で仕様書をまとめる機会が多く (というか意図的に増やしている) Mermaid で絵を書くこともあって手軽にプレビューできる VS Code を便利に使っていた。

だが私の環境に問題があるのか、日本語で文章を打っている時に Copilot の自動補完によって多重入力されたり、期待した記述にならなかったりして、煩わしさを覚えるようになった。
Markdown を書く生活をしばらく続けていると脳内でなんとなくプレビューを想像できるようになったこともあり、 Copilot CLI と Vim の生活に戻ることにした。

今は Vim と Copilot CLI を WezTermの Pane を切り替えて触っているのを Vim 上で完結できないか模索中。 Copilot CLI の /diff で comment 書くのと同じようなことが Vim 上でできると面白そう。

2024年を振り返って

振り返る時期がやってきました。

家庭

長子の赤ちゃん返りは収まり、だいぶ自立してきた。どうしてもニ子を優先することが多く、我慢をさせていると思っているのだが、我儘とも言えなくもなく、その辺りの線引きが我々親サイドで違いがあるため、家族間で調整する日々になっている。
自分のことは棚上げにするが、誰も彼も説明不足なので、言っていることと伝わっていることに違いが多いのである。共働きでニ子優先の家事育児の毎日で、親子にせよ夫婦にせよそれぞれがそれぞれと対話の時間が少ないことが問題の根底にあると思っている。
時間を作るにはどうすれば良いものか...。

仕事

社内における私の強みは、技術と事業に関する知見を活かした開発スピードの速さと見積もり精度の高さだと自認しており、なるべく手を動かしてアウトプットを出していくことを意識してきたが、ついにマネジメントのタスクに片足を突っ込むことになった。
今までも、問題が起きそうor起きてそうなので良かれと思って情報整理を買って出ることはあったが、社内の組織体制の変化もあり、開発を伴うプロジェクトの推進役として責任を持つことが明示的となった。
今のところ大事故とか大炎上といったものには出会っていないが、かといって上手くいっているとも言えない。あの時にああ言っていればとか、あれをしておけばこれは発生しなかったんじゃないかとか、個々の事象について個人的につけているメモはそれなりに育ってきた。
社内には頼れる仲間がたくさんいるので遠慮なく頼らせてもらいつつ、もうちょっと楽しく進められる方法はないものかとよく考える。プロジェクトが発足してから方向性が定まるまでが重いのをなんとかしたい。
ただ、これからマネジメント業の割合を増やしていくのかというのは、個人的もチーム的にも悩みどころで、私が主担当の大きな開発案件も控えているため、今後どうなっていくかはもはや予想もつかない。
考えることの振れ幅が広くなっているのは間違いないので今まで以上に時間の使い方に気をつけたい。

2025年の抱負

2024年を振り返ると、精神的にも肉体的にも、健康であればなんとかなると思うことばかりだった。健康であれば心に余裕が生まれる。心の余裕があればなんだってなんとかなる。
年を取ると健康のことばかり意識するようになるという風潮が不思議だったが、なるほど確かに健康は何よりも大事である。

ということで2025年の抱負はいろいろな意味で健康第一でいきましょう。心も体もシステムも健康第一で。

2023年を振り返って

振り返る時期がやってきました。

仕事

機能や体験をさっと作って試して、結果をまとめたら次を作って試して...というのを繰り返していた。
今できる技術でなるべく早く仮説検証することを優先した動き方をしたので、新しい技術を取り入れたり利用することはほとんどなかった。というかできなかった。

業務効率向上のためにツールを新調した。ただこれは趣味が8割なので仕事とは思ってない。
作ったツールの一つである Firebase Remote Config を構成管理する CLI は Public で公開している。
github.com

総じて、自分が得意な仕事に取り組むことを優先していたように思う。

家庭

第二子が誕生した。
それによる長子の赤ちゃん返り対応が大変で、現在も解消されておらず続いている。
いつになれば改善されるのか見通しがたたないが、それでもいつかは笑い話になると思って耐える日々である。

AI

ChatGPT 登場時は便利な検索ツールとかたたき台生成ツールという程度に思っていたし、そういう風に使っていた。Bardでも大差ないなと思っていた時期もある。なので活用してない時期が長かった。
ある時に pandas を使った処理を書こうとして試しに ChatGPT に任せたら捗り、CSVをベースにちょっと特殊な条件で組み合わせたJSONデータを作る時も任せてみたら生産性が向上したように感じたので、それからはガッツリと日常使いしている。

じゃあ AI を使えば楽できるかというとそういうわけでもなく、今まで以上に読む力が求められるようになったと感じている。
ChatGPT の成果物を理解する力が必要だし、開発は既存の仕様や実装経緯を把握した上で手を加える必要あるので文章やコードを読む力が必要だし、その速さと正確さが生産性の因子としてより大きくなっていくと思う。

コードとコミット履歴や関連するドキュメントすべてにAIがアクセスできて情報をたどる方法をAIが知っているなら、「このコードが共通化されていない理由わかる?」などと聞いて正しい答えが返ってくるようになる気はする...けど、当時の開発状況とか優先度とか作業者といった情報も関わるし現実的ではないような。

2024年の抱負

どう考えても家事が忙しくなるので、我が家にとってベストなルーチンを構築したい。

2022年を振り返って

振り返る時期がやってきました。

2022年の習慣

変わらず個人的週報の記録を続けている。
新しく取り組んだものはこれといってない。強いて言えば、将来のお金をシミュレーションできるスプレッドシートを作り込んで、定期的にメンテナンスしている。

2022年のチャレンジ

何がチャレンジだったかなーと振り返ると、 Twitter スペース や Podcast で社内の雰囲気を外部に見せる活動をしたことや、YouTubeで開発部meetupをライブ配信するといった、採用広報的な活動を企画したことだと思う。ただ、自社単体で取り組むものばかりで、手堅く進めた感がある。

ISO の取得も良い経験だった。
ISMSの構築と運用に取り組んでいると、会社のセキュリティマニュアルを決めるというのは、会社の文化や習慣を明文化していることに通ずるものがあると感じることがある。

新しい趣味を探す旅は気づいたら終わっていたのだけど、その代わり、2021年に比べると読書の量が増えたと思う。小説とビジネス書がメインで、技術書はほとんど読んでない。今は新しい技術を吸収するよりも、日々の業務で出会う課題をどう解決していくかに関心が強くてそうなってる。

関心の方向性

今まで関心が会社の外に向いていたのが、会社の中に向くようになっているように思えて、それが良いのかは悩むところではある。社員が増えてきたので、そういう人が必要だとは思うけども。

関心が社内に向くようになった結果、社外の人との交流が減ったように思う。家事都合でますます勉強会に参加する数が減るだろう思うと、よほど意識しないと外からの情報を得る機会が減ってしまう。

考えてみると、家計シミュレーターをメンテするようになってプライベートでも関心が内向きになってきている気がする。

もしかすると 2022年は内向きな年だったのかもしれない。

料理

新しく取り組んだものがないと書いたが、今まで作ったことがない料理に挑戦するようにはなった。冷蔵庫に残っている食材で検索して出てきたレシピを試したり、YouTubeで定期的に料理動画を漁って気になったものを作ってみたり。

まとめ

今後も内向きで取り組む傾向は続くとは思う。
なので、そういう状況にあることを踏まえた上で、時には外を向いて、もしくは内側の向こうには外があると思って、また新しい経験を手に入れていきたい。

2021年を振り返って

振り返る時期がやってきました。

2021年の習慣

今年も個人的週報を続けられました。

f:id:yasuhiroki:20220108181204p:plain

2019年から初めたので丸3年間の記録が残っている。ああーあの頃はこんなこと考えてたよなぁ、などと懐かしい気持ちに浸れる程度の過去を思い返すことができる。

2021年のチャレンジ

2020年の振り返りには↓を書いていた。

2021年はもう少しワイルドに挑戦したいところ。(中略) あとはストレス発散が下手すぎるので新しい趣味か何か見つけたいところ。

業務上ではあまりワイルドな挑戦はできなかった。自分の技術的好奇心と課題解決意欲と何でもできる気がする勘違いの促すがままに多種多様な業務の効率化や自動化を推し進めていきたい気持ちがあるものの、自分程度の理解度では効率化された仕組みは作れないという冷静な気持ちもあって、自分が直接作業をする範囲外に手を出すことができなかった。自分の作業範囲程度なら、オレオレツールを作ったり (自分にとって)メンテしやすいデータ構造に変更したり serverless + AWS EventBridge でクローン的な処理を作るなどしてきたけど、ワイルドな挑戦かというと、まあ @yasuhiroki ならそれくらいはするよねって感じがする。
最近は自分が直接業務を担当する範囲外にもっと目を向けるようにしていて、時には話を聞いたりもして、もっと効率的に解決できそうな課題が転がっていないか観察している。

新しい趣味を探す旅はまた続いている。意識的に、今までやったことがないことに手を出してみるようにしていて、例えばお菓子を作るようになった。
料理は慣れてくると面白いもので、この感覚はプログラミングに言い換えることができる。新しい言語やフレームワークを覚え始めた頃に近くて、思った通りのものが作れたり、ドキュメントが何言ってるのか理解できるようになって、まさに完全に理解した状態になっている。ここからさらにスキルを身に着けようとすると大変なのだろうけど、家族が喜ぶ程度のもので良ければ極める必要もなく、どこかで見かけた料理を検索してレシピ通りに作ってそこそこ美味しくできればOKだと思っているので気楽でよい。

一方で続かなかったものもあった。電子工作と裁縫と競技プログラミングである。振り返ってみるとどれも集中する時間が必要というところが難点で、その時間を家庭内で確保することが難しかった。その点、料理は集中する時間そのものは限定的で、オーブンで焼いたり鍋で煮詰めたりする時間は娘とレゴブロックで遊んでてもそんなに支障はなかった。
電子工作は典型的な何を作りたいか分からない問題に陥っていて、XX みたいなやつ作りたいと思った 2秒後には XX を買えばええやん、という気持ちになってしまって続かなかった。
裁縫はソーイング・ビー を見て影響されて始めたものの、どうやったら作れるのか何もかも分からない状態から抜け出せずにいる。...と書いてみると、電子工作にせよ裁縫にせよ道具や材料を準備するのが面倒くさいだけなのでは、と思えてきた。 競技プログラミングは復習する時間が楽しくもあり難しくもあるもので、解説を読んでも理解できない問題が気になりすぎて日々のちょっとした時間に少しずつ考えて考えてようやく解けたのが 3週間後とかで、あまりに時間がかかりすぎて気が滅入ってしまった。

続かないものもあったけど、経験したことがないものに挑戦するというのはそれだけで楽しいもので、なんだか 2021年は充実した趣味時間を過ごせたような気がする。

会社

実は弊社、2020/01 の時と比べて社員が倍増している。たぶん。
社員数が倍になれば会社の環境にも変化が出てくるわけで、この変化を楽しみたいというのが、前述の "自分が直接業務を担当する範囲外にもっと目を向けるようにしていて、時には話を聞いたりもして〜" という話にもつながる。
特に他業種、他業務を行なうチームがすぐ隣にいたり直接関わったりするというのは、今の規模だからこそできる経験なので今のうちに多くの考え方や仕事の進め方というものを知りたいと思う。知らないことがあるというのを知ることが楽しい。

そういえばオフィスが移転した。

社外活動

DroidKaigi にプルリクを出した。

github.com

ステータスバーのカラーを動的に切り替えるというやつで、仕様を勘違いしてプルリクを作り直すことになった。分からない時は素直に分からないって言えば良かったのだ...。とても反省している。

久々にLTもした。オンラインイベントのLTを自宅でとなると、自宅の部屋数の都合上により当日に参加できなくなるリスクがあって難しい...。

脱・Evernote 計画 (諦)

地味に時間をかけたこととして、脱・Evernote 計画がある。
私は子どもの育児日記のようなものを Evernote に書いており、それがそれなりの文量になってきたせいか AndroidEvernote で書こうとすると1文字ごとに 3秒以上待たされるようになってしまったので、脱・Evernote を計画した。
Notion、Inkdrop、UpNote をそれぞれ試してみて、Editor としての機能はどれも良い体験だったのだけど、そもそも何で Evernote 使ってるんだっけ...そうだそうだ画像やPDFも含めて検索できるところが良いんだよな、と気づいて結局 Evernote に戻ってきた。
ちなみに子どもの育児日記が書きづらい問題は、ノートを小分けにすることで解決された。

まとめ

2021年は個人的には色々と新しいことに取り組んだり経験をして充実していたように思う。
引き続き、今までやったことがないことに挑戦していきたい。

初めて自社がエンジニア向けイベントのスポンサーになることに何を思うか

弊社ことエーテンラボは iOSDC 2021 のスポンサーをしています。

www.wantedly.com

これが個人的に感慨深いのですが、どうして感慨深いのかを言語化するのが難しかったので、整理してみました。


私にとって、大規模なイベント、特にコミュニティドリブンで規模の大きなイベントの存在は転機であり、あるテーマに関心のある人々が一同に集まって知見と感覚を共有し合うあの空間はとても居心地が良く、自分がその空間の一部であることがとても好きです。

私が初めて500人とか1000人といった規模のイベントに参加したのは YAPC::Asia Tokyo 2015 です。開始早々から衝撃を受けました。「なぜ私は指輪物語の説明を聞いていて、なぜそれがこんなにも楽しいのだろう」と思ったことを今でも覚えています。なんだか特別な時間を過ごしているような気分で、内容は全く覚えていないのですが、なぜだか Perl6 がとても魅力的に感じました。1
どのセッションもLTもワクワクするものばかりで、この時間が永遠に続けばいいのにと心底思ったものです。ソフトウェアの技術を貪欲に学ぶようになったきっかけの一つで、この時の高揚感がなければ私は違うエンジニア人生を送っていたことでしょう。2

私にとってエンジニア向けのイベントは、研鑽を積む場であり交流の場であり一種の娯楽でもあり、あるいは帰るべき場所と言ってもいいような、そんな特別な感覚があります。

そのようなイベントに自社がスポンサーしているというのは、もちろん経営戦略上なの目的があるでしょうし、私もその目的に同意するものですが、それはそれとして、個人ではなく所属する組織が開発者コミュニティを支援しているということが、何とも形容しがたい気持ちにさせてくるのです。

社員3人目としてジョインしてから4年が経ち、ようやくスポンサーができるまで会社が成長したという達成感もあるし、自社がスポンサーになっているという誇らしさもありますが、それらが全てというわけでもなく...なんだか安心したような気分があるのです。

これはどういう感情なのか何日も考えて捻り出したのは、あの頃の自分のように、エンジニア観が変わるような体験が得られるかもしれない時間へ微力ながら支援できる組織に属することができて良かった、という表現です。

これが今のところ一番具体的で適当なんじゃないかと思います。

同じような状況になった先人の方はどのような気持ちになったのか聞いてみたいです。


  1. 同じ空間のどこかにいた人とたまに勉強会で出会うことがありますが、この keynote の話をすると必ず盛り上がるのがとても好きです。大抵、あの時の同時通訳はすごかった、という話になります。

  2. 興奮したまま社内(当時は前職にいた)の週次ミーティングで参加レポートを共有したのを温かい目で見守られました(悪い意味じゃないです)

自分にできる自動化の手段を整理して弱点を直視する

はじめに

なんでも自動化するエンジニアを名乗ってから4年が経った。
ようするに今の会社に転職してから4年が経ったということで、別に区切りが良いわけでもないけど、これまでの経験を踏まえて自分にできる自動化って何だろう、というのを整理してみる。

私にとっての自動化

整理する前に、私にとっての自動化とはなにかを定義する。

シンプルに Wikipedia1 を引用すると、

自動(じどう)とは、機械装置が人間などの他の力を必要としないで、能動的に作動することをいう。

とのこと。特に反論はない。

ところで先日、 自動化大好きエンジニアLT会-vol.3 というイベントで久々にLTをしてきた。その中で、自動化を習慣化するには自動化のハードルを下げる ≒ 自分の中で自動化の定義をゆるゆるにしよう、という話をした。

これは本当にそう思っていて、塵も積もれば千里の道もということで、オレオレ alias を追加するでもよし、vim のキーマップを新しく覚えるでもよし、なんなら Android StudioGitHub のプルリクエストを操作する方法を調べるでもよい。

つまり、自動化が達成されるまでの調査や検証といった行為も含めて自動化と呼んで、俺は毎日自動化しているぞ、という気持ちでやっていこうという話である。

f:id:yasuhiroki:20210905001728p:plain

私にできる自動化の手段

まずは自分がよくする自動化の手段を洗い出してみる。

あとは、使っているサービスの機能を使ってどうにかすることもある。

洗い出してみると、逆に私が苦手な手段も見えてくる。

基本的にGUIで解決することを苦手にしている。

今後の方針

GUI で解決することが苦手というのは弱点である。
私の自動化にはGUIを伴わないということは、GUIがなくても扱える人としか共有できないということである。言ってしまえば、私の自動化はせいぜいエンジニアとしか共有できない。

そもそも私は、GUI を利用する時点で自動化できる範囲が最大化されないと考えていた。GUI があるということは、人間がそこで何か操作することが前提になる。人間の操作が必須となる設計をする時点でそのシステムは半自動化が限界になる。自分から全自動化の夢を諦めるなんてナンセンスである、と考えていた。

なので GUI を作るモチベーションはゼロだったのだけど、最近になってというか今更になってというか、解決したい問題によっては GUI を用いるのが最適なものもあると思うようになった。

複数の操作をまとめてやってくれるCLIツールとGUIツールのどちらの方が活用できる人が多いかといえば、そりゃあGUIツールの方が多いわけである。解決したい問題に関わる人が多いところでは、GUIでもって自動化した方が便利なわけである。

ということで重い腰をあげて、苦手意識のある JavaScriptCSS と デザイン(を楽にそれっぽくできる方法)の勉強をやっていこうかなぁ、と思う今日このごろでした。