2025年を振り返る

大晦日なので振り返ってみる。

あらためて2025年始にたてた目標を思い返すと、こんな感じで2025年を締め括った。

  • 2024年の転職を機に始めた勉強会参加継続(月5回ペース)
    • 👍できた
  • これまでしてこなかった勉強会への登壇(理想は年5本)
    • 👍4回登壇、1本プロポーザル補欠採用
  • アプリリリース(理想は3つ)
    • 😭せず
  • ビッグバンドへの参加
    • 👍できた
  • 楽器毎日練習、毎週どこかしらでセッション参加
    • 😐後半は練習もセッションもサボりがち

2024年10月に現職転職するまでは、開発コミュニティに顔出すことはほぼなく、登壇なんて恐ろしくてできない、と思っていたところから、try! Swift スタッフ参加をきっかけに人とのつながりが増えて、今年後半から登壇にもチャレンジできた。

新技術である Foundation Models や visionOS を使った個人開発がはかどったのが良かった。登壇駆動開発とはよく言うが、まずは登壇にエントリーしてしまって、そこに向けて平日夜や休日も返上で学習や開発にいそしむのは案外苦ではなかった。また WWDC 後は Apple が自社主催でワークショップを開催したことも、学びに弾みがついてありがたかった。

こうした技術キャッチアップが手元のプロトタイプに閉じてしまったのは、登壇ありきだとまずはプレゼンとして形にすることが、プロダクトとしてリリースすることよりも優先度高くなったためで、実際にリリースは二の次に考えていた。が、visionOS TC での主催服部さんの言葉が、アイデアをかたちにしてデリバリすることにも意義があると捉えなおすきっかけになった。来年こそは作りっぱなしでなく他者に体験してもらえるかたちに落とし込むまでもっていきたい。

他にも、今年は仕事では Android 開発にも手を広げられたのが良かった。あと想定していなかったが、ブログ更新が習慣化して年間150本に迫る勢いで投稿できた点も自分を褒めたい。


音楽趣味は、昨年足繁く通っていた高田馬場イントロも体調不良をきっかけに足が遠のいてしまった。が、その分ビッグバンドに加入してしたり、よそのセッションには通い続けていたので、演奏機会自体は逆に増えていたかも。

さらに、ビッグバンドでは秋頃にはお褒めいただくことが増えたり、チャージありのステージで演奏する機会をいただいたり、どちらもふんわり目標にしていたことが叶えられたので。客観的にも上達の兆しを感じられた1年だった。


数年前から、こんな感じで年始に目標立てて、年末に振り返る、みたいなことをしているが、中々良い感じに回っている実感もあるので、2026年も何かしら掲げてみたい。ここまでの話とまったく関係ないが、ずっと行ってみたいと夢見ている国に来年こそは海外旅行したいなーと思っている。

ブログを習慣化するコツ

今年2025年は、記事数が150に迫るほどブログ更新できたので、そのコツについて書いてみる。

そもそも、筆者のブログをつける目的は、インプットーアウトプットのサイクルを回すためで、それ以外の承認欲求だとかマネタイズだとかはない。むしろ誰にも読まれずひっそりと書いていたいとすら思う。

誰にも読まれたくないのなら、外部公開しなくてよくない?と思われるかもしれないが、誰かに読まれるからこそ一定の品質と正確性を担保する原動力にもなるし、そのレベルで積み重ねた結果が、個人的な備忘録的価値だけでなく、他者に向けた取り組みの可視化としても、結果的に自分に返ってくると思っている。

昔つけてた Medium の記事 も今見返すと面白いテーマに取り組んでいたと思えたりする。

こうした期待値のうえでブログを継続するには、書き出し時の障壁や心理負荷をいかに軽減できるか、だと思っている。その変数になりうる要素をいくつかピックアップする。

投稿媒体

技術ブログの媒体には、Qiita や Zenn をはじめとした専用のプラットフォームや、技術ブログとして人気の高いはてなブログがある。

こうしたプラットフォームには、すべてでないにしろ新着エントリなどプラットフォーム側の機能で記事をキュレーションすることがあり、筆者はこれが苦手だ。あくまで自分のペースで記事を投稿したり編集したり削除したりしたい。そこで WordPress を使っている。

上述のサービスは書き出しのセットアップが不要で、技術ブログに不可欠なコードブロックもブログエディタに採用しているからとても使い勝手が良い。WordPress にも、デフォルトエディタ Gutenburg にコードブロック機能があったと思うし、プラグインを使えばより高度なカスタマイズが可能なので、今の所困っていない。

Highlighting Code Block の使い方 | LOOS,Inc.

文体

文体には、<ですます、である>といった文末表現や、<私、僕、筆者>に挙げられる主語の選び方が含まれると思うが、地味にこれらも自分にとってしっくりくるものを選ぶと、書き出しがスムーズでよいと思う。

筆者は上述の通り、他者に意識的に何かを伝えるというテイで書いていないので、敬体でなく常体を使っているし、僕、私といった人格をなるべく排除したいから「筆者」という仰々しい主語を選んでいる。

こうした選択は過去いくつもブログを作っては消し、を繰り返す中で収斂していったもので、学生時代につけていたはじめてのブログは全然スタイルが違う。

フォーマット

ある程度固定しておけば、書き出し時に悩まなくてよいのでおすすめ。このブログの場合、勉強会参加時のレポート(聴講メモ)や WWDC のセッション要約はほぼフォーマット固定としてるので、テンプレをコピペ改変して書けるようにしている。

勉強会といえば、参加時にフォーマットに沿ってサマリを書き綴って、帰宅してほぼほぼそのまま投稿できるようにもしているので、さらに手軽。

シリーズ化

フォーマットに似ているが、たとえばある題材を扱う時、シリーズ化して複数回に分けて投稿すると、日々続けるモチベーションにもなって良かった。最近でいえば Shader Graph についてノードごとに調べたりしていた。

インプット計画

WWDC のセッションもそうだが、シリーズ化することで明日の題材が自ずと定まるので習慣化もしやすい。そこでシリーズ化した時点で、何をどのペースでインプットするかをリスト化して書き出しておくことで、次やることに悩まなくなるので、より習慣化しやすくなると思う。

例えば、WWDC の観たいリストをこのように書き出して、毎朝ひとつずつ消化するようにしていた。

おまけ:可視化

心理負荷とは関係しないが、このブログの右ペイン(モバイルだと最下)に、月毎の投稿数やカレンダーが表示されていると思うが、これによって投稿ペースを可視化できてモチベートできる効果があったので、習慣化したい場合はおすすめ。


で、ここまでしてブログへのアウトプットを習慣化してみてどうだったかというと、いくつかメリットがあったのでやって良かったと思う。

  • ブログ投稿を軸にしたインプットーアウトプットが習慣化した
  • 学習の過程やとりくみが可視化されることで自己肯定感が向上した
  • 勉強会などで知り合った方にブログを読んでいただけ、会話のタネになった

特に3つ目は、読んでくださっている方の存在がはげみになるのだと気が付けて良かった。会話の中で、ブログで表にしている技術以外のテーマも認知いただけただけて、書いた甲斐があった。

が、こうしたアウトプット・ドリブンな方法はネガティブな側面もあった。

  • アウトプット偏重になるとインプットに時間が割けなくなる

ブログひとつサクっと書ける方ならよいが、筆者は物書きが苦手で、ひとつひとつにかなり時間を割いている(だからこそ上述のような省力が必要)。投稿数を追うと、自分で手を動かす試行錯誤がおろそかになってしまい、完全に本末転倒だった。

というわけで、個々人にあったちょうどよい投稿ペースも見定めた方が良さそう。筆者の場合は週2-3くらいだろうか。


いまのところプラスが大きいので、来年もほどほどに継続していきたい。

2025年の演奏曲まとめ

去年やったので、今年もまとめてみた。250越え。

去年は毎月2度以上は目指して行っていたイントロだが、今年は夏以降ほぼ行かず、代わりに近所の常連セッション会には通い続けたり、遠方のセッション会に誘われたり、ライブ出演依頼されたりと、あちこちで演奏する機会があったので、今回はそれらも合算した。

ちなみに、ビッグバンドや自バンドのセットリスト確定後の練習は含めていないし、中には繰り返し連続で練習演奏したものもあり、そういった重複は除外しているので、愚直にすべてカウントするともう50くらいは多そう。

曲名横に、歴代の演奏回数もカッコで記載した。

👉クリックして展開
  1. Pent Up House
  2. I Hear A Rhapsody
  3. Voyage
  4. Dolphin Dance
  5. Armando’s Rhumba
  6. All of Me
  7. Beautiful Love
  8. The Chicken
  9. Lady Bird
  10. There Will Never Be Another You
  11. I Remember April
  12. Darn That Dream
  13. Lady Bird (2)
  14. Four
  15. But Not for Me
  16. There Will Never Be Another You (2)
  17. Bye Bye Blackbird
  18. My Shining Hour
  19. Autumn Leaves
  20. Have You Met Miss Jones?
  21. Bud Powell
  22. Alone Together
  23. Bud Powell (2)
  24. Just Friends
  25. But Not for Me (2)
  26. Solar
  27. A Child Is Born
  28. All the Things You Are
  29. Someday My Prince Will Come
  30. Oleo
  31. The Days of Wine and Roses
  32. I Remember You
  33. Stella by Starlight
  34. The Girl from Ipanema
  35. Lullaby of Birdland
  36. All the Things You Are (2)
  37. Estate
  38. On Green Dolphin Street
  39. Nardis
  40. Invitation
  41. I Thought About You
  42. Billie’s Bounce
  43. Dolphin Dance (2)
  44. How High the Moon
  45. St. Thomas
  46. Bud Powell (3)
  47. Out of Nowhere
  48. You’d Be So Nice To Come Home To
  49. It’s Easy to Remember
  50. Tea for Two
  51. Have You Met Miss Jones? (2)
  52. So What
  53. Sandu
  54. Now’s the Time
  55. The Chicken (2)
  56. There Is No Greater Than Love
  57. Donna Lee
  58. I Wish I Knew
  59. Almost Like Being in Love
  60. Joy Spring
  61. Anthropology
  62. The Days of Wine and Roses (2)
  63. Just Friends (2)
  64. Love, Come Back To Me
  65. Here That Rainy Day
  66. Four (2)
  67. It Could Happen to You
  68. Almost Like Being in Love (2)
  69. Billie’s Bounce (2)
  70. Come Rain or Come Shine
  71. Bouncin’ with Bud
  72. Windows
  73. Joy Spring (2)
  74. Yes or No
  75. Bluesette
  76. Some Other Blues
  77. Recorda Me
  78. Windows (2)
  79. Doxy
  80. I’ve Got You Under My Skin
  81. Like Someone in Love
  82. I’ve Got You Under My Skin (2)
  83. Bouncin’ with Bud (2)
  84. There Will Never Be Another You (3)
  85. Sweet Memories(松田聖子)
  86. Along Came Betty
  87. Stablemates
  88. I’ve Got You Under My Skin (3)
  89. On Green Dolphin Street (2)
  90. On Green Dolphin Street (3)
  91. Tea for Two (2)
  92. Another You
  93. Autumn Leaves (2)
  94. Straight, No Chaser
  95. If I Should Lose You
  96. There Will Never Be Another You (4)
  97. I’ve Got You Under My Skin (4)
  98. On Green Dolphin Street (4)
  99. Dream A Little Dream of Me
  100. Blue Bossa
  101. Four (3)
  102. I’ve Got You Under My Skin (5)
  103. Doxy (2)
  104. Just Friends (3)
  105. Bouncin’ with Bud (3)
  106. Black Nile
  107. All the Things You Are (3)
  108. We See
  109. My Favorite Things
  110. It Could Happen to You (2)
  111. The Days of Wine and Roses (3)
  112. Blue Monk
  113. Remember
  114. All the Things You Are (4)
  115. I Hear A Rhapsody (2)
  116. Tangerine
  117. I’ll Close My Eyes
  118. Old Folks
  119. Night in Tunisia
  120. On Green Dolphin Street (5)
  121. Dat Dare
  122. Bye Bye Blackbird (2)
  123. Bouncin’ with Bud (4)
  124. Bolivia
  125. It Could Happen to You (3)
  126. I Love You
  127. The Duke
  128. Take The Coltrane
  129. Fly Me to the Moon
  130. Shiny Stockings
  131. Candy
  132. Wave
  133. Smile
  134. Autumn Leaves (3)
  135. Fly Me to the Moon (2)
  136. Along Came Betty (2)
  137. Candy (2)
  138. Bouncin’ with Bud (5)
  139. Tenor Madness
  140. Autumn Leaves (4)
  141. Indiana
  142. I’ll Be Seeing You
  143. My One And Only Love
  144. Out of Nowhere (2)
  145. All of Me (2)
  146. All the Things You Are (5)
  147. Candy (3)
  148. The Duke (2)
  149. Four (4)
  150. September in the Rain
  151. There Will Never Be Another You (5)
  152. Fly Me to the Moon (3)
  153. All the Things You Are (6)
  154. Just Friends (4)
  155. Cheek to Cheek
  156. Stella by Starlight (2)
  157. Bewitched
  158. Whisper Not
  159. I’ve Got You Under My Skin (6)
  160. Deep Night
  161. I Didn’t Know What Time It Was
  162. No More Blues
  163. Four Brothers
  164. Yardbird Suite
  165. Come Rain or Come Shine (2)
  166. Fly Me to the Moon (4)
  167. I Didn’t Know About You
  168. Mack The Knife
  169. It Could Happen to You (4)
  170. Speak Low
  171. Now’s the Time (2)
  172. Tenor Madness (2)
  173. Fly Me to the Moon (5)
  174. Black Orpheus
  175. Autumn Leaves (5)
  176. Watermelon Man
  177. Tenor Madness (3)
  178. Out of Nowhere (3)
  179. Four Brothers (2)
  180. Body And Soul
  181. No More Blues (2)
  182. Four Brothers (3)
  183. Driftin’
  184. All of Me (3)
  185. My Foolish Heart
  186. Fly Me to the Moon (6)
  187. Autumn Leaves (6)
  188. The Man I Love
  189. You’ve Changed
  190. What A Wonderful World
  191. Lullaby of Birdland (2)
  192. You’d Be Nice To Come Home To
  193. The Look of Love
  194. Day By Day
  195. Tea for Two (3)
  196. Let It Snow
  197. Moon River
  198. When You Wish Upon A Star
  199. Round Midnight
  200. Cry Me A River
  201. Guess Who I Saw Today
  202. Bye Bye Blackbird (3)
  203. Autumn Leaves (7)
  204. Someday My Prince Will Come (2)
  205. Night And Day
  206. Driftin’ (2)
  207. Have You Met Miss Jones? (3)
  208. Billie’s Bounce (3)
  209. In Your Own Sweet Way
  210. I’ve Never Been In Love
  211. Oleo (2)
  212. Confirmation
  213. Midnight Voyage
  214. Very Early
  215. I Mean You
  216. Out of Nowhere (4)
  217. Have Yourself a Merry Little Christmas
  218. Soul Eyes
  219. If I Should Lose You (2)
  220. Tea for Two (4)
  221. Come Rain or Come Shine (3)
  222. Bluesette (2)
  223. Have You A Merry Chirstmas
  224. Sandu (2)
  225. A Foggy Day
  226. There Will Never Be Another You (6)
  227. The Nearest of You
  228. すてきなホリデイ(竹内まりや)
  229. You’re My Every Thing
  230. In Walked Bud
  231. Shiny Stockings (2)
  232. Out of Nowhere (5)
  233. ???
  234. Billie’s Bounce (4)
  235. Confirmation (2)
  236. E.S.P
  237. Tenor Madness (4)
  238. Out of Nowhere (6)
  239. Up Jumped Spring
  240. E.S.P (2)
  241. Milestones
  242. Have Yourself a Merry Little Christmas (2)
  243. Driftin’ (3)
  244. Body And Soul (2)
  245. Four Brothers (4)
  246. This I Dig of You
  247. Georgia on My Mind
  248. Candy (4)
  249. Bye Bye Blackbird (4)
  250. The Night Has A Thousand Nights
  251. The Girl from Ipanema (2)
  252. Autumn Leaves (8)
  253. It Could Happen to You (5)


TOP 5。ド定番すぎて感覚通りだが、1〜3位は色んな意味で全部苦手。

  1. Autumn Leaves
  2. There Will Never Be Another You
  3. Fly Me to the Moon
  4. All the Things You Are
  5. Out of Nowhere

阿部大輔さん津川久里子さんの「セッションの心得」で、日米の定番曲TOP5(ChatGPT調べ)を紹介していたが、確かに、日本の半分以上は当てはまっていた。それ以外も確かに演奏したが、コール頻度は地域性(というかセッション常連客の好み)によって左右されそう。

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

続き:
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 編)
Reality Composer Pro の Share Graph で使えるノードを眺めてみる(Geometric 編)

Math は演算用のノードで、名前を見たら分かるものが多い。その中でも個人的にぱっと見わからないものや興味をそそられたものだけピックアップしてみる。線形代数は概念は知っていても英単語になると分からないことがわかった。

  • Atan2
  • Clamp
    • In が Low-Hight の範囲を超える場合、最小値 or 最大値それぞれの側に値を丸めて、範囲を超えないようにする
    • 概念は Adjustment 編 にも登場した
  • Magnitude
    • ベクトル長さ
  • Dot Product / Cross Product
    • 2ベクトルの内積/外積
  • Transform XXX
    • スペース間の値の射影
  • Transpose
    • 転置行列
  • Determinant
    • 行列式
  • Place 2D
    • UVテクスチャ座標系の変換、テクスチャにアフィン変換掛けたい場合に使うっぽい?(例示あり)
  • Safe Power
    • 普通の Power は X の累乗で結果の符号は乗数が偶数か奇数かによって左右されるが、Safe Power は X の符号が必ず反映される
    • Safepow(X,Y) = sign(x) * pow(abs(x), y)
  • Hyperbolic XXX
    • 双曲線関数
    • Hyperbolic Tan (tanh) は、0を中心としたsigmoid関数のようなかたちで、イージングなどに利用
    • Inverse Hyperbolic Tan は 逆双曲線関数

ここまででグループごとに ShaderNode について調べてきたが、どんな役割のノードが存在し、どんな知識が足りていないのか、おおまかにイメージが掴めたので、このシリーズはいったん終わりにする。

2025年のトランスクライブまとめ

過去にも書いたようにジャズドラムの練習にトランスクライブを取り入れている。

だが、やりっぱなしで練習し終えた譜面はどこかにやってしまいがち。行方不明のままではもったいないので、年の瀬を機に今年やったトランスクライブをまとめようと紙の束から見つけ出してきた。

月1くらいのペースで継続していこうと思っていたはずなのに、、なんと今年3曲しか採譜できていなかった。気持ち的に5曲はこなしたつもりだった。

以下譜面は、トランスクライブしたものにレッスンを通して修正やメモを加えたもの。曲の選び方は、ジャズに詳しくないので、ジャズ喫茶とかサンマルクとかで流れてる曲で刺さったものを Shazam して探している。

最後の Ahmad’s Blues だけは、いろんなテンポのドラムソロを練習したく、Miles Davis のマラソン・セッションを全曲テンポ別に分類して、その中でドラムソロ有りのバラードを選んだもの。かなり良い練習になったが、後半の倍テン部分を220~の4ビートで引き出せるようにはなった一方で、肝心のバラードに活かせた試しがない。

Some Other Blues / Jimmy Cobb

“Coltrane Jazz” by John Coltrane

Emily Reno / Ben Riley

“Lonely City” by Freddie Redd

Ahmad’s Blues / Philly Joe Jones

“Workin’ With The Miles Davis Quintet” by Miles Davis Quintet

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年は技術的に踏み込んだ知見を共有できるよう研鑽したい。