<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ishkawa</title>
    <description>ishkawaの個人ページです。</description>
    <link>https://ishkawa.org</link>
    <language>en-us</language>
    <ttl>60</ttl>
    <atom:link href="https://ishkawa.org/rss.xml" rel="self" type="application/rss+xml" />
    
      <item>
        <title><![CDATA[2025年の振り返り]]></title>
        <description><![CDATA[仕事
自分でたくさん手を動かして、プロダクトの状態を改善する動きをしていた。CTOという立場的に自分で手を動かしてばかりでは良くないのではと思ったこともあるが、今はマネジメント体制の中で役割分担ができているので不安なく取り組めている。自分は...]]></description>
        <pubDate>Wed, 31 Dec 2025 06:36:33 GMT</pubDate>
        <link>https://ishkawa.org/1767162993</link>
        <guid isPermaLink="false">https://ishkawa.org/1767162993</guid>
        <content:encoded><![CDATA[<h1>仕事</h1>
<p>自分でたくさん手を動かして、プロダクトの状態を改善する動きをしていた。CTOという立場的に自分で手を動かしてばかりでは良くないのではと思ったこともあるが、今はマネジメント体制の中で役割分担ができているので不安なく取り組めている。自分は頭の中にある考えを実装として具現化し、組織に示すという役割に徹している。</p>
<h3>Flutterアプリのテスタビリティ向上</h3>
<p>UIとデータの制御の分離し、それぞれに適した方法でテストコードを整備するという考えで、既存のアプリのリアーキテクチャを進めた。</p>
<p>自動テストで検証される範囲は広がったが、手動テストでバグが見つかることもある。そういうこともまだあるとはいえ、完全に誤った動作は減らせているので良い傾向ではあると感じている。</p>
<p>最初は1人で黙々とやっていたが、今は他のメンバーが進めてくれていて、自分やレビューという役割になった。アプリの半分以上が書き換わり、コードベースの“普通”も変えられたのではないかと思う。</p>
<h3>FlutterアプリのWebでのパフォーマンスの向上</h3>
<p>Flutter Webで提供しているサービスが、Flutter Webの黎明期に開発されたこともあり、初期ロードの転送量が大きかったり、ページ遷移に時間がかかったり、ブラウザの履歴が正しく保持されなかったり、といった問題があった。</p>
<p>アプリの根幹の部分を大幅に書き換える必要があったので、完璧なリリースにはならなかったが、結果的にはそこそこのパフォーマンスには到達できた。</p>
<h3>バックエンドへのRust導入の検証</h3>
<p>今の事業では、様々なシステムの出力や従業員の作業結果を積み重ねてデータを生成するということがよくある。運用コストを抑えるには、その過程で起きる失敗をアプリケーションの仕様として扱い、利用者側で完結して回復ができる必要がある。</p>
<p>それを実現しやすくするためには、例外がなく、かつエラーを型付きで扱う言語が適しているのではないかと考えて、Rustが候補となった。</p>
<p>今はDartとdbtのジョブで実装されたデータ生成のパイプラインをRustで再実装する検証をしていて、一定の手応えを得ているという段階。</p>
<h3>Agentic Coding</h3>
<p>結構使い込んでいて、仕事のやり方がすっかり変わったなと思う。詳しくはまた別の機会で。</p>
<h1>個人</h1>
<h3>子供が生まれた</h3>
<p>今年の前半に子供が生まれた。入院したりと色々あったのだが、今は元気だし体がデカい。睡眠サイクルが安定していて大体機嫌が良いし、よく笑ってくれるし、今のところはとても可愛い坊やという感じ。これから成長してどうなるのか恐ろしいが…。</p>
<h3>フルマラソンへのエントリー</h3>
<p>東京マラソンにエントリーしたら当選してしまったので、練習している。10, 11月はそれなりに練習できたが、12月は年末モードでサボっていてやばい。初めてのフルマラソンなので、完走目指して頑張りたい。</p>
<h3>買って良かったもの</h3>
<ul>
<li><p><strong>野田琺瑯 ぬか漬け美人:</strong> これのおかげで糠床運用をできるようになった。あまった野菜を気軽に突っ込めるが、冷蔵庫の中で割とコンパクトに収まるというサイズ感。水抜き容器が付属するので、糠床が水っぽくなっても復活しやすい。</p>
</li>
<li><p><strong>Apple Watch Ultra 3:</strong> 充電を忘れた次の日に20kmランニングしても大丈夫なバッテリー持ち。ごついけど気にしない。</p>
</li>
<li><p><strong>寝返り防止クッション:</strong> 息子(0歳)が就寝時に寝返りすると復帰できなくて泣くので導入した。今は自力で復帰できるが、うつ伏せ寝は避けたいので継続している。付けてて動きが過剰に制限されている感じはなく、息子も自然に受け入れている。</p>
</li>
<li><p><strong>浅釜商店 包丁にやさしいまな板:</strong> 千切りやみじん切りが穏やかにできる。耐熱温度の関係で食洗機不可だが、我が家では歪み覚悟で食洗機に入れている。小さいサイズなので、今のところ大丈夫。</p>
</li>
<li><p><strong>分割無線キーボード Palmslave:</strong> 持ち歩けるサイズ感なので、自宅もオフィスもこれ1つでいけるようになった。iPhoneスタンドもついてるので、外で文章を書くのにも使っている。電池はボタン電池で1ヶ月以上は持つので、自分は月1回交換することにしている。</p>
</li>
</ul>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[自作キーボードに入門した]]></title>
        <description><![CDATA[

元々キーボードはHHKBを10年以上使っていて満足していたのだが、新卒の同期のtakashicompanyがPalmslaveという良い感じのキーボードを作っていたのを見て気になったので、キットを買って組み立ててみた。
(ほぼ)はじめて...]]></description>
        <pubDate>Sat, 04 Oct 2025 10:22:35 GMT</pubDate>
        <link>https://ishkawa.org/1759573355</link>
        <guid isPermaLink="false">https://ishkawa.org/1759573355</guid>
        <content:encoded><![CDATA[<img src="/posts/extra/2e75450d.webp" width="1200" height="900" />

<p>元々キーボードはHHKBを10年以上使っていて満足していたのだが、新卒の同期の<a href="https://x.com/takashicompany">takashicompany</a>がPalmslaveという良い感じのキーボードを作っていたのを見て気になったので、キットを買って組み立ててみた。</p>
<h2>(ほぼ)はじめての電子工作</h2>
<p>Palmslaveの組み立てにははんだ付けが必要。はんだ付けは高専の実習でちょっとやったことがある程度で、無事に完成させられるのか少し心配だったが、道具を買い揃えて挑戦した。</p>
<p>はんだごてだけはなぜか家にあったので当初はそれを使っていたのだが、扱うパーツに対してコテが太過ぎて失敗し、パーツ(スイッチ)を破損させてしまった。幸いパーツは単品で注文できたので、先端が細いはんだごてを買ってから再挑戦した。これから入門する人には是非細いコテで始めてもらいたい。</p>
<p>スイッチを破損させたこと以外はおおむね順調に進み、無事に完成させることができた。</p>
<h2>キーマップは沼</h2>
<p>Palmslaveのキーは38個しかないので、キーマップにはそれなりに工夫が必要となる。</p>
<p>初心者なのでなるべくQWERTY配列を崩さない形にしつつ、とはいえキーは入り切らないのでなるべく覚えやすい配置でレイヤーに押し込みつつ、レイヤー移動しても押しづらいキーが出ないようにしつつ、といったことを考慮しながら試行錯誤していった。設定する度に「今度こそこれでいけるはず」と思うのだけど、いざ文字を打ち始めるとすぐに「これじゃダメだ」となって修正に戻るというループを何度も繰り返した。</p>
<p>紆余曲折を経て、今は以下のキーマップでトレーニング中。</p>
<img src="/posts/extra/76cd4aff.webp" width="1200" height="675" />
<img src="/posts/extra/1585d3e1.webp" width="1200" height="663" />
<img src="/posts/extra/5297b869.webp" width="1200" height="671" />

<img src="/posts/extra/f03594da.webp" width="1200" height="668" />

<h2>iPhoneでも便利</h2>
<p>PalmslaveはBLE Micro Proにも対応しており、無線化できる。BLE Micro Proは複数のデバイスとペアリングでき、ADV ID0キーなどで接続先を選択できるので出先でシュッとiPhoneと接続するなんてことも可能(実際にやるかどうかは別として)。</p>
<p>Palmslaveの左右の間にはスマホスタンドとなる窪みがあるので、iPhoneに何もつけない派でも見やすい形で作業できるのが嬉しい。</p>
<img src="/posts/extra/7f8e57f9.webp" width="1200" height="900" />

<p>他にも地味に嬉しいのが、LANGキーをキーボードレベルで設定できること。MacでUS配列のキーボードを使ってる人はKarabinerなどを使って、左のcommandキーの空打ちを英数キーとし、右のcommandキーの空打ちををかなキーとする設定をしている人が一定いると思うが、これと似た設定をキーボード自体で出来る。なので、iPhoneでも英数とかなの切り替えがスムーズに出来る。</p>
<h2>まだまだ練習中</h2>
<p>この記事はPalmslaveで書いている。まだ慣れてなさ過ぎてとにかく時間がかかっているが、書き始めの時よりはだいぶマシになってきている実感がある。あとどのくらいで仕事で使えるくらいの速度で打てるようになるのか…。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[「仕事してるよ」を周囲にお知らせする]]></title>
        <description><![CDATA[元々"Obsidianでプライベートな分報を運用する"で書き始めたものを、最近は社内に公開している。
プライベートな分報を書くこと自体は今年の始めからずっと続けていて、自分の作業や思考を進めるために有効なものだと捉えている。人に見せなくても...]]></description>
        <pubDate>Mon, 08 Sep 2025 12:50:32 GMT</pubDate>
        <link>https://ishkawa.org/1757335832</link>
        <guid isPermaLink="false">https://ishkawa.org/1757335832</guid>
        <content:encoded><![CDATA[<p>元々"<a href="https://ishkawa.org/1737032430">Obsidianでプライベートな分報を運用する</a>"で書き始めたものを、最近は社内に公開している。</p>
<p>プライベートな分報を書くこと自体は今年の始めからずっと続けていて、自分の作業や思考を進めるために有効なものだと捉えている。人に見せなくても良いのだが、なんとなく「仕事してるよ」をお知らせすると良いかもなと思って公開し始めた。公開するのは1日の終わりの1回だけで、あまり周囲の注意を妨げていないと思う。</p>
<p>やってみて思ったのは、「仕事してるよ」をお知らせすることには周囲にも自分にもそれなりに意味がありそうだということ。</p>
<h2>周囲</h2>
<p>仕事にはある程度の期待がかかるが、それに対して分単位で書かれた日報は細かい粒度で情報を提供する。つまり、細かい粒度で仕事を伝える材料がある。仕事が近い人は、この材料を使ってプロセスを把握したり、作業や思考にフィードバックできる。遠い人は「アイツはやってるんだな」くらいの認識ができる。</p>
<p>こうした小さな認知の積み重ねは、長期的には組織の仕事のやり方を形づくるものになるのではないかと思う。人の仕事のやり方はポジションの定義から始まり、成果や計画の合意が続くが、「周囲がどう動いているか？」も多くのことを埋めている気がする。なので、自分の仕事を認知してもらう材料を毎日細かく提供することは、組織の形づくりに貢献するものかも知れない。</p>
<p>思い返せば、みんな揃ってオフィスにいた頃はこういった情報は自然とある程度入ってきた気がする。この点は世間のオフィス回帰の一因にもなってるのかも知れないが、工夫や文化で補える点でもあると思う(オフィス回帰には他の意味もあると思うが)。</p>
<h2>自分</h2>
<p>自分には怠け者の側面があるのだが、毎日の取り組みを公開することはこの側面を抑えることに役立っている。なにしろ分単位で書いてるので、空白の時間があればわかるし、1日何もしてなかったら公開するものがなくなってしまう。散歩しても昼寝しても良いと思うが、1日の終わりには周囲に説明がつく状況にはしないといけないという抑止力が自分の場合にはちょうど良い。</p>
<p>それと、メンタルにも良い影響を与えている。毎日2~4ページ分のログが実績として見えるので、「今日もやったな！」という気持ちになれる。本当にそれでいいのかはさておき、気分は良い。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[五竜岳 → 唐松岳縦走]]></title>
        <description><![CDATA[

土日に1人時間をもらえたので、五竜岳と唐松岳を縦走してきた。このルートを選んだのは、スキー場のゴンドラとリフトのおかげで、スタート地点もゴール地点も標高が高いから。標高が高ければ比較的温度が低く、夏でも涼しく登山ができると目論んだ。
テ...]]></description>
        <pubDate>Sun, 31 Aug 2025 13:23:45 GMT</pubDate>
        <link>https://ishkawa.org/1756646625</link>
        <guid isPermaLink="false">https://ishkawa.org/1756646625</guid>
        <content:encoded><![CDATA[<img src="/posts/extra/3fbd93ff.webp" width="1200" height="1053" />

<p>土日に1人時間をもらえたので、五竜岳と唐松岳を縦走してきた。このルートを選んだのは、スキー場のゴンドラとリフトのおかげで、スタート地点もゴール地点も標高が高いから。標高が高ければ比較的温度が低く、夏でも涼しく登山ができると目論んだ。</p>
<p>テントで1泊するし、行動時間も長いので、自家製ビリヤニセットと行動食ボトルを用意した。</p>
<img src="/posts/extra/3e2b5a99.webp" width="1200" height="900" />

<img src="/posts/extra/5ede314d.webp" width="1200" height="900" />

<p>金曜日の深夜に都内から諏訪湖あたりまで移動して仮眠を取り、早朝に起きて五竜岳の麓のエスカルプラザまで移動し、そこからはゴンドラで標高1500mまで登った。</p>
<img src="/posts/extra/2e259cad.webp" width="1200" height="900" />

<p>道中は霧に包まれていることが多く、あまり遠くまで見ることができなかったが、途中で晴れ間が見えた時の爽快感は素晴らしかった。</p>
<img src="/posts/extra/efe0d950.webp" width="1200" height="900" />

<img src="/posts/extra/9d05c668.webp" width="1200" height="900" />

<p>人と比べると、山がいかに大きいか実感できる。</p>
<img src="/posts/extra/14748fd1.webp" width="1200" height="900" />

<p>白岳まで登ると五竜山荘を見下ろすことができた。</p>
<img src="/posts/extra/037e97f4.webp" width="1200" height="900" />

<p>少し進むと、辿ってきた登山道と街が見えた。</p>
<img src="/posts/extra/2e531605.webp" width="1200" height="900" />

<p>さらに進んでいくと岩場となり、結構迫力があるところもあった。下の1枚目の写真で人が登っているところは、実際に自分で登ってみると2枚目のように見えて、一瞬怯んだ。が、落ち着いて進めば安全は確保できるとすぐにわかり、そのまま進んでいった。</p>
<img src="/posts/extra/c40592e0.webp" width="1200" height="900" />

<img src="/posts/extra/b9037817.webp" width="1200" height="900" />

<p>山頂まであと少しのところ。周りは何も見えないが。</p>
<img src="/posts/extra/930c392e.webp" width="1200" height="900" />

<p>山頂では少しだけ青空が見えたが、周囲の景色は全く見えなかった。</p>
<img src="/posts/extra/052f02ee.webp" width="1200" height="900" />

<p>五竜岳の登頂後は五竜山荘まで戻り、さらにその先の唐松岳まで向かう。</p>
<img src="/posts/extra/ebce5c9e.webp" width="1200" height="900" />

<p>五竜山荘の手前あたりに差し掛かったところで、登山道を動物が横切るのが見えた。おそらく猿だとは思いつつ、周囲の木を大きく揺らしていたので熊の可能性もあると思い、念のため熊スプレーを構えながら10分ほど様子を見た。が、やっぱり猿だった。</p>
<img src="/posts/extra/cef39fe2.webp" width="1200" height="900" />

<p>こちらに気付いてジャンプで去っていく猿たち。</p>
<img src="/posts/extra/cadc853c.webp" width="1200" height="900" />

<p>その後しばらくは歩きやすい稜線が続く。こういう道を延々と歩きたかった。</p>
<img src="/posts/extra/2a2c06a8.webp" width="1200" height="900" />

<img src="/posts/extra/051451cd.webp" width="1200" height="900" />

<p>唐松岳の手前にある大黒岳が見えたあたりからは段々と道が険しくなる。</p>
<img src="/posts/extra/145205df.webp" width="1200" height="900" />

<img src="/posts/extra/87a62a54.webp" width="1200" height="900" />

<p>さらに進むと岩場続きとなり、○印を確認しながら進む。鎖場も長く続く。</p>
<img src="/posts/extra/06f450db.webp" width="1200" height="900" />

<img src="/posts/extra/d2862a06.webp" width="1200" height="900" />

<img src="/posts/extra/f3031174.webp" width="1200" height="900" />

<img src="/posts/extra/024d8440.webp" width="1200" height="900" />

<p>鎖場を越えると、唐松岳頂上山荘に到着した(写真を撮り忘れた)。ここはテント場が山荘から非常に遠く、疲れた体にはだいぶ堪えた。テントの設営をササッとと終えて、唐松岳の頂上を目指した。</p>
<img src="/posts/extra/9ac347ec.webp" width="1200" height="900" />

<p>日も暮れそうなタイミングだったが、山荘から20分程度で着いた。しかし、五竜岳に続いてここでも眺望なし。</p>
<img src="/posts/extra/5b92ba88.webp" width="1200" height="900" />

<p>テントに戻り、テーブルに適した石を見つけて乾杯。</p>
<img src="/posts/extra/f20a9b72.webp" width="1200" height="900" />

<p>自家製ビリヤニセットでビリヤニの調理に取り掛かった。</p>
<p>ビリヤニの作り方は簡単に言えば、バスマティライスをスパイスと一緒に塩茹でして湯切りし、マサラを鍋の底に敷き、その上にバスマティライスを敷いて蒸すという感じ。しかし、山には制約があって、水がたくさん手に入らない、茹で汁を捨てられないといった事情がある。</p>
<p>なので、煮詰まらない程度の水量とそれに適した塩分量でバスマティライスを茹で、一旦退避してマサラを敷いてバスマティライスを戻して蒸すというやり方にした。</p>
<img src="/posts/extra/935cf370.webp" width="1200" height="900" />

<img src="/posts/extra/dc20c1ab.webp" width="1200" height="900" />

<img src="/posts/extra/ae7eba2b.webp" width="1200" height="900" />

<img src="/posts/extra/359ad86d.webp" width="1200" height="900" />

<p>フワフワのビリヤニという仕上がりにまでは持っていけなかったが、十分にビリヤニとして成立するものにはなった。この日はたくさん行動していて疲れていたので、米をたくさん食べられたのがうれしかった。</p>
<p>ビールを2缶飲み、ウイスキーを飲み、寝た。</p>
<p>翌朝は4:30に起きてどん兵衛を食べるところからスタート。</p>
<img src="/posts/extra/fea7fbae.webp" width="1200" height="900" />

<p>食べ終わってテントから出ると、前日よりは少し晴れていた。</p>
<img src="/posts/extra/9aecd1a4.webp" width="1200" height="900" />

<p>テントの撤収を終えた頃には、風と霧がすごいことになっていた。</p>
<img src="/posts/extra/aafcd150.webp" width="1200" height="900" />

<img src="/posts/extra/f84f1eb6.webp" width="1200" height="900" />

<p>天気が落ち着くまで待つか悩んだが、易しいルートなのでそのまま進むことにした。簡単な道とはいえ、気を抜くと体ごと飛ばされそうだったので、軽く屈みつつ、柵などに手を添えながら慎重に進んだ。</p>
<img src="/posts/extra/fb62c205.webp" width="1200" height="675" />

<p>隣の白馬三山は雲に包まれていた。</p>
<img src="/posts/extra/765ebf70.webp" width="1200" height="900" />

<p>天国のような眺めの丸山ケルン。</p>
<img src="/posts/extra/4b1d9c3f.webp" width="1200" height="900" />

<img src="/posts/extra/b773d802.webp" width="1200" height="900" />

<p>残雪や雲や山を見ながら下山。</p>
<img src="/posts/extra/46f6c708.webp" width="1200" height="900" />

<img src="/posts/extra/b1a4a4a3.webp" width="1200" height="900" />

<img src="/posts/extra/1fc9fe66.webp" width="1200" height="900" />

<p>八方池まで降りると一気に人が増えた。</p>
<img src="/posts/extra/4341a12f.webp" width="1200" height="900" />

<img src="/posts/extra/2381cd7d.webp" width="1200" height="900" />

<p>木道をしばらく歩き、リフトに乗って下山した。</p>
<img src="/posts/extra/d29d45d8.webp" width="1200" height="900" />

<p>下山後はタクシーに乗って車まで戻り、帰宅した。</p>
<p>今回の良かったところは高山病にならなかったこと。高山病の症状の強さは人によって違うのかもしれないが、自分の場合は最悪の二日酔いのようなキツさになる。それを以前、隣の白馬三山縦走で経験したので、心拍数が上がり過ぎないように慎重に登った。</p>
<img src="/posts/extra/7919d84b.webp" width="1200" height="966" />

<p>後で知ったのだが、Apple Watchには心拍数の範囲のアラートを設定できるらしいので、2500m以上の山に泊まる場合は必ず設定しようと思う。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[姫木平で避暑キャンプ]]></title>
        <description><![CDATA[

子供が生まれる &amp; 生まれたこともあって、しばらく家族でキャンプには行けてなかったのだが、久しぶりに行ってきた。夏の暑さが続いていたので、行き先には涼しい姫木平を選んだ。
我々のキャンプの主な楽しみは、外でうまい酒と食事を楽しむ...]]></description>
        <pubDate>Sat, 23 Aug 2025 04:36:05 GMT</pubDate>
        <link>https://ishkawa.org/1755923765</link>
        <guid isPermaLink="false">https://ishkawa.org/1755923765</guid>
        <content:encoded><![CDATA[<img src="/posts/extra/27782796.webp" width="1200" height="900" />

<p>子供が生まれる &amp; 生まれたこともあって、しばらく家族でキャンプには行けてなかったのだが、久しぶりに行ってきた。夏の暑さが続いていたので、行き先には涼しい姫木平を選んだ。</p>
<p>我々のキャンプの主な楽しみは、外でうまい酒と食事を楽しむこと。今回の準備はあまり気張らず、ワインと肉くらいは都内で買っておいて、あとは適当に現地調達しようということにした。道中のマルシェ黒耀という直売所で野菜やフルーツやジビエの生ハムなどを買ったのだが、ここにあるものはどれも美味しくて、値段も格安だった。</p>
<img src="/posts/extra/d4ecdbd4.webp" width="1200" height="900" />

<p>今回は上の子はサマーキャンプで不在、下の子は蚊帳の中で転がして置くだけという感じで、おおむね大人2人でのキャンプという感じになった。</p>
<img src="/posts/extra/f343ba33.webp" width="1200" height="900" />

<p>テントの設営ができたら、あとはお楽しみタイム。ワインを飲んで、肉を遠火で炙り、野菜を焼いて、というのを延々とやる。薪火で焼けば何でもうまい。薪と塩さえあれば大体の食材は料理できるという気楽さが気に入っている。</p>
<img src="/posts/extra/36e0e1a8.webp" width="1200" height="900" />

<img src="/posts/extra/b64dde38.webp" width="1200" height="900" />

<img src="/posts/extra/4f91017d.webp" width="1200" height="900" />

<img src="/posts/extra/bf26d898.webp" width="1200" height="900" />

<img src="/posts/extra/8ca7a194.webp" width="1200" height="900" />

<p>直売所で買ったジビエの生ハムは、Jambon de Himekiというところのもので、これがすごくおいしかった(写真はないけど)。取扱店を調べて帰り道に買って帰った。お店(わざマート)は諏訪にあり、ナチュラルワインやクラフトサケも取り扱ってたので、旅行やキャンプの買い出しにも便利そうだった。</p>
<img src="/posts/extra/5bd61fbd.webp" width="1200" height="900" />

<p>今回は避暑も出来たし、酒と食事もうまかったし、現地のものも体験できて、総じて良いキャンプだったと思う。あまり練って計画したものではないが、少し調べたら自分と合うものに出会えたので、今後もその点には気を配って遊んでいきたい。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[フジロック 2025]]></title>
        <description><![CDATA[フェスでEzra Collectiveが観たいという訳で、フジロックに行ってきた。
5月に子供が生まれたばかりということもあり、金曜日の夕方に着いて翌朝には帰るという弾丸スケジュールにした。金曜日の朝に子供の病院に行き、午後には群馬の実家に...]]></description>
        <pubDate>Mon, 28 Jul 2025 15:39:04 GMT</pubDate>
        <link>https://ishkawa.org/1753717144</link>
        <guid isPermaLink="false">https://ishkawa.org/1753717144</guid>
        <content:encoded><![CDATA[<p>フェスでEzra Collectiveが観たいという訳で、フジロックに行ってきた。</p>
<p>5月に子供が生まれたばかりということもあり、金曜日の夕方に着いて翌朝には帰るという弾丸スケジュールにした。金曜日の朝に子供の病院に行き、午後には群馬の実家に子供たちを預け、そのまま苗場に向かった。</p>
<img src="/posts/extra/09097760.webp" width="1200" height="900" />

<p>Ezra Collectiveのライブが始まる21:45までは暇なので、フェス飯を食べたり、ビールを飲んだり、ライブを覗いてみたりしながら過ごした。開始の少し前にはField of Heavenに到着した。</p>
<img src="/posts/extra/4332c252.webp" width="1200" height="900" />
<img src="/posts/extra/25ef5c0b.webp" width="1200" height="900" />

<p>Ezra Collectiveのライブは凄かった。配信でも観られる時代だが、現地まで足を運んで体験する価値のあるものだったと思う。そのあとRed Maqueeで観た坂本慎太郎もまた良かった。この2つはジャンルはまったく異なるものだけど、どちらも現地でなければ得られないような感覚があり、あらためてライブって良いなと思える体験だった。</p>
<p>GANBAN SquareでD.A.N.のDaigosがDJをやっていたので、少し観た。たのしかった。</p>
<img src="/posts/extra/bcc6edfe.webp" width="1200" height="900" />

<p>その後、車まで歩き、仮眠し、朝に起きて帰った。</p>
<p>今回は実家のお陰で奥さんと2人で行くことができた。状況的に行かない理由はいくらでもあったのだけど、行きたいという気持ちを守って実行できて良かった。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[新生児が退院して1週間]]></title>
        <description><![CDATA[先日、子供が生まれた。
色々あって退院が遅れたのだが、今日で退院してから1週間。日常的に必要な世話はひと通り慣れて、授乳と睡眠のリズムも安定し、生活に落ち着きを取り戻しつつある。自覚している限りでは大きなストレスはない。この調子がずっと続く...]]></description>
        <pubDate>Tue, 27 May 2025 18:14:47 GMT</pubDate>
        <link>https://ishkawa.org/1748369687</link>
        <guid isPermaLink="false">https://ishkawa.org/1748369687</guid>
        <content:encoded><![CDATA[<p>先日、子供が生まれた。</p>
<p>色々あって退院が遅れたのだが、今日で退院してから1週間。日常的に必要な世話はひと通り慣れて、授乳と睡眠のリズムも安定し、生活に落ち着きを取り戻しつつある。自覚している限りでは大きなストレスはない。この調子がずっと続くわけではないとは思うが、なんとかやっていけそうかなという気持ちになっている。</p>
<p>今は夫婦で24時間体制でモニタリングすることにしていて、8時間はペアで対応、残りの16時間はそれぞれが8時間ずつソロで対応し、自分は深夜帯の8時間を担当している。ペアで対応する時間は家族でのんびりと過ごしている。ソロ対応の時間は最初は子供が泣き止まなかったり、子供関係のことを調べまくったりで時間が溶けていたが、それらも落ち着いてきていて少しずつ作業時間が取れるようになってきた。</p>
<p>子供が生まれても自分のやりたいことに変わりはないのが今のところだが、今後も変わらないのかどうかはわからない。引き続き、子供と家族のケアを第一にしつつ、自分のやりたいことにもブレーキが掛かり過ぎないように上手くやっていきたい。</p>
<img src="/posts/extra/016f7772.webp" width="1200" height="900" />]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[奥多摩石尾根ランニング]]></title>
        <description><![CDATA[奥多摩でトレイルランニングをしてきた。
GWなのでハイカーが多いルートは避けたいということで、石尾根を辿って六ツ石山に登るルートを選んだ。朝の奥多摩駅は人が相当たくさんいたが、いざルートに入ってみると人は少なくて、追い越しで気を遣うこともあ...]]></description>
        <pubDate>Sun, 27 Apr 2025 12:07:32 GMT</pubDate>
        <link>https://ishkawa.org/1745755652</link>
        <guid isPermaLink="false">https://ishkawa.org/1745755652</guid>
        <content:encoded><![CDATA[<p>奥多摩でトレイルランニングをしてきた。</p>
<p>GWなのでハイカーが多いルートは避けたいということで、石尾根を辿って六ツ石山に登るルートを選んだ。朝の奥多摩駅は人が相当たくさんいたが、いざルートに入ってみると人は少なくて、追い越しで気を遣うこともあまりなくてよかった。</p>
<img src="/posts/extra/5b741194.webp" width="1200" height="1052" />
電車はホリデー快速おくたまで。中央線では最近導入されたというグリーン車を利用した。ホリデー快速おくたま + グリーン車の体験は非常に良かったので、今後奥多摩に行く場合はこれで行きたい。

<p>ランニングは鬱蒼としているところからスタート。序盤は登りがきつくてほぼ歩き。</p>
<img src="/posts/extra/ed08ebfa.webp" width="1200" height="900" />

<p>尾根に上がると少し走れるところも出てきたが、やっぱり歩きが中心になってしまった。緩やかな登りが続くのだが、走るにはキツいという具合の区間が多かった。おそらく下りだと楽しく走れると思うので、次は逆向きにしたい。</p>
<p>ハイペースの登りでだいぶ消耗したが、なんとか六ツ石山に登り切った。遠くにはまだ冠雪している八ヶ岳らしきものも見えた。</p>
<img src="/posts/extra/b1601f06.webp" width="1200" height="900" />
<img src="/posts/extra/6903361f.webp" width="1200" height="900" />

<p>山頂でスニッカーズとカロリーメイトを食べてエネルギー補給し、水根方面に下山した。下りはやや急ではあったが、走れる区間がそこそこあって楽しかった。</p>
<p>下山後はバスで奥多摩駅まで戻り、もえぎの湯で風呂に入り、柳小路という横丁で昼酒を飲み、またホリデー快速おくたまに乗って東京の家に帰った(奥多摩も東京だけど)。</p>
<h2>新しいザックを買った</h2>
<p>今回はランニング用のザックも新しく買った。元々<a href="https://salomon.jp/products/active-skin-8-lc21778">SALOMONのACTIVE SKIN 8</a>という8Lのザックを使っているのだが、今回は<a href="https://www.lostarrow.co.jp/store/g/gBD56614001004/">Black Diamondのディスタンス15</a>という15Lの少し大きめのザックを買った。8Lではシェルや水や補給食などの、走る上での必須のものくらいしか入れられないが、15Lだとある程度着替えも入れられる。縦走して風呂に入って公共交通機関で移動するという流れをやりたいので、必要と判断して買った。</p>
<p>15Lでも走れるのか心配だったが、揺れが気になることもなくて問題なかった。軽くて快適なので、今後は日帰り登山でも使うことになりそう。8Lの方は銭湯ランや、車移動でピストンか周回の時に使う予定。</p>
<h2>シューズを検討したい</h2>
<p>走り方が悪いのかもしれないが、下りでシューズのグリップが頼りなく感じることが何度かあった。今はOnのCloudsurfer Trailというシューズを履いていて、ロードと兼用にしている。このシューズは初級トレイル向けとなっているので、シューズを変えたら走る体験も変わるのか試してみたい。</p>
<h2>猿がいた</h2>
<p>奥多摩の街には猿がたくさんいるみたい。身軽な人間みたいでかわいかった。</p>
<img src="/posts/extra/67412e52.webp" width="1200" height="900" />
<img src="/posts/extra/5ae8473a.webp" width="1200" height="900" />
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[天城山縦走]]></title>
        <description><![CDATA[土曜に早起きして天城山を縦走してきた。
山に登ることは金曜の夜に決めたのだが、コンディション的に長距離運転は避けてたくて、公共交通機関で良い感じの縦走ができる山として思い浮かんだのが天城山だった。公共交通機関は車と違って他人に気をつかう必要...]]></description>
        <pubDate>Sat, 05 Apr 2025 14:10:27 GMT</pubDate>
        <link>https://ishkawa.org/1743862227</link>
        <guid isPermaLink="false">https://ishkawa.org/1743862227</guid>
        <content:encoded><![CDATA[<p>土曜に早起きして天城山を縦走してきた。</p>
<p>山に登ることは金曜の夜に決めたのだが、コンディション的に長距離運転は避けてたくて、公共交通機関で良い感じの縦走ができる山として思い浮かんだのが天城山だった。公共交通機関は車と違って他人に気をつかう必要があるが、居眠りしても死なずに済むという別の気楽さがある。</p>
<p>今回は伊東方面から登山道に入って、伊豆半島の真ん中あたりの天城峠まで縦走するというルート。下山後は三島まで公共交通機関で移動して、東京に帰るという行程。</p>
<img src="/posts/extra/49988bbf.webp" width="1200" height="1018" />

<p>朝は品川駅からこだまで熱海まで行き、そこから電車とバスを乗り継いで登山口まで行く。</p>
<img src="/posts/extra/7d298131.webp" width="1200" height="900" />

<p>天城山はすっかり緑になってるところもあって、春を感じられた。最初のピークの万二郎岳からは伊豆半島の先端方面が見え、最高峰の万三郎岳からは富士山方面が見えた。</p>
<img src="/posts/extra/8078923b.webp" width="1200" height="900" />
<img src="/posts/extra/8f765ce5.webp" width="1200" height="900" />
<img src="/posts/extra/a12a6244.webp" width="1200" height="900" />

<p>昼飯は熱海駅で買った駅弁。穴子、銀ダラ、金目鯛。これを山頂で食べるために、保冷バッグを持参した。</p>
<img src="/posts/extra/bcad5d31.webp" width="1200" height="900" />

<p>登山道は平らな部分が多く、山の中を散歩しているという感じの時間が長かった。歩いている時は考えごとをしたのだが、何かしなければいけないかもしれないという感覚に急かされることなく、のんびりと色々なことに考えを巡らせることができて良かった。</p>
<img src="/posts/extra/2048f746.webp" width="1200" height="900" />
<img src="/posts/extra/884d340b.webp" width="1200" height="900" />
<img src="/posts/extra/070ecd79.webp" width="1200" height="900" />
<img src="/posts/extra/4b0e9f12.webp" width="1200" height="900" />

<p>下山後は修善寺温泉で風呂に入り、良さそうな居酒屋で地元の食材や酒をいただいた。</p>
<img src="/posts/extra/bcd4b483.webp" width="1200" height="900" />
<img src="/posts/extra/a9b8ba53.webp" width="1200" height="900" />

]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[ブラウザをArcからChromeに戻した]]></title>
        <description><![CDATA[ブラウザはしばらくArcを使っていたが、Chromeに戻すことにした。
考えるきっかけになったのはArcの機能開発の終了だったのだが、最終的にはChromeの方が自分に合っていると考えて決めた。自分のことながら、そういうこともあるんだなと思...]]></description>
        <pubDate>Fri, 14 Mar 2025 14:53:29 GMT</pubDate>
        <link>https://ishkawa.org/1741964009</link>
        <guid isPermaLink="false">https://ishkawa.org/1741964009</guid>
        <content:encoded><![CDATA[<p>ブラウザはしばらくArcを使っていたが、Chromeに戻すことにした。</p>
<p>考えるきっかけになったのはArcの機能開発の終了だったのだが、最終的にはChromeの方が自分に合っていると考えて決めた。自分のことながら、そういうこともあるんだなと思ったので、感じたことをメモしておく。</p>
<ul>
<li>結局、サイドバーの価値はあまり感じられなかった。</li>
<li>犠牲になった画面の横幅の広さやアドレスバーの視認性の方が自分には重要。</li>
<li>新規タブで閲覧履歴が優先されるので、「今開いてるタブで出てきた言葉を調べる」がやりづらい。</li>
<li>MacのApp Switcherで何故かアイコンが目に止まらない(老化?)。</li>
</ul>
<p>なお、見た目はArcの方が気に入っていたが、Chromeも慣れれば穏やかに使えている。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[Obsidianからブログを更新できるようにした]]></title>
        <description><![CDATA[ブログの更新を簡単にするために、Obsidianからブログを更新できるようにした。
自動化の構成


Obsidianプラグインと GitHub Actions のワークフローは自分で実装した。
Obsidianプラグイン
以下のことを実行...]]></description>
        <pubDate>Thu, 20 Feb 2025 11:15:11 GMT</pubDate>
        <link>https://ishkawa.org/1740050111</link>
        <guid isPermaLink="false">https://ishkawa.org/1740050111</guid>
        <content:encoded><![CDATA[<p>ブログの更新を簡単にするために、Obsidianからブログを更新できるようにした。</p>
<h1>自動化の構成</h1>
<img src="/posts/extra/7e7014d6.webp" width="1200" height="656" />

<p>Obsidianプラグインと GitHub Actions のワークフローは自分で実装した。</p>
<h2>Obsidianプラグイン</h2>
<p>以下のことを実行するコマンドを作成した。</p>
<ul>
<li>アクティブな<code>.md</code> ファイルから参照されている画像を取得する。</li>
<li><code>.md</code> ファイルと画像を Google Cloud Storage にアップロードする。</li>
<li>GitHub Actions のワークフローを実行し、アップロードしたファイルのURLを渡す。</li>
</ul>
<h2>GitHub Actions</h2>
<p>以下のことを実行するワークフローを作成した。</p>
<ul>
<li>Google Cloud Storage からファイルをダウンロードする。</li>
<li>画像をWeb向けにリサイズし、Exifから位置情報や端末情報を削除する。</li>
<li>結果を GitHub のリポジトリにプッシュしてpull requestを作成する。</li>
</ul>
<h1>利用の流れ</h1>
<p>Obsidianでブログを書いてコマンドを実行すると、ブログのリポジトリにpull requestが作成され、Cloudflare Pagesがブランチのプレビューのリンクを貼ってくれる。</p>
<img src="/posts/extra/e4b6c42a.webp" width="1200" height="466" />

<p>pull requestをマージするとブログが公開される。</p>
<h1>自動化したかった背景</h1>
<p>日頃のテキストはまずObsidianで書くので、ブログもそこに近づけたかった。</p>
<p>Obsidianでは<a href="https://ishkawa.org/1737032430">プライベートな分報</a>を書いているほか、作業や思考のメモも書いてる。書き途中のメモはルート直下に置いていて、多くても4個程度に収めるようにしている。書き終わったメモ(or 書くのをやめたメモ)は仕分け先のフォルダに入れるという運用をしている。</p>
<p>ブログもこの運用に乗せたいと思って、今回のセットアップをした。MacでもiPhoneでも気軽に書き始めることができて、完成したらそのまま公開するし、完成しなかったらフォルダに突っ込むという流れ。こうすることで、完成しなかったブログも自分のメモとして生き残る。公開できる形に仕上がらなくても、消したりする必要がない点が気に入っている。</p>
<h1>Obsidian Publishで良いのでは</h1>
<p>それは本当にそう。だけど自分でやりたいじゃんってことで。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[YouTubeをRSS経由で観てレコメンドと距離を置く]]></title>
        <description><![CDATA[YouTubeのレコメンドは色々なコンテンツに出会う機会をくれるが、注意を強く引くようなコンテンツが混じり込むこともあるので気が滅入る。ファスト &amp; スローでいうところのシステム1を消耗させられているような感覚になる。
そこでシステ...]]></description>
        <pubDate>Mon, 03 Feb 2025 13:56:18 GMT</pubDate>
        <link>https://ishkawa.org/1738590978</link>
        <guid isPermaLink="false">https://ishkawa.org/1738590978</guid>
        <content:encoded><![CDATA[<p>YouTubeのレコメンドは色々なコンテンツに出会う機会をくれるが、注意を強く引くようなコンテンツが混じり込むこともあるので気が滅入る。ファスト &amp; スローでいうところのシステム1を消耗させられているような感覚になる。</p>
<p>そこでシステム2を働かせて、そもそも自分は何を期待してYouTubeを開くのか考えた。</p>
<ol>
<li>購読しているチャンネルの新着動画があれば観る。</li>
<li>調べたいことをキーワード検索する。</li>
</ol>
<p>レコメンドの影響を受けるのは1の方。YouTubeのホーム画面はいい感じに新着動画を出してくれるので便利なのだが、そこで嫌な動画にも遭遇する。なので、この画面を開くことなく新着動画リストが観たい。RSSリーダーでそれができることに気づき、運用に乗せている。</p>
<p>RSSリーダーには相変わらずReederを使っている(<a href="https://ishkawa.org/1610344612">2021年に利用を再開したらしい</a>)。ReederにはYouTubeのチャンネルのURLを貼ると新着動画を購読できる機能があるので、特段難しいことも必要なかった。</p>
<hr />
<p>色々調べてる途中で気づいたが、Reederには新しいコンセプトのバージョンが出ていた。"From Unread Counts to Timeline Syncing"と謳われていて、未読消化ではなくタイムラインの流し見という感じに体験が変わっている。こちらも試してみている。</p>
<p>従来の方はReeder Classicと呼ばれていて、引き続き利用可能らしい。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[熱燗キャンプ]]></title>
        <description><![CDATA[野外で熱燗が飲みたいということで、キャンプに行ってきた。
今回はソロなので、荷物はバックパック1個で済ませるスタイルにした。容量が限られると持っていく道具や食材も厳選することになり、それがまたデッキを組むような感覚で面白い。バックパックは3...]]></description>
        <pubDate>Sun, 02 Feb 2025 11:08:59 GMT</pubDate>
        <link>https://ishkawa.org/1738494539</link>
        <guid isPermaLink="false">https://ishkawa.org/1738494539</guid>
        <content:encoded><![CDATA[<p>野外で熱燗が飲みたいということで、キャンプに行ってきた。</p>
<p>今回はソロなので、荷物はバックパック1個で済ませるスタイルにした。容量が限られると持っていく道具や食材も厳選することになり、それがまたデッキを組むような感覚で面白い。バックパックは30Lで、この中にテントから食材まで詰め込んだ。</p>
<figure>
    <img src="/posts/extra/IMG_0235.jpg" width="1920" height="1440" />
</figure>

<p>厳選しすぎたせいかグランドシートを忘れて、落ち葉の上で過ごすことになった。野宿感満載になるかと思いきや、ビビィ(寝袋カバー的なやつ)を寝床兼座布団としたら、ギリギリでキャンプという感じに収まった。</p>
<figure>
    <img src="/posts/extra/IMG_0241.jpg" width="1920" height="1440" />
</figure>

<p>熱燗は旅行先で買った花垣の山廃純米。薪ストーブの上で温めた。</p>
<figure>
    <img src="/posts/extra/IMG_0246.jpg" width="1920" height="1440" />
</figure>

<p>牛肉と菜の花を薪ストーブ内で薪焼きにした。花垣は味がしっかりで肉に負けない。</p>
<figure>
    <img src="/posts/extra/IMG_0247.jpg" width="1920" height="1440" />
</figure>

<p>鴨肉でせり鍋。</p>
<figure>
    <img src="/posts/extra/IMG_0249.jpg" width="1920" height="1440" />
</figure>

<p>四合瓶を飲み干して寝た。</p>
<p>翌朝は雪予報だったが結局雨だった。サッと撤収して昼には帰宅し、午後には子供と外出した。出発も土曜の午後で午前はプログラミングをしていたので、休日を丸ごと使わなくてもキャンプはできるということがわかった。また機を狙っていきたい。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[Obsidianでプライベートな分報を運用する]]></title>
        <description><![CDATA[分報は社内の誰でも閲覧できる前提で書くものだが、プライベートな分報なので、あくまで自分の頭の整理のために書いている。これからやることの宣言、途中で分かったこと、その時思ったことを書いている。イメージとしては以下のような感じ。

09:47 ...]]></description>
        <pubDate>Thu, 16 Jan 2025 13:00:30 GMT</pubDate>
        <link>https://ishkawa.org/1737032430</link>
        <guid isPermaLink="false">https://ishkawa.org/1737032430</guid>
        <content:encoded><![CDATA[<p>分報は社内の誰でも閲覧できる前提で書くものだが、プライベートな分報なので、あくまで自分の頭の整理のために書いている。これからやることの宣言、途中で分かったこと、その時思ったことを書いている。イメージとしては以下のような感じ。</p>
<ul>
<li><strong>09:47</strong> 会議後ちょっとぼんやりしてしまったが、Aからやっていく</li>
<li><strong>10:13</strong> Bという問題が起きているようなので、そっちが先 → <a href="https://example.com/B">https://example.com/B</a></li>
<li><strong>11:05</strong> BはiOS SafariでGPU使用量が多い時に発生するっぽい</li>
<li><strong>11:06</strong> このイシューが参考になりそう → <a href="https://example.com/C">https://example.com/C</a></li>
<li><strong>12:08</strong> Dが原因だったみたい。無効にして対処する。</li>
<li><strong>12:15</strong> 検証環境にデプロイしたので、一緒に見てもらう。</li>
<li><strong>13:00</strong> 一旦Aの作業に戻る。今日はA'くらいのところまで持っていくことを目指す。</li>
</ul>
<p>こんな形のメモを1日に30~60件くらい書きながら、最近は仕事をしている。</p>
<h2>1度書いた文は編集しない</h2>
<p>これを運用する上で大事だと思ったのは、1度書いた文を後から編集しようとしないこと。目的は良い文書を作ることではなく、作業中の頭を整理することや、記録を残して少し前のことを忘れられるようにすることなので、編集しては意味がない。それと、編集を許容すると過去の文が気になりはじめ、コストが上がって億劫になり、最終的には書かなくなりそう。</p>
<p>Slackの分報は、チャットツールなので自然とこのルールを守れるのが良かったのかも。</p>
<h2>Obsidianでやりやすくする</h2>
<p>箇条書きや時刻の記入を手書きすることもできるが、以下の設定で楽をしている。</p>
<ul>
<li>daily noteのテンプレートに分報セクションを作っておく。</li>
<li>テキスト入力のダイアログをhotkeyで出せるようにする。</li>
<li>ダイアログの入力値に時刻をつけて、daily noteの分報セクションに挿入する。</li>
</ul>
<p>この設定はQuickAddというプラグインのcaptureという機能で実現できる。設定方法は以下のエントリを参考にさせてもらった。</p>
<ul>
<li><a href="https://note.com/penchi/n/n27bf48d379cb">Obsidianでサクッとメモ QuickAddを使う</a></li>
</ul>
<h2>所感</h2>
<p>プライベートな分報の良いところは2つある。</p>
<p>1つ目は良い点は、周囲を気にしなくて良いこと(当たり前だが)。どれだけ雑に書いたとしても、人に誤解を与えることもないし、人に通知が届いて集中を妨げることもない。そのおかげで思った以上に書けるし、プライベートでなければ実際に1日に30~60件も書けないと思う。</p>
<p>2つ目は今考えていることに集中できること。人のことを気にせずガシガシと分報を書いていると、1度考えたことは大体は分報に書いてある。なので、今考えていること以外は一旦忘れても良く、その分の頭のリソースを今考えていることにあてられる。自分はやることが3つ以上あるとポンコツになってしまうので、これには相当助けられている。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[2024年の変化]]></title>
        <description><![CDATA[2024年も残りわずかとなったので、今年の変化を振り返る。
仕事

    会社の方針転換
    年始に会社は大きな方針転換をした。苦しい期間ではあったが、あらためて会社がアクセスできる機会、機会に対して発揮できる強みを見つめ直すことがで...]]></description>
        <pubDate>Tue, 31 Dec 2024 05:44:28 GMT</pubDate>
        <link>https://ishkawa.org/1735623867</link>
        <guid isPermaLink="false">https://ishkawa.org/1735623867</guid>
        <content:encoded><![CDATA[<p>2024年も残りわずかとなったので、今年の変化を振り返る。</p>
<h2>仕事</h2>
<dl>
    <dt><b>会社の方針転換</b></dt>
    <dd>年始に会社は<a href="https://note.com/yamotty_note/n/nf82c8a930e98">大きな方針転換</a>をした。苦しい期間ではあったが、あらためて会社がアクセスできる機会、機会に対して発揮できる強みを見つめ直すことができた。</dd>
</dl>

<dl>
    <dt><b>開発する時間を増やした</b></dt>
    <dd>CTOの時間の使い方には諸説あるが、今自分がやるべきことは開発組織が生産性高く事業機会を掴める状態を実現することで、そのためには技術的な改善が不可欠だと判断した。</dd>
</dl>

<h2>個人的なこと</h2>
<dl>
    <dt><b>週5オフィス出社</b></dt>
    <dd>週5でオフィスに出社することに決めた。頭の仕事モードへの切り替え、ミーティングの対話密度、ランダムな人との会話、通勤時間の読書時間の確保、などが良かった。個人としては良い決定だと感じているが、会社の制度はまた別だと捉えている。</dd>
</dl>

<dl>
    <dt><b>iPhoneでの読書週間</b></dt>
    <dd>iPhoneでも本を読むようになった。通勤時間やランチの待ち時間などのスキマ時間でも本を読むクセがついて、読書量がグッと増えた。元々読書量が多いタイプではないので、総量としてはあまり多くないのかもしれないが。</dd>
</dl>

<dl>
    <dt><b>Obsidianでのメモ管理</b></dt>
    <dd>Obsidianを使い始めた。Obsidian Syncを契約していて、メモをMacで書いたりiPhoneで書いたりしている。エディタがシンプルかつカスタマイズ可能、同期が安定している、MacでVimのキーバインドが使える、といった点が気に入っている。</dd>
</dl>

<dl>
    <dt><b>ChatGPTの活用</b></dt>
    <dd>壁打ちや調べもので使う機会が増えて、なんだかんだで毎日数件はやり取りしている。すごく活用できている訳ではないが、知らないことを知る時に掛かる時間は短くなり、知ることができる幅が広がり、気力が節約できている。もっと活用したい気もする。</dd>
</dl>

<dl>
    <dt><b>ブログの再開</b></dt>
    <dd>ブログの再構築を機に、書くのも再開した。今でも何のために書くのか言語化できていないが、記録を書いて公開する場所があった方がなんだか良い気がする。</dd>
</dl>

<dl>
    <dt><b>ランニングの再開</b></dt>
    <dd>ギックリ腰や仕事の忙しさで習慣が途切れてしまったが、一念発起して再開した。距離やタイムを目標にするというよりは、心身の健康のためや、登山のための体力づくりのために、淡々と続けていきたい。</dd>
</dl>

<dl>
    <dt><b>飲酒量を減らした</b></dt>
    <dd>以前は休肝日が週1あるかないかくらいだったが、今は飲まない日の方が多い。特別な思いがあって減らした訳ではないが、健康的にも経済的にもポジティブだし、いざ酒を楽しむときも適量で満足できて体験も良くなった。</dd>
</dl>

<dl>
    <dt><b>デンタルフロスの習慣化</b></dt>
    <dd>4月ごろに虫歯がみつかって治療した。その時に自分の歯磨きでは十分に歯間を掃除するのは不可能と悟り、それ以来毎日欠かせずデンタルフロスを使っている。</dd>
</dl>

<h2>来年の抱負</h2>
<ul>
<li>仕事で考えていることを結実させたい。</li>
<li>プライベートで変化が予定されているので、うまく順応したい。</li>
</ul>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[Ghosttyの設定]]></title>
        <description><![CDATA[今話題のGhosttyを使い始めてみた。Zero Configurationを掲げているだけあって、そのままでも十分に使えそうだが、個人的な好みを必要最小限で設定した。
フォント
GhosttyのデフォルトのフォントはJetBrains M...]]></description>
        <pubDate>Sun, 29 Dec 2024 05:28:13 GMT</pubDate>
        <link>https://ishkawa.org/1735450095</link>
        <guid isPermaLink="false">https://ishkawa.org/1735450095</guid>
        <content:encoded><![CDATA[<p>今話題のGhosttyを使い始めてみた。Zero Configurationを掲げているだけあって、そのままでも十分に使えそうだが、個人的な好みを必要最小限で設定した。</p>
<h2>フォント</h2>
<p>GhosttyのデフォルトのフォントはJetBrains Monoだが、個人的にはSF Monoが好きなので、これを設定した。日本語フォントに何が使われているかはわからなかったが、違和感があったのでヒラギノ角ゴProNに変更した。本当はヒラギノ角ゴ(Hiragino Sans)を使いたかったが、細くレンダリングされてしまい、fallback fontに対するweightの指定の方法がパッとわからなかったので、深追いせずにProNにした。</p>
<p>フォントもデカい方が好きなので、15に変更した。</p>
<h2>カタカナが変になる問題の解消</h2>
<p>「プログラム」が「プロ㌘」と表示されるという冗談みたいな現象が起きていた。これも深追いをしていないが、<code>font-feature = -dlig</code>を設定することで解消した。<a href="https://x.com/matsuu/status/1872804909554516204">インターネット情報</a>に感謝。</p>
<h2>カーソルをブロックに変更</h2>
<p>カーソルはブロックかつ点滅しない方が好きなので、これを設定した。</p>
<h2>設定ファイル</h2>
<p>これまでのものを反映した設定ファイルは以下の通り。</p>
<pre><code>theme = ayu

font-family = "SF Mono"
font-family = "Hiragino Kaku Gothic ProN"
font-size = 15
font-feature = -dlig

window-width = 164
window-height = 54

shell-integration-features = no-cursor
cursor-style = block
cursor-style-blink = false

macos-titlebar-proxy-icon = hidden
</code></pre>
<h2>感想</h2>
<p>長いことiTerm2を使っていたが、自分の用途ではGhosttyで良さそうだと感じている。10年以上お世話になったiTerm2に感謝しつつ、これからはGhosttyを使っていこうと思う。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[VS Code + GitHub Copilotで日本語入力がガタつく問題を直す]]></title>
        <description><![CDATA[こんな問題。

    


文字の入力中にカーソルがガタつくと上手く文が書けないので、直視しないでタイピングしたり、別のエディタに書いてコピペするなどで対処していたが、最近コードを書く機会が増えて我慢がならなくなったので直した。
色々と試...]]></description>
        <pubDate>Sat, 28 Dec 2024 05:57:44 GMT</pubDate>
        <link>https://ishkawa.org/1735365464</link>
        <guid isPermaLink="false">https://ishkawa.org/1735365464</guid>
        <content:encoded><![CDATA[<p>こんな問題。</p>
<figure>
    <img src="/posts/extra/1735365464.gif" width="634" height="168" />
</figure>

<p>文字の入力中にカーソルがガタつくと上手く文が書けないので、直視しないでタイピングしたり、別のエディタに書いてコピペするなどで対処していたが、最近コードを書く機会が増えて我慢がならなくなったので直した。</p>
<p>色々と試してみた結果、日本語入力する箇所がイタリックになる箇所で発生していることがわかった。今使っているthemeはコメントがイタリックになっているので、それを無効にすれば解決できそうだった。</p>
<p>そもそもコメントをイタリックにしないthemeを使うのも1つの手で、具体的なものとしてデフォルトのthemeやGitHubが出しているthemeなどがある。しかし、それで使うthemeが限られてしまうのも嫌なので、どんなthemeでもコメントがイタリックにならないようにする方法を探した。</p>
<p>ChatGPTに聞いたところ、<code>settings.json</code>に以下の設定を追加すれば良いとのこと。</p>
<pre><code>"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "comment",
            "settings": {
                "fontStyle": ""
            }
        }
    ]
}
</code></pre>
<p>素直に従ったら解決した。これでdoc commentをたくさん書けるぞ。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[菰釣山から山中湖へのトレイルラン → キャンプ]]></title>
        <description><![CDATA[プログラミングで疲れた頭のリフレッシュを狙って、トレイルランとキャンプをした。道志の森キャンプ場をスタート地点として菰釣山に登り、尾根を辿って山中湖まで走って下るというコース。

    


序盤の方は、登山道が落葉で埋め尽くされていてル...]]></description>
        <pubDate>Sun, 17 Nov 2024 19:40:00 GMT</pubDate>
        <link>https://ishkawa.org/1731840000</link>
        <guid isPermaLink="false">https://ishkawa.org/1731840000</guid>
        <content:encoded><![CDATA[<p>プログラミングで疲れた頭のリフレッシュを狙って、トレイルランとキャンプをした。道志の森キャンプ場をスタート地点として菰釣山に登り、尾根を辿って山中湖まで走って下るというコース。</p>
<figure>
    <img src="/posts/extra/1731840000.png" width="1919" height="1138" />
</figure>

<p>序盤の方は、登山道が落葉で埋め尽くされていてルートファインディングに時間がかかったり、登りがきつかったりでほとんど走れなかったが、後半は尾根の上でアップダウンを繰り返しながら緩やかに下るので、気持ちよく走ることができた。</p>
<p>天気が悪くて良い景色を見ることはできなかったが、霧の中を無心で走り続けるのは良い体験だった。尾根に出てからは下の写真のような感じの道がひたすら続いていた。今回は人に1度も会わなかったので、没入感もあって良かった。</p>
<figure>
    <img src="/posts/extra/IMG_9791.jpg" width="1920" height="1440" />
</figure>

<p>菰釣山から尾根を1時間ちょっと走ると山中湖が見える場所に出る。今回はあいにくの天気で富士山は見えなかったが、晴れていれば山中湖越しに富士山が大きく見えるらしい。今度同じコースを走ることがあれば拝みたい。</p>
<figure>
    <img src="/posts/extra/IMG_9795.jpg" width="1920" height="1440" />
</figure>

<p>下山後は温泉に入り、バスでキャンプ場に戻った。</p>
<p>ワインを飲みながらぼんやりし、鴨肉を焚き火で2時間くらい炙って食べた。</p>
<figure>
    <img src="/posts/extra/IMG_9803.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9829.jpg" width="1920" height="1440" />
</figure>

<p>朝は早めに起きて、午前のうちに都内に戻った。午後はまた元気にプログラミングをしているので、頭が十分リフレッシュできたのだと思う。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[テストコードでのモックの利用に対する規律]]></title>
        <description><![CDATA[最近テストコードを書いていて、モックをどういう基準で使うか迷うことがあった。
モックに対しては大きく分けると2つの立場があり、それぞれclassicistとmockistと呼ばれている。両者の違いはテスト対象の周辺に対するモックの使用方針に...]]></description>
        <pubDate>Sun, 10 Nov 2024 22:59:27 GMT</pubDate>
        <link>https://ishkawa.org/1731279567</link>
        <guid isPermaLink="false">https://ishkawa.org/1731279567</guid>
        <content:encoded><![CDATA[<p>最近テストコードを書いていて、モックをどういう基準で使うか迷うことがあった。</p>
<p>モックに対しては大きく分けると2つの立場があり、それぞれclassicistとmockistと呼ばれている。両者の違いはテスト対象の周辺に対するモックの使用方針にあり、大雑把に言えばclassicistは必要にならない限りモックを使わず、mockistはテスト対象以外には原則mockを使うというものだ。</p>
<p>このスタンスの違いはテストによって何を検証するかにも差を生む。classicistの方針に沿ったテストは、テスト対象とテスト対象が依存するものの振る舞いも含めて検証する。一方、mockistの方針のテストはテスト対象のみの振る舞いを検証する。これらのテストは前者をsociable tests、後者をsolitary testsと呼ぶらしい(<a href="https://martinfowler.com/bliki/UnitTest.html">参考</a>)。両者の違いを主義の違いではなく、テストの違いと捉えると、違いが理解しやすいと思う。</p>
<p>で、実際に両者のテストをどう使い分けていくのかが問題。</p>
<p>自分がテストコードを書く場合、基本的にはsociableなテストを書くこと最初に考えるようにしている。コードのレイヤーが上がってくると、必然的にsociableなテストでは必要な準備が重たくなるので、そのコストを払うのが適切ではないと判断した時はモックの使用を検討する(=solitaryなテストの考え方を取り入れる)。</p>
<p>初手でsolitaryなテストを避けるようにしているのは、テストが脆くなりやすいと考えているため。すべてをsolitaryなテストで書こうとすると、テストコードはコンポーネント間の取り決めに依存することとなり、それはつまり局所的な実装の仕方に依存することであり、結果的にはリファクタリングに対する耐性を失い、壊れやすいテストになる(ということが『<a href="https://book.mynavi.jp/ec/products/detail/id=134252">単体テストの考え方/使い方</a>』でも説明されていた)。そして、この傾向は責務を割れば割るほど強くなる。</p>
<p>逆に考えれば、コンポーネント間の取り決めが堅く安定しているなら、モックの弱みは出にくいとも言える(ここでの堅さは型の堅さではない)。システム間の連携インターフェースのように、簡単には変わらない/変えられないようなものはモックのデメリットが出にくいし、そのように扱うことがモックによるリファクタリング耐性の劣化を防ぐことに繋がる。</p>
<p>という言語化ができたので、明日からも安心してモックを使おう。限られたケースで。</p>
]]></content:encoded>
      </item>
      <item>
        <title><![CDATA[燕岳と大天井岳に登ってきた]]></title>
        <description><![CDATA[冬季に入ってしまう前に、北アルプスのどこかに行きたいと思って行ってきた。
中房温泉登山口から合戦尾根を登り、稜線を歩いて燕岳、逆向きの稜線を歩いて大天井岳という流れ。宿泊は大天井岳の山頂付近の大天荘でテント泊とした。
合戦尾根は地味に長くて...]]></description>
        <pubDate>Sun, 27 Oct 2024 22:13:04 GMT</pubDate>
        <link>https://ishkawa.org/1730034784</link>
        <guid isPermaLink="false">https://ishkawa.org/1730034784</guid>
        <content:encoded><![CDATA[<p>冬季に入ってしまう前に、北アルプスのどこかに行きたいと思って行ってきた。</p>
<p>中房温泉登山口から合戦尾根を登り、稜線を歩いて燕岳、逆向きの稜線を歩いて大天井岳という流れ。宿泊は大天井岳の山頂付近の大天荘でテント泊とした。</p>
<p>合戦尾根は地味に長くて、登りに3時間弱掛かった。樹林帯の中で急登がずっと続くので、消耗しないようにジリジリと進んでいくのだが、時々富士山や槍ヶ岳がチラ見えするというご褒美があって癒された。そして、最後には山の上にかっこよく立つ燕山荘が出てくる。</p>
<figure>
    <img src="/posts/extra/IMG_9585.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9590.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9597.jpg" width="1920" height="1440" />
</figure>

<p>上に辿り着くと、北アルプスの壮大な景色が広がっている。</p>
<figure>
    <img src="/posts/extra/IMG_9607.jpg" width="1920" height="1440" />
</figure>

<p>燕岳方面に進むと、独特な雰囲気の不思議な景色となる。</p>
<figure>
    <img src="/posts/extra/IMG_9610.jpg" width="1920" height="1440" />
</figure>

<p>次は稜線を歩いて大天井岳を目指す。燕山荘からも大天井岳と大天荘が見えるのだが、心を折られそうになるくらい遠くに見える。大天荘もギリギリ目視できた(写真の山頂の左肩に見える四角の点)。燕山荘や燕岳までは人がたくさんいたのだが、この道まで進むと人がグッと減る。</p>
<figure>
    <img src="/posts/extra/IMG_9636.jpg" width="1920" height="1440" />
</figure>

<p>稜線は常に北アルプスの景色が見えたこともあって楽しく歩けたが、最後の登りは心底きつかった。大天井岳の山頂からは360度どこを向いても良い景色で、苦労が報われた気持ちになった。あとライチョウにも会えた。</p>
<figure>
    <img src="/posts/extra/IMG_9656.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9652.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9653.jpg" width="1920" height="1440" />
</figure>

<figure>
    <img src="/posts/extra/IMG_9667.jpg" width="1920" height="1440" />
</figure>

<p>大天井岳に登った後はテントを設営してダラダラする。今回はダラダラタイムのお供として、ワインをボトルごと持ってきた。</p>
<figure>
    <img src="/posts/extra/IMG_9671.jpg" width="1920" height="1440" />
</figure>

<p>ワインを飲みながら「何もしない」をしたり、少し本を読んだり、肉を焼いたりして過ごした。疲れていたこともあり、早く寝た。</p>
<figure>
    <img src="/posts/extra/IMG_9678.jpg" width="1920" height="1440" />
</figure>


<p>次の日は早めに起きて、日の出を眺めた。日に照らされた山も美しかった。</p>
<figure>
    <img src="/posts/extra/IMG_9721.jpg" width="1920" height="1440" />
</figure>


<figure>
    <img src="/posts/extra/IMG_9725.jpg" width="1920" height="1440" />
</figure>

<p>燕岳方面の帰り道も見えて美しかったのだが、燕山荘は点にしか見えないくらい遠い。</p>
<figure>
    <img src="/posts/extra/IMG_9730.jpg" width="1920" height="1440" />
</figure>

<p>日の出を眺めてからテントを撤収し、黙々と下山していったら午前中のうちに中房温泉登山口まで辿り着くことができた。今年最後の北アルプスは満喫できたと思う。</p>
]]></content:encoded>
      </item>
  </channel>
</rss>