Apple Watch Hermès Faubourg Party クリスマスバージョン

Hermès 版の Apple Watch にはこの秋に追加された文字盤 Faubourg Party があるのだが、不意に見慣れない文字盤が表示され、クリスマス・イブであることを思い出した。

Apple Watch の画面録画はアクセシビリティ機能のひとつ「Apple Watchミラーリング」で可能。

スヌーピーにもクリスマス限定の文字盤が表示される。


Hermès Faubourg Party は、誕生日も祝ってくれた。

粋な遊び心がアップルらしい、こうした限定文字盤は登場が不意すぎて見逃してしまいそうになるし、気付けたとしても二度目は中々お目にかかれない。ただし次の法則がありそうで、繰り返し表示を再現することが可能。

  • 対象日の文字盤初表示時に現れる
    • ただし、天気などに応じた文字盤が優先されることもある
    • その時は、一度画面をオフにして(待つか、手で覆う)、画面を再点灯すれば良い
  • 文字盤を2、3度別のものに切り替えることで、対象文字盤の状態がリセットされる
    • 一度表示し終えても、2、3隣の文字盤に切り替えて、再び戻すと、上述の条件に従って再出現させることが可能

Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Geometric 編)

続き:
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(2D/3D Procedural/Texture 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Adjustment 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Application 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Compositing 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Data 編)

Geometric Shader Graph group は、説明文をそのままに理解すると、GPU がグラフを適用する際に現在処理しているデータ値を取得するノード。座標や法線ベクトル、接線などが取得可能。Reflect や Refract ノードは、現在の値を元にベクトルを修正することもできる、とのこと。

つまり、モデル表面の各点ごとに取得した幾何属性から、何を描画するのか(色など)を決定できそう。


  • Normal:法線ベクトル
  • Tangent:接線ベクトル
  • Bitangent:Normal × Tangent (Normal, Tangent それぞれに直行するベクトル)

Bitangent のイメージが掴めずに調べてみると、法線はモデル表面に対して一意に決まることが分かりやすいが、Tangent は UV の U 方向、Bitangent は UV の V 方向らしい。(バイタンジェント、かと思ったら ビタンジェント と読むっぽい)

Normal、Tangent、Bitangent から得られるTBN行列を用いて、ノーマルマップをワールド空間に変換する、らしい。

UV座標系 | CG・映像の専門情報サイト | CGWORLD.jp
📐TBN行列の作り方|タンジェント空間と法線マップをGLSLで理解する|批評テレビ/文学フリマ東京42出展

そして、そのままだと平すぎるポリゴンに、詳細なでこぼこ(凹凸や傷など)を与えるのがノーマルマップ、ノーマルマップはあくまで接線空間のローカル座標なので、これをワールド座標に変換するために使うと。なんとなくイメージできた。

で、Texture Coordinates は、テクスチャのUV座標をそのまま返す。モデル表面の各点が、テクスチャ画像のどの座標に対応するかを知るためのノード。


Geometry Color は、モデルのジオメトリに埋め込まれた頂点カラーを取得するもの(マテリアル色ではない)。

Geometry Property は、ジオメトリに定義されたカスタム属性を読み取るもの。
Data グループにあった Primvar Reader に似ている気がした。

ChatGPT によると、

結論から言うと、この 2 つは 「同じものを見ているが、立ち位置と責務が違う」 です。

Primvar Reader は「primvar を読むための専用ノード」
Geometric Property は「ジオメトリ属性を“汎用的に”引くためのノード」

両方とも「ジオメトリにぶら下がったデータ」を読む点は同じですが、用途・安全性・設計思想が違います。

Primvar Reader は、読む対象が明確に USD の primvar に限定されるのに対して、Geometry Property はこれに Geomprop や Custom property を含むカスタム属性全般を読み取れる、という違いがあるらしい。


Reflect, Refract (RealityKit) は、処理中の天の法線ベクトルに対して、物理的法則に基づいた変換を加えるもの。

  • Reflect:反射方向を算出。鏡や金属、水面の表現に使用
  • Refract:屈折方向を算出。Eta が屈折率 (屈折率の比)。ガラスや水面など透明な物質の表現に使用

屈折と聞いて、ばんじゅん🍓さんのこのプレゼンを思い出した。Refract はここでは使っていなさそう?ちゃんと見てみる。

ジャズ練習にSTUSTAが良かった話

大坂さんの YouTube で知った STUSTA に有料課金して、日々の練習に活用している。

STUSTA | いつでもどこでも上質なアンサンブル体験を

マイナスワンで練習ができるアプリには、ジャズ界隈では知らない人はいない iReal Pro なるものがある。

iReal Pro – Practice Made Perfect

iReal Pro の演奏音源は MIDI 音源ながらバッキングがとても巧妙に作られていてクオリティが高い。ドラムに関しては自分が下手に叩くよりも iReal 流しておいた方が良いのではと思うほど。また選曲が豊富なので、分厚い黒本を持ち歩かなくてもだいたいは対応できる。しかしその作り上、コーラスをただ繰り返すだけなので、ドラマーとしてはトレーディングやフルコーラスソロの練習ができないのが欠点だった。

いっぽうこの STUSTA は 100曲以上もの収録曲すべて(Pf, Bs, Dr)が、日本のプロミュージシャンたちによる生演奏(サイトに曲ごと演奏者名簿あり)。プロとセッションしているような贅沢な感覚が味わえるし、加えて実際のセッションと同じようにトレーディングが挿入されていて、曲によってはフルコーラスの構成も用意されているので、とても良い練習になる。

収録曲 100 曲を使うには、投稿時点(2025/12)で月額300円の課金が必要。これだけ上質な音源を聴き放題、練習し放題なのだからその価値は十分に感じている。

今年最後のレッスンで先生に、最近 STUSTA で練習していることを話したら、じゃあ今からやってみて?とまさかの展開。結果、致命的な課題が炙り出されて、手のつけどころがないという感じになってしまったが、、泣 おかげで、なんで自分の演奏ってなんか「違う」んだろう?の謎を解く鍵が得られた。

これまでトランスクライブベースの練習が中心だったところに、生さながらのセッション環境をその場で作り出せることでレッスンにバリエーションが生まれ、その価値の高さを再認識した。セッションの録音を先生に送りつけるのは相当気が引けて(送ってくれと言われたと思うが)できずにいたが、目の前で演奏し包み隠さず現状をお見せすることで、より地に足のついたアドバイスをいただけそうだと思っている。


ちなみに、STUSTA だと演奏レベルが高すぎるゆえに、逆に巷のセッションならではの雰囲気やテンポ感とはどうしても乖離していると感じる。YouTube にはより親しみやすく素晴らしいマイナスワンのチャンネルがあり、トレーディング用の音源も充実しているので、これを使ったりもしている。

Analyzing the runtime performance of your Foundation Models app を読んだ

Foundation Models に関する新たなドキュメントが公開されたので読んだ。

Analyzing the runtime performance of your Foundation Models app | Apple Developer Documentation

Instruments によるパフォーマンス分析によって、Foundation Models を活用したアプリのレスポンシブさや、消費電力への影響について知る手がかりを得る手法の紹介。Instruments を用いて、どこに時間がかかり、トークンを消費しているかを正確に把握し、パフォーマンス改善のボトルネックを特定できる

  • システムがいつモデルアセットを読み込んでいるか
  • モデルからレスポンスを受け取り始めるまでどれだけの時間がかかっているか
  • 個々のセッションにおけるトークンの使用状況
  • アプリの提供するカスタムツールをどこで呼び出しているか

Instruments のスクリーンショット付きで、プロファイリングの操作方法が説明されている。


トークン使用について

  • モデルはプロンプトの入力テキスト文を、トークンと呼ばれる小さなセグメントに分割する(それぞれが単語や、単語の一部)
  • トークン数は、インストラクションやプロンプト、セッションインスタンスによるアウトプットを含む
  • コンテクストウィンドウを超過した場合、exceededContextWindowSize(_:) エラーが投げられる
  • アウトプットトークンが多いほど、生成時間がかかる
  • タスク種別によっても生成時間が変動する
    • 文書要約は新しい記事の生成よりも短く済む
  • テキストに文字を含むことでより多くのトークンに分割される(e.g. 電話番号)
  • トークン数に伴って、初期処理の時間や、メモリ使用量が増大する
    • 1000トークンを超えると、古いデバイスでは顕著に生成速度が低下する
    • Foundation Models instrument で トークン数を比較する

改善手法

  • モデルローディングを事前ロードする
    • モデル呼び出しの必要性がわかり次第 prewarm(promptPrefix:) を呼び出してモデルを事前ロードする(response メソッドの呼び出し1秒前には)
    • ユーザーがリクエストしそうなことを prompt prefix で与えることで、類似のリクエストにモデルが備えられるようになり、最初のトークンまでの時間を短縮できる
  • トークン消費を抑える
    • streamResponse(generating:includeSchemaInPrompt:options:prompt:)includeSchemaInPrompt パラメタで Generable の情報をリクエスト処理前にプロンプトに含めるかを指定可能
      • 含めることでアウトプット品質を高められるが、より多くのトークンが必要になる
      • すでに同様のリクエストを行ったか、system instructions で例を提供している場合は、後続のリクエストで除外できる
      • ネストされた Generable 型も多くのコンテクストを要するので、必要性を判断するべき
  • 最適化を検証する
    • 変更後は毎度アプリのプロファイリングを実施し、効果を検証する
      • アセット読み込みがリクエスト生成の前に行われていること
      • 最初のトークンがセッション開始直後に出現していること
      • Inference detail エリアが少ないトークン数を示していること
      • セッション全体やツールコーリングのレスポンス時間がユーザー体験を満たしていること

登壇メモ:DroidKaigi.collect { #29@Tokyo }

DroidKaigi 主催の勉強会が勤務先の会場提供で開催されるということでで、LTで登壇してきた。今年4度目の登壇は Android 開発について。

イベントページ:https://droidkaigi.connpass.com/event/375731/

社内情報を含むため資料は公開できないが、話した内容をざっくり。

タイトルは「AI時代にiOSエンジニアがAndroidに手を広げて得た気づき」。筆者は今年5、6月から Android 開発も兼務しており、今ちょうど半年を経たところなのだが、

  • 短期間でどのようにキャッチアップし、実務に対応してきたか
  • その中でどのように AI を活用してきたか
  • AI がコーディングする時代にエンジニアが学習する意味とは

の3本柱で5分間話した。

  • 短期間でどのようにキャッチアップし、実務に対応してきたか
    • Google 提供の学習教材を飛ばしながら通した
    • とはいえ膨大な情報を含むので1回通すだけでは吸収不可能
    • 実務の中で、ChatGPT と対話しながら AI とのペア学習を行った
      • e.g. Swift 言語でのこの書き方は、Kotlin ではどう書く?
      • e.g. Apple フレームワーク、SwiftUI におけるこの概念は、Android / Jetpack Compose ではどれに対応する?
      • e.g. レイアウト上でこうした問題があるが、どう解決したら良い?
    • Swift-Kotlin, SwiftUI-Jetpack Compose の技術的類似性あり。既存の知識をフックに AI から答えを引き出せるので学習コストは低い
  • とはいえ、コードレビューでは指摘の嵐
    • Swift / iOS 的慣習で実装してしまうと、Android 側の慣習に準わない
    • 既存実装を参考に実装したところ、チーム内では obsoleted な書き方だった
    • などなど。これまでベテランメンバーだけのチーム体制だと暗黙知になっているナレッジも炙り出された
    • そこで、GitHub API からレビューを吸い出し、AI にガイドラインを作ってもらった
      • 新メンバーへのセルフチェックリストにもなるし、Copilot Review など AI に与えることで AI によるレビュー精度も高められそう
  • AI がコーディングする時代にエンジニアが学習する意味とは
    • DroidKaigi をはじめとする技術コミュニティに、実装コードが実務レベルで読めて理解できる状態で参加することの意義(知識の吸収、コミュニティへの参加)
    • AI powered で iOS/Android 両プラットフォームにエンジニアひとりが携わる時代が来る可能性大

他のLTも、どれも興味深い内容だった。

  • スマホ電子工作を、Xamarin のサポート終了に伴って .NET MAUI を活用して実装
  • DTC (Direct to Cell) 対応とモニタリングの結果
  • Android オーディオプラグインの開発に伴う業界での活動シェア
ICHI さんによるスマホ電子工作の実演

年内 Android をテーマに1度は登壇したいと思っており、ひょんなことからかなったわけだが、うすーい内容の発表にとどまった。来年2026年は技術的に踏み込んだ知見を共有できるよう研鑽したい。

KOKOGOL Maclock が届いた

インスタか何かで見つけて、11月初旬(1ヶ月以上前)に注文した KOKOGOL の Maclock。初代 Macintosh を模した LED 時計なのだが、そのプロモーションビデオを見るとなかなか作り込みが細かく、熱いファン精神を感じ取ったので迷わず購入したのだった。

Maclock – Retro 1984 Mac Pixel Art Clock | Nostalgic Desktop Decor – KOKOGOL

それが、注文から2、3週間経ち忘れた頃に発送され、そこからさらに3週間以上かけて、先日ようやく自宅に到着した。で、届いた外箱がこれ。

ボコボコ過ぎるし手に取ると軽すぎるしで、瞬時にパチモン摑まされたかと焦ったが、開封してみるときちんと期待通りのものが入っていた。作りとしては安価な LED 時計で、中学校の技術の授業で半田付けの練習に作ったアレと機能的にはほぼ同じなので、その軽さは納得。プラスチックの手触りや、平面に置いた時のゴム足の質感が結構良い。

デコれるステッカー付き。6色アップルロゴをはじめ、Happy Mac、台紙を飾る Susan Kare デザインのアイコン、Chicago フォント(セリフ体は Apple Garamond だろうか、、?)と、目に映るすべてが全方位にアウトでしかないのだが、さすが Made in P.R.C.。その文字が一周回って誇らく映る。


自宅の Macintosh SE とツーショット。これを買う最大のきっかけは、顎下に突き出ている輝度調整用のダイアルが、Maclock でも同じ仕様で動くことだった。このギミックは、往年のアップルファンでないと思い至れないのではないだろうか?しかも、このダイアルは日付時刻合わせにも使えるので機能性としてもとてもスマート。

ちなみに、バックライトのON/OFFは、頭頂部の取手がタッチパネルになっていて、タップしてトグル切り替えすることができる。電源はバッテリー内蔵で、USB-C ポート経由で充電すればワイヤレスに使用可能。

意匠がアウトであることは疑いの余地もないが、そこに目を瞑ればオブジェとしての質感は申し分ない。また写真の画面には Happy Mac しか写せてないが、商品ページや SNS を調べればわかる通り、普通に LED バックライト付き時計やアラームとしても機能するので実用性も十分ある。

ご注意:
しばらく使ってみて、この Maclock 徐々に時刻がずれていくという発見があった(ビミョーに進みが遅いので、半月で数分ずれる)。なので時計としての信頼性が高くないことにご注意。最近やたらこの記事へのアクセスが高いので補足した。

Bambu Lab A1 mini を使ってみた

前回の続き。

箱から出してやることは、ハードウェアの組み立てと、ソフトウェアのセットアップ。使い始めるまでに40-50分程度見積もっておくと良さそう。

組み立ては説明書通り、付属のレンチでネジを締めたりパーツを取り付けたりするのだが、取り付けには若干難儀するので覚悟が必要。特に「ワイパー取り付け」ステップ②の、下からのネジ留めは難易度が高い。あらかじめ作業場をテーブルなど一定の高さに確保しておき、下からワイパーを覗き込めるよう位置をずらすなどした方が良い。あとはネジ締めの固さが不安になるが、ひと思いに締め込めばOK。

電源投入後のセットアップも直感的。言語に日本語が選択可能。パスワード入力はキーボードが小さいので誤入力は避けられない(キーの気持ち上を狙うと良い)。

キャリブレーションは放っておくとどんどん進行する。ノズルが周波数を変えながら振動するのを眺めていると、いかにも精密機械という感じでお得感が味わえる。

セットアップ完了後に OTA のソフトウェアアップデートを提案されたので試みたが、失敗した。QR 先のドキュメント通り、再起動(電源を物理的に落として再起動)後、再びアップデートを試みたら無事成功した。

3D モデルははじめからバンドルされているのですぐにプリントを試すことができるのが嬉しい(初期状態で SD カードスロットにカードが挿入されている)。それぞれに所要時間も示してくれている。短いものは10数分、長いものは10時間ほど要するようだ。SD カード容量は筆者の場合 1.6 / 29.1 GB だったので、初めから買う必要はなさそう(リーダーは必要?MakerWorld から直接転送できたら良いのだけど)。

所要時間の一番短い船を作ってみた。

完成。

ひっぱって飛ばせる懐かしのプロペラおもちゃも作った。


いくつか気がついたこと。

  • 起動時やプリント開始時のサウンドがデカくてビビる。設定の「Print Options」>「Sounds」をオフにすれば、起動時のウェイクサウンドも消える
  • 駆動音について:
    • プリント時は結構静音で、同居人がいても別室であれば夜に就寝を乱す心配はないと思われる(が、ある程度は鳴るので上のビデオを参考)
    • しかし初期セットアップののキャリブレーションでは、様々な周波数でノズルを振動させながら計測をするパートがあり、床に振動を感じることもある。集合住宅などは深夜は避けたほうが良いかも
  • 置き場について:
    • 当然滅多揺れないところに置いた方が良いと思われる
    • スペック上は、筐体自体の設置面積は正方形に近く、奥行きもコンパクトと感じがちだが、フィラメントのリールを背面に取り付ける都合上、プリンタの後方には一定の空間が必要なので注意が必要(純正品のリール直径は20cm。筆者の場合、筐体うしろから壁まで17cmで問題なし)

Bambu Lab A1 mini が届いた

ブラックフライデーセールで随分安く購入した3Dプリンタ Bambu Lab A1 mini が届いたので開封した(先週のできごと)。友人に強く勧められたのがきっかけで、それまでも何度か気にはなりつつ実用イメージが沸かずに購入には踏み切らなかった。が、ちょうどセールでフィラメント込みで(当時)3万以下で買えるなら、と勢いで注文した。

(写真ではわかりづらいが)コンパクトだし、スタイリッシュなので予想以上に生活空間に馴染める。

電源プラグが罠で、3極仕様になっており、そのままではコンセントに差さらないため、注意が必要。

Amazon でアダプタを調べると、「よく一緒に購入されている商品」に Bambu Lab が提示されたので、Bambu 勢あるあるなのかも。

何かと時間が取れずでいまだに稼働できていないが、最初に何をプリントしようか MakerWorld でぽちぽちブックマークする日々を過ごしている。

MakerWorld: Download Free 3D Models

他に、ドアノブや扇風機のスイッチなど、身近なものに潜む構造を 3D プリントで再現している YouTube チャンネルが面白い。

もえ屋 – YouTube


早くも先日のカンファレンスでは 3D プリンタの話をたくさんできたし、そうした会話を通じ、3D プリンタが身近になることで、物理的なもの=買う という従来的な思考から、ないものは作る、というパラダイムシフトが起きそうな予感がしている。


ブラックフライデーが終わったと思ったら、年末年始セールでまたお安くなっているのでチャンス。(むしろセール価格がデフォ?)

年末年始セール | Bambu Lab ストア

ブログにダークテーマを導入してみた:WP Dark Mode

夜にこのブログを開くと、背景白ベースで眩しくどうにかしたいとダークテーマの導入を検討していた。今使っている Twenty Sixteen はダークテーマに対応していない。が、気に入っていて変えたくはない、、

調べてみると、ダークテーマ非対応でもプラグインで導入できるっぽい。いくつかある中でダントツでスター数の多かった WP Dark Mode をインストールしてみた。

WP Dark Mode – Improve Accessibility with AI Powered Dark Theme – WordPress プラグイン | WordPress.org 日本語

有料オプションもあるが、最低限は無料版でまったく十分そう。いくつか配色プリセットが用意されているが、個人的には Automatic Color で自動選択されたものがもっともしっくりきた。


URL埋め込みのプレビュー(ブログカード)がライトのままでボックス背景が白かったり、Highlighting Code Block で表示したソースコードがエンボスっぽくなったりして、微妙に調整したい箇所あるが、このままでも全然満足。

聴講メモ:YapTech Playground #3 PdM編

Yappli さん本社に遊びに行きたい!という一心で PdM という畑違いの勉強会に参加してきた。

イベントページ:https://yappli.connpass.com/event/373235/

畑違いとはいえ、いちサービス開発に関わる身としては頭にいれておくべき内容で良かった。特に、AI 活用してリーンに MVP 開発するというプロトタイプ思考は、Vibe Coding 時代だからこそあらためて実践したいと思った。

素敵すぎるボトル。

元起業家PdM、AIで”爆速MVP検証”を実現した話

リャオス さん

  • クロスセル、価値拡大は 0→1
    • エンジニアリソースを使って検証する余力なく、一発で当てたいが、検証なしで始めるリスクは大きい
    • 小さく始めてしまう
  • 1週間でMVPプロトタイプ
    • 競合調査:DeepResearch
    • (MAツールの)代表的な機能リストを作成:Cursor
      • 機能イメージができてくる
    • プロトタイプ構築:v0
    • MVP検証
    • ユースケース検証
  • 0→1の壁が消えた
    • リーン:顧客に聞け、正解は顧客が知っている(マーケットイン)
    • 0 to 1:顧客に聞くな、競合せず独占しろ(プロダクトアウト)
    • AI エンジニアを使って、エンジニアが作ったのと同等の精度で検証可能
  • 顧客の優しい嘘
    • アイデアに対して「ぜひ欲しい!」と、使う立場としてのニーズは違う
    • MVP いきなり作って渡すことができる
    • 顧客ヒアリングの時間が取れない問題
    • 「リアルな拒絶」を早めに引き出す
  • 開発フローの再定義
    • リーンスタートアップにおけるBMLループのどれもはしょれず、ただ爆速になっただけ
    • 「学習」もサボれない:なおいっそう頑張るポイント

Yappli流!「プロダクト改善」の進化といま

仲道 さん

  • プロダクト改善の推進
    • 要望、アイデア、技術負債の解消
  • 改善がなかなか進まない
    • チケットが減らず増える
    • 工程が進まないチケット
    • プラットフォームごとのリリースがばらける
    • 問い合わせに追いつかない
  • チケットが進まない原因:量、優先度、担当者不在、何度、リソース不足
    • 改善要望がリリースよりも多くなりやすく、避けにくい。この溝が深くなると、
    • 改善されていないことでチャーンする
    • 多部署からの信頼低下
    • 開発チームのモチベ低下
  • 解決方法
    • チケット残数の把握、認識を揃える、担当者を把握するなど、PdMがチケット診断者になる
    • チケット状況を把握する
      • PdM内で対話型の確認会(一人では無理)、判断軸をログとして記録して残す
    • やらないものを決める
      • 一定期間経っている、要望の熱が冷めている(要望が出続けているものはニーズ高いと判断)
      • 呼応数見積により区分分け、大規模開発は「改善」から移動。アサイン待ちになってしまうため
  • ブラックボックス化していたチケットボードをPdMがハブになり要望の集約、状況確認、共有
    • 優先順位、増減傾向が明確
    • やるべき のみがあるチケットボードの健全化
    • 他部署連携がスムーズになり、調整コストを減らせた
  • フロー整備だけでなく、社内周知でメンバーへの浸透も