<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://blog.taross-f.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.taross-f.dev/" rel="alternate" type="text/html" /><updated>2026-09-25T10:21:50+00:00</updated><id>https://blog.taross-f.dev/feed.xml</id><title type="html">T=&amp;gt;</title><subtitle>日々 =&gt; メモ</subtitle><entry><title type="html">Wi-Fiのレイテンシがawdl0を止めたら改善したのでhawdlを作った</title><link href="https://blog.taross-f.dev/awdl-latency-hawdl/" rel="alternate" type="text/html" title="Wi-Fiのレイテンシがawdl0を止めたら改善したのでhawdlを作った" /><published>2026-09-12T00:00:00+00:00</published><updated>2026-09-12T00:00:00+00:00</updated><id>https://blog.taross-f.dev/awdl-latency-hawdl</id><content type="html" xml:base="https://blog.taross-f.dev/awdl-latency-hawdl/"><![CDATA[<p>自宅で接続するときに、wifiのレイテンシが定期的に大きくなってweb会議に支障をきたすことが続いていた。同じネットワークの他の端末では起きていない。</p>

<p>Claudeに協力してもらいながら調べていったところ、<code class="language-plaintext highlighter-rouge">awdl0</code>を止めると改善しました。AirDropなどで使われるApple Wireless Direct Linkのインターフェースです。</p>

<p>ただ一度止めてもOSが有効に戻してしまうので、停止した状態を維持するための<a href="https://github.com/taross-f/hawdl">hawdl</a>というツールを作りました。調べた内容も書いておきます。</p>

<h1 id="pingで確認">pingで確認</h1>

<p>ルーターにpingを打ってみる。</p>

<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">$</span><span class="w"> </span>ping <span class="nt">-c</span> 60 <span class="nt">-i</span> 0.25 <span class="nt">-q</span> 192.168.0.1
<span class="go">60 packets transmitted, 60 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.921/236.760/1090.306/268.352 ms
</span></code></pre></div></div>

<p>パケットロスはないけど、平均で236ms、最大で1秒以上かかっている。定期的に遅くなるという認識だったけど、平均でも結構遅いですね。</p>

<p>宛先を変えても測ってみました。値はすべてmsです。</p>

<table>
  <thead>
    <tr>
      <th>宛先</th>
      <th>min</th>
      <th>avg</th>
      <th>max</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>192.168.0.1(GW)</td>
      <td>5.195</td>
      <td>185.311</td>
      <td>614.649</td>
    </tr>
    <tr>
      <td>192.168.0.211(LAN内)</td>
      <td>5.897</td>
      <td>189.708</td>
      <td>611.916</td>
    </tr>
    <tr>
      <td>1.1.1.1</td>
      <td>7.234</td>
      <td>225.909</td>
      <td>1058.991</td>
    </tr>
    <tr>
      <td>8.8.8.8</td>
      <td>8.064</td>
      <td>237.669</td>
      <td>1074.322</td>
    </tr>
  </tbody>
</table>

<p>インターネットに出る前から遅いので、自宅のLAN内を調べることに。</p>

<p>LAN内の別端末宛でも同じなのでMac側の問題かと思ったんですが、これもアクセスポイント(AP)を経由するので、まだMacとAPのどちらかはわからない。</p>

<h1 id="電波や通信量を確認">電波や通信量を確認</h1>

<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">$</span><span class="w"> </span>system_profiler SPAirPortDataType | <span class="nb">grep</span> <span class="nt">-E</span> <span class="s1">'Signal|Transmit Rate|Channel'</span>
<span class="go">Channel: 48 (5GHz, 80MHz)
Signal / Noise: -37 dBm / -73 dBm
Transmit Rate: 1200
</span></code></pre></div></div>

<p>信号強度は-37dBm、表示上の接続速度は1200Mbps。電波が弱いわけではなさそう。</p>

<p>通信量が多くて遅くなっているのかもと思って、pingとあわせて<code class="language-plaintext highlighter-rouge">netstat -I en0 -b</code>の値も確認しました。250msごとの通信量を比べた結果がこれ。</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>高遅延スロット(n=38) 平均 69631 bytes
低遅延スロット(n=34) 平均 101268 bytes
</code></pre></div></div>

<p>今回の測定では、遅いときのほうが通信量は少なかった。これだけで原因を除外はできないけど、通信量が増えたときに遅くなる、という感じでもないので別のところを調べる。</p>

<h1 id="awdl0を止めてみる">awdl0を止めてみる</h1>

<p><code class="language-plaintext highlighter-rouge">wdutil info</code>でチャンネルの情報を確認すると、接続先のch48以外にもch44やch6が出ていました。</p>

<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">$</span><span class="w"> </span><span class="nb">sudo </span>wdutil info | <span class="nb">grep</span> <span class="nt">-iE</span> <span class="s1">'channel|rssi|tx rate'</span>
<span class="go">Channel           : 5g48/80
Channel Sequence  : 48++ 0 44++ 0 0 0 0 0 6 0 44++ 0 0 0 0 0
Master Channel    : 6/0
</span></code></pre></div></div>

<p>AWDLの通信でチャンネルが切り替わることが影響していそうなので、<code class="language-plaintext highlighter-rouge">awdl0</code>を停止して同じ宛先にpingを打ってみました。</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>ifconfig awdl0 down <span class="o">&amp;&amp;</span> <span class="nb">sleep </span>8 <span class="o">&amp;&amp;</span> ping <span class="nt">-c</span> 60 <span class="nt">-i</span> 0.25 <span class="nt">-q</span> 192.168.0.1
</code></pre></div></div>

<p>停止直後に測ったときは<code class="language-plaintext highlighter-rouge">20% loss / avg 1334ms / max 4953ms</code>とむしろ悪くなっていたんですが、8秒待ってから測り直すと改善しました。この環境では少し待つ必要があったようです。</p>

<p><code class="language-plaintext highlighter-rouge">airportd</code>の内部指標もあわせて比較しています。</p>

<table>
  <thead>
    <tr>
      <th>指標</th>
      <th>AWDL有効</th>
      <th>AWDL停止</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ping min/avg/max/stddev (ms)</td>
      <td>4.3 / 249 / 1090 / 273</td>
      <td>2.429 / 3.012 / 3.761 / 0.394</td>
    </tr>
    <tr>
      <td>cca</td>
      <td>63〜83%</td>
      <td>19〜21%</td>
    </tr>
    <tr>
      <td>interferenceTotal</td>
      <td>45〜79</td>
      <td>5〜10</td>
    </tr>
    <tr>
      <td>p95-lat</td>
      <td>358〜526</td>
      <td>1</td>
    </tr>
    <tr>
      <td>beaconRecv/Sched</td>
      <td>39-43 / 48-49</td>
      <td>49 / 49</td>
    </tr>
  </tbody>
</table>

<p>pingの平均が249msから3msになって、ばらつきもかなり小さくなった。beaconの受信数も予定数と一致するようになっています。</p>

<p>少なくとも自分の環境では、awdl0を止めることで遅延が改善することがわかりました。</p>

<p>原因はわかったんですが、念のため他の要因も確認しておきました。</p>

<table>
  <thead>
    <tr>
      <th>確認したもの</th>
      <th>やったこと</th>
      <th>結果</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>中継機 RE700X</td>
      <td>電源を抜く</td>
      <td>cca / interference / p95に変化なし</td>
    </tr>
    <tr>
      <td>Bluetooth</td>
      <td>2台つないだまま測定</td>
      <td>stddev 0.851ms</td>
    </tr>
    <tr>
      <td>近隣AP</td>
      <td>同一チャンネルのAPを確認</td>
      <td>ccaOtherTotalは3〜13%</td>
    </tr>
    <tr>
      <td>バックグラウンドスキャン</td>
      <td><code class="language-plaintext highlighter-rouge">log stream</code>で40秒間のscan要求を確認</td>
      <td>0件</td>
    </tr>
    <tr>
      <td>アプリ</td>
      <td>Zoom / Slack / krisp / Music / Teamsを順に終了</td>
      <td>変化なし</td>
    </tr>
    <tr>
      <td>近くのMacBook Air</td>
      <td>Wi-Fiをオフにする</td>
      <td>leak警告は消えたがccaに変化なし</td>
    </tr>
  </tbody>
</table>

<h1 id="hawdlを作った">hawdlを作った</h1>

<p><code class="language-plaintext highlighter-rouge">sudo ifconfig awdl0 down</code>で止めても、AirDropなどを使ったりスリープから復帰したりするとOSが<code class="language-plaintext highlighter-rouge">up</code>に戻してしまう。そのたびに手動で止めるのも面倒なので、<a href="https://github.com/taross-f/hawdl">hawdl</a>を作りました。</p>

<p>Swift製で、外部パッケージへの依存はありません。メニューバーアプリとCLIから操作できます。</p>

<p>root権限で動くデーモンの<code class="language-plaintext highlighter-rouge">hawdld</code>がawdl0を監視して、OSが有効に戻したら再度停止します。メニューバーアプリとCLIはUnix domain socket経由でデーモンに接続するので、普段の操作ではsudoは不要です。</p>

<p>監視には<code class="language-plaintext highlighter-rouge">PF_ROUTE</code>の<code class="language-plaintext highlighter-rouge">RTM_IFINFO</code>を使っています。イベントを取りこぼした場合に備えて、30秒ごとの状態確認も入れています。</p>

<p>インターフェースの操作は<code class="language-plaintext highlighter-rouge">ifconfig</code>を呼ばずに、ioctlの<code class="language-plaintext highlighter-rouge">SIOCGIFFLAGS</code> / <code class="language-plaintext highlighter-rouge">SIOCSIFFLAGS</code>で直接変更するようにしました。このマクロがSwiftからimportできないので、そこだけCのコードを挟んでいます。</p>

<p>OSが短時間に何度も有効に戻す場合は、停止するまでの待ち時間を延ばすようにしています。10秒以内に5回以上戻されたら、1秒、2秒、4秒と間隔を空ける。</p>

<p><code class="language-plaintext highlighter-rouge">hawdl status</code>では現在の状態を確認できます。<code class="language-plaintext highlighter-rouge">blocked</code>に、OSが有効に戻したのを何回止めたかが出ます。</p>

<h2 id="インストール">インストール</h2>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew <span class="nb">install </span>taross-f/hawdl/hawdl
<span class="nb">sudo </span>brew services start hawdl
</code></pre></div></div>

<p>完全修飾名で指定すればtapも一緒に追加されるので、先に<code class="language-plaintext highlighter-rouge">brew tap taross-f/hawdl</code>を打つ必要はありません。最新リリースをソースからビルドします。リリースではなく<code class="language-plaintext highlighter-rouge">main</code>を追いたい場合は<code class="language-plaintext highlighter-rouge">brew install --HEAD taross-f/hawdl/hawdl</code>です。</p>

<p>CLIやメニューバーアプリを使うにはデーモンの起動が必要なので、<code class="language-plaintext highlighter-rouge">sudo brew services start hawdl</code>まで実行してください。</p>

<p>メニューバーアプリは別途起動します。</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>open <span class="s2">"</span><span class="si">$(</span>brew <span class="nt">--prefix</span> hawdl<span class="si">)</span><span class="s2">/HawdlBar.app"</span>
</code></pre></div></div>

<h2 id="airdropなどを使うとき">AirDropなどを使うとき</h2>

<p>AWDLを止めている間は、AirDropやSidecarなどの連係機能が使えなくなることがあります。Handoff、ユニバーサルクリップボード、ユニバーサルコントロール、連係カメラ、ピアツーピアのAirPlayなどにも影響します。</p>

<p>必要なときは<code class="language-plaintext highlighter-rouge">hawdl release</code>かメニューバーから解除できます。デーモンの通常終了時にも<code class="language-plaintext highlighter-rouge">up</code>に戻すようにしています。</p>

<p><code class="language-plaintext highlighter-rouge">awdl0</code>を直接操作しているので、macOSのアップデートで挙動が変わる可能性はあります。制御ソケットのパーミッションは0666で、同じMacの他のユーザーも操作できるため、共用Macで使う場合は注意してください。</p>

<p>自分の環境ではこれでレイテンシが改善しました。AirDropなどが使えなくなるのは不便なので、必要なときは戻しながら使うことになります。</p>]]></content><author><name></name></author><category term="macOS" /><category term="Network" /><category term="Swift" /><category term="Tools" /><summary type="html"><![CDATA[自宅で接続するときに、wifiのレイテンシが定期的に大きくなってweb会議に支障をきたすことが続いていた。同じネットワークの他の端末では起きていない。]]></summary></entry><entry><title type="html">8番出口ライクなビデオ会議異変探しゲーム「定例会議」をつくった</title><link href="https://blog.taross-f.dev/teirei-kaigi/" rel="alternate" type="text/html" title="8番出口ライクなビデオ会議異変探しゲーム「定例会議」をつくった" /><published>2026-06-15T00:00:00+00:00</published><updated>2026-06-15T00:00:00+00:00</updated><id>https://blog.taross-f.dev/teirei-kaigi</id><content type="html" xml:base="https://blog.taross-f.dev/teirei-kaigi/"><![CDATA[<p><a href="/apps/teirei-kaigi/">定例会議</a>というブラウザゲームを作りました。</p>

<p>いわゆる8番出口ライクな異変探しゲームです。舞台がオフィスでも地下通路でもなく、<strong>ビデオ会議</strong>になっています。月曜から金曜まで、毎日の定例会議に出席して、画面のどこかに異変がないかを見張る、それだけのゲームです。</p>

<h2 id="ルール">ルール</h2>

<p>ルールはシンプルです。</p>

<ul>
  <li>会議中、参加者の様子や画面に<strong>異変があれば「退出」する</strong></li>
  <li><strong>異変がなければ最後まで残る</strong></li>
  <li>月曜から金曜まで、判断を間違えなければクリア</li>
</ul>

<p>8番出口と同じで、「異変があるのに残る」「異変がないのに退出する」とどちらもアウトです。異変を感じたら勇気を持って退出、なにもなければじっと耐えて最後まで残る。この判断を1週間ぶんやりきれば勝ちです。</p>

<h2 id="異変いろいろ">異変いろいろ</h2>

<p>異変は地味なものから露骨なものまでいろいろ用意しています。たとえば、</p>

<ul>
  <li>田中さんの顔色が悪い</li>
  <li>全員の名前が「田中」になっている</li>
  <li>渡辺さんの目が赤い</li>
  <li>高橋さんの背景に人影がある</li>
</ul>

<p>…みたいなやつです。パッと見ではわからない、いつもの定例会議に紛れ込んだ小さな違和感を探す感じですね。見破った異変は図鑑に記録されていって、全部そろえると全制覇トロフィーがもらえます。</p>

<p>ちなみに、ひとつひとつの異変の細かい中身は自分で作り込んでいません。Claude Codeに任せて生成してもらっているので、自分が作ったゲームなのに「次にどんな異変が出るのか」を自分でも知らないまま遊べて、わりと新鮮な感覚があります。作者なのに普通にビクッとする。</p>

<p>リモートワークで毎週やっている定例会議の、あの独特の手持ち無沙汰な空気感を異変探しに変換できないかな、というのが作ったきっかけでした。</p>

<h2 id="プレイ動画">プレイ動画</h2>

<!-- TODO: あとでYouTubeのプレイ動画をここに埋め込む -->

<p>(プレイ動画はあとでYouTubeで埋め込みます)</p>

<h2 id="技術的な話">技術的な話</h2>

<p>React + Viteで作って、GitHub Pagesにそのまま乗せています。これもほぼVibes Codingで、Claude Codeに「8番出口みたいなのをビデオ会議でやりたい」と投げて、異変のバリエーションを足したり効果音をつけたりしながら膨らませていきました。</p>

<p>異変探し系はとにかく「異変パターンの数」が面白さに直結するので、ロジックの本体よりも「どんな違和感がゾッとするか」を考えている時間のほうが長かったです。このあたりはコードを書くというより演出を考えている感覚に近くて、わりと楽しかったですね。</p>

<p>遊べるのはこちらからどうぞ。</p>

<p><a href="/apps/teirei-kaigi/">定例会議をプレイする</a></p>]]></content><author><name></name></author><category term="Tools" /><category term="Game" /><category term="React" /><summary type="html"><![CDATA[定例会議というブラウザゲームを作りました。]]></summary></entry><entry><title type="html">40歳、5年目、惑惑</title><link href="https://blog.taross-f.dev/four-years-and-forty/" rel="alternate" type="text/html" title="40歳、5年目、惑惑" /><published>2025-09-13T00:00:00+00:00</published><updated>2025-09-13T00:00:00+00:00</updated><id>https://blog.taross-f.dev/four-years-and-forty</id><content type="html" xml:base="https://blog.taross-f.dev/four-years-and-forty/"><![CDATA[<p>今月でPKSHA Technologyに入って4年が経つ。そしてもうすぐ40歳になる。節目感あるし現状のポエムを書いてみようと思う</p>

<p>入社して最初の2年は旧Bedore所属でAI HelpdeskチームでSWEとEMをやってて、その後グループ会社のPKSHA Communication(当時)に異動した。今は会社のカンパニー化にともないカンパニー執行役員として複数プロダクトのエンジニア職種を統括する立場で、管理対象人数は50人くらい。</p>

<p>シンプルにここ10年で一番仕事がしんどい</p>

<h2 id="これまでとは違う難しさ">これまでとは違う難しさ</h2>

<p>なんというか、これまでのSWE→EMの延長線上でない。何を求められているのか探るところから難しくて、手探りでやってる感じがずっと続いている。自分が何をすべきなのか、どこに価値を出せるのか、もやっとしている。</p>

<p>EMをやってた時は、チームのパフォーマンスを上げるとか、メンバーの成長を支援するとか、やることがわりと明確だった。でも今の役割は、複数のチーム、複数のプロダクト、そして50人という規模。単純に2倍、3倍のスケールじゃなくて、質的に全然違う</p>

<p>でも周りからの見え方とか期待値は確実に大きくなってて、うまくいかないと「残念だ」みたいな反応をされる。このギャップがまたしんどい。期待に応えたいけど、そもそも何に応えればいいのかがぼんやりしてる。</p>

<p>頑張ってることと成果が出ることは別だし、頑張りが評価される年齢でもないし。</p>

<p>一応テーマは持って進めていた(今期は採用･そのための技術広報を回す)し、それが進んだ結果にはなっていて1年前と比べたら見え方変わっていると思うが、まだまだこれからなのもあるし、結果が出ているとは言い難い。来期もまた違うテーマが見えてきていて、それはさらに難しいものに見えている</p>

<h2 id="強みとは">強みとは</h2>

<p>実は最近、自分の強みって何だったんだろうって考えることが増えた。エンジニアとしての技術力？マネジメント能力？コミュニケーション？正直、よくわからなくなってきている。これまで「なんとなくできてた」ことが、規模が大きくなって通用しなくなってきたのかもしれない。</p>

<p>AI Helpdeskの時は、技術的な判断もできるし、プロダクトの方向性も決められるし、メンバーのケアもできる、みたいな感じで動けてた。でも今は全部を見るなんて物理的に無理で、どこにフォーカスすべきかを決めないといけない。</p>

<p>そもそも、40歳で「自分の強みがわからない」って言ってるのもどうなんだろうと思うけど、たぶん今までは環境に恵まれてて、自分の強みを深く考えなくても何となくうまくいってたんだと思う。</p>

<h2 id="極端に振り切るという選択肢">極端に振り切るという選択肢</h2>

<p>いっそ極端に振り切ってみるのも手かなと思ったりする。例えば事業にめちゃくちゃ首突っ込んでビジネスサイドとガッツリやるとか、逆に自分はなるべくボールを渡していって、メンバーが動きやすい環境を作ることに徹するとか。中途半端が一番良くない気がしてる。</p>

<p>事業に首突っ込むパターンだと、プロダクトの数値とか売上とか、そういうところまで責任を持つ。エンジニア組織の話だけじゃなくて、ビジネス全体の中でエンジニアリングをどう活かすかを考える。これはこれで面白そうだけど、今まであまりやってこなかった領域だから学習コストは高く、効果があるのか説明も難しい</p>

<p>一方で、環境づくりに徹するパターン。採用とか評価制度とか、開発プロセスの整備とか、そういうところに集中する。直接的な成果は見えにくいけど、長期的には組織の基盤を作ることになる。ただ、これだと「で、ビジネスへの貢献は？」って聞かれた時に答えにくいし、今でもだいぶ遠いのに更に遠くなってよいのか</p>

<p>正直、どっちがいいのかわからない。でも、今みたいに中途半端な状態よりはマシな気がする。</p>

<h2 id="それでもやっていくしかない">それでもやっていくしかない</h2>

<p>まだ成果が出るイメージが持てなくてつらい。朝起きて「今日も頑張るか」って思うけど、会議に出て、1on1して、テキスト書いて、｢今日もなんとかなった｣ではだめ</p>

<p>たぶん1年後くらいに読み返したら「あの時はこんなこと考えてたんだな」って思うんだろう。その時には少しでも前に進んでいたい。というか、進んでいるはず。そう信じてやっていくしかない。この「わからない」状態こそが成長の前段階なのかもしれない。今まで通用してたやり方が通用しなくなって、新しいやり方を模索してる時期。</p>

<p>40歳、5年目。まだまだ人生も折り返し。不惑ではなく惑惑、これをワクワクに(?)</p>]]></content><author><name></name></author><category term="Poem" /><category term="Life" /><category term="Management" /><summary type="html"><![CDATA[今月でPKSHA Technologyに入って4年が経つ。そしてもうすぐ40歳になる。節目感あるし現状のポエムを書いてみようと思う]]></summary></entry><entry><title type="html">引用画像を作成するためのツールquottoをつくった</title><link href="https://blog.taross-f.dev/quotto/" rel="alternate" type="text/html" title="引用画像を作成するためのツールquottoをつくった" /><published>2025-07-15T00:00:00+00:00</published><updated>2025-07-15T00:00:00+00:00</updated><id>https://blog.taross-f.dev/quotto</id><content type="html" xml:base="https://blog.taross-f.dev/quotto/"><![CDATA[<p><a href="https://github.com/taross-f/quotto">quotto</a>というコマンドラインツールを作りました。</p>

<p>Kindle quoteみたいなノリでKindle以外の文章の引用画像を作成するためのツールです。おもにオライリーの電子書籍を引用するために自分は作ったのですが、汎用的に使えるようになっています。</p>

<h2 id="できること">できること</h2>

<p>e-reader風のシンプルなデザインで、美しい引用画像を生成できます。文章だけでなく、本のタイトルや著者名も含めて画像化できるのが特徴です。</p>

<p><img src="/images/quotto-sample.png" alt="quotto sample" /></p>

<h2 id="使い方">使い方</h2>

<h3 id="インストール">インストール</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># グローバルインストール</span>
npm <span class="nb">install</span> <span class="nt">-g</span> quotto

<span class="c"># プロジェクト内にインストール</span>
npm <span class="nb">install </span>quotto
</code></pre></div></div>

<h3 id="基本的な使い方">基本的な使い方</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># シンプルな引用</span>
quotto <span class="nt">--quote</span> <span class="s2">"偉大な仕事をする唯一の方法は、あなたがやっていることを愛することです。"</span>

<span class="c"># タイトルと著者付きの引用</span>
quotto <span class="se">\</span>
  <span class="nt">--quote</span> <span class="s2">"Stay hungry,</span><span class="se">\n</span><span class="s2">stay foolish."</span> <span class="se">\</span>
  <span class="nt">--title</span> <span class="s2">"Stanford Commencement Address"</span> <span class="se">\</span>
  <span class="nt">--author</span> <span class="s2">"Steve Jobs"</span>
</code></pre></div></div>

<h3 id="オプション">オプション</h3>

<ul>
  <li><code class="language-plaintext highlighter-rouge">--quote</code>: 引用文（必須）改行もサポート</li>
  <li><code class="language-plaintext highlighter-rouge">--title</code>: 本や記事のタイトル（任意）</li>
  <li><code class="language-plaintext highlighter-rouge">--author</code>: 著者名（任意）</li>
  <li><code class="language-plaintext highlighter-rouge">--output</code>: 出力ファイル名（任意、デフォルトはタイムスタンプベース）</li>
</ul>

<h2 id="技術的な話">技術的な話</h2>

<p>Claude Codeで100%Vibes Codingで作りました。Vibes CodingだとT3StackなどのTypeScriptベースで作っていくとうまくいきがちで、さらにCLIだと精度があがる印象ですね</p>

<p>オライリーの技術書から気に入った文章を引用する際に、きれいに画像化してシェアしたいというのが作成のきっかけでした。Kindleだと簡単に引用できるのですが、それ以外の電子書籍では同じようなことができないので、自分で作ってみました。</p>]]></content><author><name></name></author><category term="Tools" /><category term="CLI" /><category term="Node.js" /><summary type="html"><![CDATA[quottoというコマンドラインツールを作りました。]]></summary></entry><entry><title type="html">全体最適という幻想と、個別最適の衝突から生まれる本物</title><link href="https://blog.taross-f.dev/individual-optimization-creates-total-optimization/" rel="alternate" type="text/html" title="全体最適という幻想と、個別最適の衝突から生まれる本物" /><published>2025-07-06T00:00:00+00:00</published><updated>2025-07-06T00:00:00+00:00</updated><id>https://blog.taross-f.dev/individual-optimization-creates-total-optimization</id><content type="html" xml:base="https://blog.taross-f.dev/individual-optimization-creates-total-optimization/"><![CDATA[<p>「全体最適を考えて動いてください」</p>

<p>マネジメント層からよく聞くこの言葉。でも、正直なところ「それって具体的に何？」って思いませんか。</p>

<p>最近、自分でもよくわからなくなってミスったので、その反省を書きます。</p>

<h1 id="サッカーで考える全体最適の罠">サッカーで考える全体最適の罠</h1>

<p>まず例え話として、サッカーのボランチ（守備的ミッドフィルダー）の話をしましょう。</p>

<p>ボランチの選手が「チームの方針のことを考えて」守備重視でプレーしたとします。攻撃参加を控えて、ディフェンスラインの前でがっちり守る。一見、全体最適っぽいですよね。</p>

<p>でも結果はどうでしょう。</p>

<ul>
  <li>中盤の攻撃力が落ちる</li>
  <li>前線が孤立する</li>
  <li>得点チャンスが激減する</li>
  <li>結局、守備的なのに失点も防げない</li>
</ul>

<p>なぜこうなるのか。それは、ボランチが「想像上の全体最適」を追いかけたからです。</p>

<h1 id="個別最適の衝突が生む本当の最適解">個別最適の衝突が生む本当の最適解</h1>

<p>本来なら、こうあるべきでした：</p>

<ol>
  <li>ボランチ「俺は攻守のバランスを取りたい」</li>
  <li>センターバック「もっと前線をカバーしてくれ」</li>
  <li>オフェンシブMF「もっと前に出てきて欲しい」</li>
</ol>

<p>この「個別最適のぶつかり合い」から、議論が生まれます。そして監督（上位レイヤー）と擦り合わせた結果、「今日は相手が強いから守備7：攻撃3でいこう」といった<strong>具体的な</strong>全体最適が見えてくる。</p>

<p>エンジニアリングでも同じですよね。</p>

<ul>
  <li>フロントエンド「UXを最高にしたい」</li>
  <li>バックエンド「パフォーマンスを追求したい」</li>
  <li>インフラ「コストを抑えたい」</li>
</ul>

<p>この個別最適をぶつけ合って、初めて「今回のプロダクトではUX重視で、でもレスポンスは500ms以内」みたいな落とし所が見つかる。</p>

<h1 id="マネジメント層が陥りがちな罠">マネジメント層が陥りがちな罠</h1>

<p>「全体最適を考えて」と言いながら、実は抽象的な理想論を勝手に想像していませんか？</p>

<p>マネジメント層は確かに一つ上のレイヤーの優先度を意識する必要があります。でも、それに寄せすぎて個別最適を無視すると、チームは「で、結局何すればいいの？」状態になります。</p>

<p>大事なのは：</p>
<ol>
  <li>各メンバーの個別最適を引き出す</li>
  <li>それらを戦わせる場を作る</li>
  <li>上位の優先度と擦り合わせる</li>
  <li>具体的な行動指針に落とし込む</li>
</ol>

<p>この「議論を戦わせる」プロセスを飛ばして、いきなり全体最適を取りに行くから破綻するのかなと</p>

<h1 id="実装に落とし込むと">実装に落とし込むと</h1>

<p>コードレビューでもよくある話です。</p>

<p>「もっと全体のアーキテクチャを考えて」という抽象的なフィードバックより、「このモジュールの責務はXXだから、この処理は別モジュールに」という具体的な議論の方が建設的。</p>

<p>個別最適（各モジュールの責務）を明確にして、それらの関係性を議論することで、結果的に良いアーキテクチャ（全体最適）が生まれる。(ちょっと違うか…?)</p>

<h1 id="結論">結論</h1>

<p>つまり”全体最適”とは、個別最適の議論を戦わせる姿勢 + 結論を軌道修正してそれにコミットする動き ということ。全体最適は”目指すもの”じゃなくて”個別最適をぶつけあった結果として生まれるもの”。</p>

<p>個別最適を主張して、他の個別最適とぶつけて、上位レイヤーと擦り合わせる。このプロセスを大切にすることが、本当の全体最適への道なんじゃないでしょうか。</p>]]></content><author><name></name></author><category term="Management" /><category term="Poem" /><summary type="html"><![CDATA[「全体最適を考えて動いてください」]]></summary></entry><entry><title type="html">エンジニアパパ、育休2ヶ月のリアル</title><link href="https://blog.taross-f.dev/days-of-parental-leave/" rel="alternate" type="text/html" title="エンジニアパパ、育休2ヶ月のリアル" /><published>2025-06-12T00:00:00+00:00</published><updated>2025-06-12T00:00:00+00:00</updated><id>https://blog.taross-f.dev/days-of-parental-leave</id><content type="html" xml:base="https://blog.taross-f.dev/days-of-parental-leave/"><![CDATA[<p>「育休って実際どんな感じ？」</p>

<p>育休取得を予定されている人から何度も聞かれそうなこの質問。5月半ばに3人目が産まれて、エンジニアとして初めての育休(2ヶ月)を取得しました。正直、想像していたものとは全然違う日々を過ごしています。</p>

<p>この記事も、深夜2時赤ちゃんの寝息を確認しながら、一人カタカタとキーボードを叩いて書いています。</p>

<p>我が家の構成：妻、0歳女の子、保育園年中の次男、小学1年生の長男</p>

<h1 id="タイムスケジュールという名の戦場">タイムスケジュールという名の戦場</h1>

<p>「育休中ってなにやってるの？」という疑問を解くために、ある日のスケジュールを晒してみます。</p>

<p><strong>6:30</strong> 起床 → 上の子2人の朝ご飯準備。「今日のメニューは？」「またパンかよ」のやり取りから1日が始まる<br />
<strong>7:30</strong> 長男を登校班へ送る。
<strong>8:20</strong> 次男を保育園へ。「パパ、今日お迎え来る？」と毎日確認される<br />
<strong>9:00-12:00</strong> 束の間の自由時間…と思いきや、洗濯、掃除、役所への書類提出etc<br />
<strong>12:00-14:30</strong> 昼食後の昼寝タイム（これがないと夜まで持たない）<br />
<strong>14:30-16:00</strong> 長男の宿題バトル。音読を聞く作業がなぜか30分を超える
<strong>16:30</strong> 次男お迎え → 即お風呂 → 夕飯準備
<strong>18:00</strong> 家族でワイワイ夕食。この時間が一番にぎやか<br />
<strong>21:00</strong> 妻が上の子たちを寝かしつけ（そのまま一緒に寝落ち）<br />
<strong>21:00-3:00</strong> 赤ちゃんとの1対1。寝ていればPC作業もできるし、眠かったら無理せずに一緒にねる。寝ない日はもうあきらめてミルクあげたりオムツ変えたり。Audible聞いたりも<br />
<strong>3:00</strong> 妻とバトンタッチ。</p>

<p>もちろん、このスケジュールの間にも3時間おきのミルク、おむつ替え、泣き対応が割り込んできます。まさにマルチタスクの極み。</p>

<h1 id="俺役に立ってる問題">「俺、役に立ってる？」問題</h1>

<p>育休1週間目、ふと不安になって妻に聞いてしまいました。<br />
「育休とった意味、ありそう？」</p>

<p>妻の答えは意外とシンプルでした。<br />
「一人だったら、今頃倒れてる。特に上の子対応しなくてよいのは楽」</p>

<p>そうか、これを妻が一人でやっていたら…と想像すると、確かにゾッとします。</p>

<h1 id="折り返し地点で見えてきたもの">折り返し地点で見えてきたもの</h1>

<p>1ヶ月が経過。生活リズムは安定してきましたが、睡眠不足との戦いは続いています。連続3時間以上寝られた日は、まだ片手で数えられる程度。</p>

<p>そんな中でも、技術への興味は失っていません。Claude Codeが話題になっているのを見て、赤ちゃんが寝ている隙に触ってみたり。エンジニアの性ですね。</p>

<p>昼寝の質を上げるために<a href="https://amzn.to/442tsLW">CIOのUSB充電式アイマスク</a>を導入したのは、我ながらナイスな判断でした。15分の昼寝でも、しっかり暗くなると回復度が違います。</p>

<h2 id="チームの理解に救われる">チームの理解に救われる</h2>

<p>仕事面では、チームメンバーの理解と協力に本当に感謝しています。育休取得を伝えた時の「お互い様だから」という言葉。男女問わず育休が当たり前に取れる環境って、改めてすごいことだなと。</p>

<p>週に数回飛んでくるメンションにも、余裕を持って対応できています。完全に仕事から離れるのではなく、この程度の距離感がちょうどいい。</p>

<h2 id="燃え尽きからの回復">燃え尽きからの回復</h2>

<p>実は育休に入る前、仕事に対して少し燃え尽き気味でした。プロジェクトの山を越えて、次の目標が見えなくなっていたというか。</p>

<p>でも、この1ヶ月で少しずつエネルギーが戻ってきているのを感じます。子どもたちと過ごす時間が、意外なリフレッシュになっているのかもしれません。</p>

<h1 id="これからの1ヶ月">これからの1ヶ月</h1>

<p>長男が「パパ、最近家にいるね」と嬉しそうに言ってくれたり、次男が保育園で「うちのパパは赤ちゃんのお世話してる」と自慢してくれたり。赤ちゃんの様子も正確に説明できるくらい理解できているのは初めてです。</p>

<p>残り1ヶ月。きっとあっという間に過ぎていくでしょう。でも、この経験は確実に自分を変えてくれている気がします。</p>

<p>エンジニアとして、父親として、一人の人間として。<br />
育休は「休み」ではなく、改めて自分と家族を見つめ直す「修行」なのかもしれません。</p>]]></content><author><name></name></author><category term="Life" /><category term="Poem" /><summary type="html"><![CDATA[「育休って実際どんな感じ？」]]></summary></entry><entry><title type="html">HHKB Studioはじめました</title><link href="https://blog.taross-f.dev/hhkb-studio/" rel="alternate" type="text/html" title="HHKB Studioはじめました" /><published>2024-01-31T00:00:00+00:00</published><updated>2024-01-31T00:00:00+00:00</updated><id>https://blog.taross-f.dev/hhkb-studio</id><content type="html" xml:base="https://blog.taross-f.dev/hhkb-studio/"><![CDATA[<p>先週の入荷以降だいぶ安定して買えるようになったHHKB Studio、自分も買ってみたのでさんざんこすられてますが、3日ほど使った感想を書いてみます。JIS配列</p>

<h1 id="セットアップ">セットアップ</h1>

<p><img src="https://github.com/taross-f/taross-f.github.io/blob/master/images/hhkb.png?raw=true" alt="セットアップ" /></p>

<p>MacBookのキー配置と近づけるために英数とかなを2キーに割り当てしてます。前からやってるけどこれやらないとミスタッチしすぎてイライラしちゃうので</p>

<p>Gesture Padは以下のように設定</p>

<ul>
  <li>左
    <ul>
      <li>上: Ctrl+↑ (Mac側ショートカットをMissionControlにしておく)</li>
      <li>下: F11 (Mac側ショートカットをアプリケーションウィンドウにしておく)</li>
    </ul>
  </li>
  <li>左下: 左右スクロール</li>
  <li>右下: Ctrl+←→ (Mac側ショートカットをスペース切り替えにしておく)</li>
  <li>右: スクロール</li>
</ul>

<p>これは自分の使い方的にアプリケーションウィンドウをよく使うのと、全画面で開くZoomなりなんなりをスペース切り替えしたくなりそうでそのあたり入れてみました</p>

<p>が、感度最大にしても反応が悪いときが多くてつらくて使えてない…</p>

<p>ポインティングスティックは調整中だけどspeed2と3の間くらいにしてます。細かいところ動かしづらくなるもののぎりぎり許容できるくらいかなと</p>

<p>KarabinerでEmacs key bind入れてるんですが、一部うまく動かなくなっていてSetting &gt; DevicesのModify EventをONにしました。ただこれの弊害なのかわからないけどペーストするときの挙動がちょっとおかしくて2重にペーストされるときあるようで、なんらか環境の改善が必要そう</p>

<h1 id="感想">感想</h1>

<p>キータッチについては評判が良かったので現物触らずエイヤで買ってみて、打ち心地はかなり良かったです。キーストロークが浅いのがはじめだけ気になったけどすぐ慣れたし、音も静かでいい感じの音ですね(個人の見解)</p>

<p>ポインティングスティックはまだ慣れなくて、修行と思って使ってます。あとスティックとクリックを右手で同時に触ってると、これまで使ったことない筋肉使うのか手が疲れてくるので、クリック系左手にしようかと考えているものの、クリックしたつもりが⌘キー打ってたりするのでまだ慣れが必要ですね</p>

<p>見た目はこんな感じになっています。トラックパッドはまだしまえていないけどつい使ってしまうので少し離して置いてあるのがミソ(?)です</p>

<p><img src="https://github.com/taross-f/taross-f.github.io/blob/master/images/IMG_3745.jpg?raw=true" alt="見た目" /></p>

<p><a href="https://amzn.to/49jamCj">PFU キーボード HHKB Studio 日本語配列 (ポインティングスティック メカニカルキーボード)</a></p>

<p><a href="https://amzn.to/3SoG4qT">Crean リストレスト パームレスト 木製 クルミ材 キーボード用 腕置き 滑り止め付き おしゃれ (S 60鍵まで対応)</a></p>]]></content><author><name></name></author><category term="Life" /><category term="Environment" /><category term="HHKB" /><summary type="html"><![CDATA[先週の入荷以降だいぶ安定して買えるようになったHHKB Studio、自分も買ってみたのでさんざんこすられてますが、3日ほど使った感想を書いてみます。JIS配列]]></summary></entry><entry><title type="html">2023年振り返り</title><link href="https://blog.taross-f.dev/review2023/" rel="alternate" type="text/html" title="2023年振り返り" /><published>2023-12-31T00:00:00+00:00</published><updated>2023-12-31T00:00:00+00:00</updated><id>https://blog.taross-f.dev/review2023</id><content type="html" xml:base="https://blog.taross-f.dev/review2023/"><![CDATA[<p>2023年の振り返りをしようと思います</p>

<h1 id="仕事">仕事</h1>

<p>2023年は、特に技術分野において大きな変化があった年でしたね。OpenAIやLLM周辺の動向を追いつつ、ユースケースを適切に選択してプロダクトへの実装も進めてきました(おもにチームメンバーが)。3月時点でAzureOpenAIをプロダクトに実装していたので、相当早かったはず</p>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">プロダクトへは弊チームのハイパー優秀なTechLeadが爆速実装してくれてました! 顧客にも早速使われ始めてて流れに乗れてる感ある😎 <a href="https://t.co/I1UoEYqMgb">https://t.co/I1UoEYqMgb</a></p>&mdash; 古屋 太郎 (@taross__f) <a href="https://twitter.com/taross__f/status/1636233333708566529?ref_src=twsrc%5Etfw">March 16, 2023</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>このタイミングでAIを事業の柱にしている弊社にいられたのは幸運だなあと思いました。またLLM絡みで登壇機会も複数いただけました。他のコミュニティで話した人でもあのときの講演見てましたよ、みたいなことを言われることもあったり</p>

<p><a href="https://blog.taross-f.dev/microsoft_build_japan/">Microsoft Build Japan2023に登壇した</a></p>

<p><a href="https://blog.taross-f.dev/saasonaws2023/">SaaS on AWS 2023に登壇した</a></p>

<p>後半はこれまで所属していたチームを異動し、別の子会社のPKSHA Communicationに出向して歴史の長いプロダクトとリリース直後のプロダクトそれぞれでEM的な業務をやっています</p>

<p>なかな大きなチャレンジで、全員初対面でバリューストリームも全然違う組織において課題を解決していかなければならず、まずじっくり観察するところから入って少し自分がいる意味が出てきたような状態ですね。ただこれは本当に難しくてこのロールで成果を出すってなんだっけ…という状態を週に何回か思い返して悩む状態を続けています。これまでのプロダクト開発SWEの延長上にあるマネジメントと異なる現状なので、アンラーンが必要で2024年もここできちんと成果なり自分の中で手応えが感じられるようにすることが個人の目標になるでしょう</p>

<p>これまでと視点を変えないといけない打席をもらえてると感じているので、ここは結果につなげていきたいですね</p>

<p>副業は去年一つ手伝いはじめたところ、うまくワークできずストップしてしまったりしました。すこしアドバイス的なこともしましたが、やはりスクラムチーム入らずにやっていくのは厳しいですね。ご迷惑をおかけしました…</p>

<p>また前職もほとんど何もやってない状態で契約だけずっとあったのでちゃんと契約終了として、今抱えている副業はゼロになり、手は空いています! ただ個人でいろいろやりたいこともあるので、あまり積極的に副業はやらないようにしていくつもりです</p>

<h1 id="生活">生活</h1>

<p>一番大きなできごとは妻の仕事復帰でした。上の子は幼稚園通っていましたが保育園に転園し、妻のシフトに合わせて日に応じて送り迎えをするスタイルになりました</p>

<p>幸運なことに子供二人とも徒歩5分の保育園に入園できてよかったです。そこがだめだったらチャリで15分みたいな園になってたので生活もだいぶ違ったはず</p>

<p>妻も5年ぶりの仕事復帰でいろいろ大変だと思いますがなんとかやれているようです。会社としても基本リモート+裁量労働+休み多めなので調整しやすくて助かっています。子供たちも保育園の洗礼(?)なのか半年くらいはやたら体調崩してましたが、だいぶ安定してきました</p>

<p>子供連れてフェスにも行けたし、旅行も気軽に行けるようになったしいろいろ楽しめるようになってきた感あります</p>

<p>趣味としては年初にコロナになったきっかけでUndertaleにハマったりしたおかげか、Undertale関連の音楽をよく聞いていたし、ピアノをちゃんと練習したくなって来ました。あとはティアキンやったり</p>

<h1 id="来年に向けて">来年に向けて</h1>

<p>仕事も個人の業務としては今年の大きな変化を受けてきちんと成果につなげていきたいですね。あとはいろいろな場所にも顔を出して、とくにコミュニティ活動みたいなの苦手なので、技術広報だったりコミュニケーションだったりするためにもアウトプットを重要と捉える1年にしていきたいと思いました</p>]]></content><author><name></name></author><category term="Life" /><category term="Poem" /><summary type="html"><![CDATA[2023年の振り返りをしようと思います]]></summary></entry><entry><title type="html">SaaS on AWS 2023に登壇した</title><link href="https://blog.taross-f.dev/saasonaws2023/" rel="alternate" type="text/html" title="SaaS on AWS 2023に登壇した" /><published>2023-11-04T00:00:00+00:00</published><updated>2023-11-04T00:00:00+00:00</updated><id>https://blog.taross-f.dev/saasonaws2023</id><content type="html" xml:base="https://blog.taross-f.dev/saasonaws2023/"><![CDATA[<p>先日AWSの方から会社にお声がけを頂き、<a href="https://aws.amazon.com/jp/blogs/news/saas-on-aws-2023-10-10-11/">SaaS on AWS 2023</a> というイベントに2023/10/11に登壇させていただきました</p>

<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/95e364afca0c461baedf2cefa79a6266" title="SaaSにおける生成AI の実装とその未来" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>

<p>社内のEmbeddingやRAG実装の事例を紹介しつつ、実は事例ごとに結構気にするところ違うんですよね、という話をしました。冒頭に生成AIの実プロダクトへの実装やられている方挙手してもらったら数人しかいなくて、弊社にいると当たり前のように実装事例あるんですがまだまだこれからやっていくところが多いんだなと改めて感じました。また今回は社内の事例を集めたので当事者でない情報も多かったですが、お客様含め協力的でとても助かりました。ありがとうございました</p>

<p>Ask the speakerではほとんど質問者は現れなかったのが少し悲しかったですが、AWSの方とガッツリ話せたので良しとします。あとは懇親会で出たビールがCOEDOビールメインで、ロジやられた方にとても親近感を覚えました</p>

<p>弊社は引き続きRAGだったりLLM関連技術を踏まえて社会実装しているのでご興味ある方はぜひ<a href="https://twitter.com/taross__f">DM</a>でご連絡ください。採用ページリンクは<a href="https://www.pkshatech.com/recruitment/">こちら</a></p>]]></content><author><name></name></author><category term="Meetup" /><summary type="html"><![CDATA[先日AWSの方から会社にお声がけを頂き、SaaS on AWS 2023 というイベントに2023/10/11に登壇させていただきました]]></summary></entry><entry><title type="html">Microsoft Build Japan2023に登壇した</title><link href="https://blog.taross-f.dev/microsoft_build_japan/" rel="alternate" type="text/html" title="Microsoft Build Japan2023に登壇した" /><published>2023-07-24T00:00:00+00:00</published><updated>2023-07-24T00:00:00+00:00</updated><id>https://blog.taross-f.dev/microsoft_build_japan</id><content type="html" xml:base="https://blog.taross-f.dev/microsoft_build_japan/"><![CDATA[<p><img src="https://raw.githubusercontent.com/taross-f/taross-f.github.io/master/images/_DRC5231.jpg" width="400" /></p>

<p>少し前ですが所属するチームでMicrosoft Teams上でのアプリケーションを開発していることもあってMicrosoftの方からお声がけを頂き、2023年6月27日Microsoft Build Japanで登壇しました。上記はめちゃくちゃそれっぽく撮影いただいた写真です。タイトルは、”Azure OpenAI Serviceを活用した AI SaaSプロダクト開発の実践”でした。プレゼンテーションの内容については、以下のリンクからご覧いただけます。</p>

<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/c054d6e9d5dc4b619b538607c091e7c3" title="Azure OpenAI Serviceを活用した AI SaaSプロダクト開発の実践" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>

<p>私の所属するチームでは、Azure OpenAI ServiceをAI SaaSプロダクトに組み込んでいます。登壇では、そのLLMのプロダクトへの実装に当たって考慮すべきポイントや注意すべき点について話しました。アンケートの内容も悪くなかったようですし、反響もすこしはいただけたのでよかったかなと思います</p>

<p>なお、久しぶりのリアル登壇であり、ピンマイクをつけての発表は初めての経験でした。その新鮮さと直前の機材トラブルからか逆に緊張がほぐれてたすかりました</p>

<p>現在私たちはLLM含めざまざまなアルゴリズムを組み込むプロダクト開発を進めています。この分野に興味がある方は、下記リンクから詳細をご覧いただけます。カジュアル面談もできますのでぜひご連絡ください</p>

<p><a href="https://aisaas.pkshatech.com/aihelpdesk/">AI Helpdesk LP</a>
<a href="https://www.pkshatech.com/recruitment/">リクルーティング情報</a></p>]]></content><author><name></name></author><category term="Meetup" /><summary type="html"><![CDATA[]]></summary></entry></feed>