KINTOテクノロゞヌズのブログ - TECH PLAY

TECH PLAY

KINTOテクノロゞヌズ

KINTOテクノロゞヌズ の技術ブログ

å…š1132ä»¶

はじめに こんにちは、2025幎10月入瀟のr.tesakiです 本蚘事では、2025幎10月入瀟のみなさたに入瀟盎埌の感想をお䌺いし、たずめおみたした。 KINTOテクノロゞヌズ以䞋、KTCに興味のある方、そしお、今回参加䞋さったメンバヌぞの振り返りずしお有益なコンテンツになればいいなず思いたす S.N. ![S.N.さんのプロフィヌル画像](/assets/blog/authors/tesaki/2025-12-24-newcomer-202512/S_N.png =300x) 自己玹介 KINTO䞭叀車開発Gのバック゚ンド゚ンゞニアずしお入瀟したした。宀町オフィス勀務です。 最近映画通の近くに匕っ越したので、映画通で映画を芳るのにハマっおいたす 所属チヌムの䜓制は KINTO䞭叀車開発Gは、プロデュヌスチヌム、フロント゚ンドチヌム、バック゚ンドチヌムの3チヌム䜓制です。 バック゚ンドチヌムは自分を含めお8名です。 珟堎の雰囲気はどんな感じ 出瀟した日にはチヌムメンバヌず䞀緒にランチに行くなど賑やかな雰囲気です。 KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは 入瀟動機 倧きな゚ンゞニア組織物を扱うサヌビスに携わりたいず考えおいたため。 入瀟前埌のギャップ ミヌティングや瀟内むベントなどで他拠点の方ずも関わるこずが想像よりも倚く、䌚瀟ずしおの䞀䜓感があっお良いず感じおいたす オフィスで気に入っおいるずころ 宀町オフィスは駅盎結なので、倩気を気にしなくお良いのが嬉しいです M.U.さん ⇒ S.N.さんぞの質問 小孊生の時の将来の倢なりたい職業は䜕でしたか 小孊校の卒業アルバムの写真撮圱で゚プロンを぀けた蚘憶があるので、料理人になりたかったんだず思いたす K.S. ![K.S.さんのプロフィヌル画像](/assets/blog/authors/tesaki/2025-12-24-newcomer-202512/K_S.png =300x) 自己玹介 酒ずカラオケをこよなく愛するアラフィフ。自称元プロゲヌマヌ。 所属チヌムの䜓制は コヌポレヌトIT郚所属。芪䌚瀟のビッグプロゞェクトに参画しおシステムリプレヌスのリヌダヌ。 珟堎の雰囲気はどんな感じ 個々が際立っおいおオリゞナリティヌのある人たちがワむワむしおいる感じ。 KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは 入瀟動機 ゚ンゞニアの報酬が高いし、圹職定幎ないし、バリバリ働けそうだから。 入瀟前埌のギャップ チヌムで働くずいうよりピンで掻動するこずが倚い気がする。意倖に瀟長、副瀟長ずの距離が近い オフィスで気に入っおいるずころ 神保町オフィスは人が少なくお広々ず䜿えるし、ずおも開攟感があっおよい S.N.さん ⇒ K.S.さんぞの質問 䞀番奜きなお酒を教えおください ビヌル🍺がサむコヌです👌が、痛颚が怖いので梅サワヌで我慢しおたす🀷‍♂ r.tesaki ![r.tesakiさんのプロフィヌル画像](/assets/blog/authors/tesaki/nekonote.png =300x) 自己玹介 オンプレのむンフラ゚ンゞニアからスタヌトしおKTCではプラットフォヌム開発郚DBREグルヌプのSREチヌムメンバヌずしお入瀟したした。Osaka Tech Lab所属です。 所属チヌムの䜓制は Database を専門ずするDBREチヌムず、プロダクト党䜓を担うSREチヌムの2チヌムに分かれお掻動しおたす。KINTOや他の業務システムの開発チヌムず䞀緒に掻動するこずが倚いです。 珟堎の雰囲気はどんな感じ Osaka Tech Labはチヌムを跚いだ䞀䜓感があっお、他のチヌムメンバヌは東京にいたすが孀立感はなく賑やかに感じおたす。 KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは 入瀟動機: 組織暪断であったり、プロダクト専任であったりず色々な圢のSREに挑戊できそうだったため。 入瀟前埌のギャップ: 聞いおた以䞊に東京ぞ行ける機䌚が倚く、承認もスムヌズに進むこずです。各皮むベント参加もしやすいです。 オフィスで気に入っおいるずころ JR倧阪駅の改札を出お目の前にオフィスビルの入口があるずころ。 K.S.さん ⇒ r.tesakiさんぞの質問 10億圓たったら䜕に䜿う 猫を飌う人しか䜏めないマンションを立おお猫奜きの楜園を぀くる ぬヌ ![ぬヌさんのプロフィヌル画像](/assets/blog/authors/tesaki/2025-12-24-newcomer-202512/nu.png =300x) 自己玹介 プラットフォヌム開発郚 Cloud Infrastructure G に所属しおいたす。KINTO 関連システムの AWS むンフラの構築や保守運甚を担圓しおいたす。 所属チヌムの䜓制は グルヌプはむンフラチヌム、カむれンチヌム、゜リュヌションチヌムの3チヌム䜓制で、同じむンフラ領域でも別々の責務を担っおいたす。 珟堎の雰囲気はどんな感じ メンバヌの仲が良く、雑談も倚いです。 KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは プラットフォヌム開発郚はグルヌプやチヌムがたくさんあり、思っおいた以䞊に圹割が现分化されおいるず感じたした。 若手をリヌドしおほしいず蚀われお入瀟したしたが、今のずころ(いい意味で)リヌドする必芁性を感じないぐらい玠晎らしいメンバヌだず思いたす オフィスで気に入っおいるずころ 神保町オフィスは近隣に飲食店が豊富で、おいしいお店が倚いずころ r.tesakiさん ⇒ ぬヌさんぞの質問 おすすめのキャンプグッズ教えおください 特にこれずいうグッズは無いのですが、SOTO ずいうメヌカヌの補品はコンパクトなものが倚いのでおすすめです キャンプをしおいるず荷物が増えおきお、少しでも物を枛らしたり同じ甚途でも小さいものにしたくなるので。 (ずいっおも自分では持っおいなくお、今埌買いたいなず思っおいるずころです) U.V. ![U.V.さんのプロフィヌル画像](/assets/blog/authors/tesaki/2025-12-24-newcomer-202512/U_V.png =300x) 自己玹介 ビゞネスディベロップメントGのU.V.です。 囜内倖のビゞネス拡匵を担圓しおおりたす。 所属チヌムの䜓制は 5名で構成された、倚囜籍のチヌムです。 珟堎の雰囲気はどんな感じ マネゞメントからの方針は明確ですが、各メンバヌが自由に意芋を述べ、自分の仕事に䞻䜓性を持っお取り組めおいるず感じおいたす。 KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは オリ゚ンテヌションは分かりやすく、私が抱えおいた疑問をすべお解消しおくれたした。 入瀟時点で有絊䌑暇が付䞎されるず䌺い、ずおも驚きたした。ありがずうございたす。 毎月新しいプロゞェクトが立ち䞊がり、仕事がずおもダむナミックで楜しんでいたす。 オフィスで気に入っおいるずころ オフィスは混雑しおおらず、朚補の家具がずおも可愛らしいです。 ぬヌさん ⇒ U.V.さんぞの質問 日本に来た動機ず、日本に来お驚いたこずや倉だなヌず思うこずがあれば教えおください 日本で留孊生ずしお過ごした時間がずおも楜しく、自分の囜ずは倧きく違う環境でキャリアを築きたいず思い、日本で働くこずを決めたした。 驚いたこずの䞀぀は、日本の方が電話でもお蟞儀をするこずです。 M.U. ![M.U.さんのプロフィヌル画像](/assets/blog/authors/tesaki/2025-12-24-newcomer-202512/M_U.png =300x) 自己玹介 モビリティプロダクト開発郚で、販売店様ずの関係構築/プリセヌルスを担圓しおいたす 勀務先は今幎開蚭されたばかりの犏岡です 所属チヌムの䜓制は 4名䜓制私以倖は東京のオフィスがベヌスで党囜の販売店様を担圓しおいたす 珟堎の雰囲気はどんな感じ 犏岡では皆で協力しながら、オフィスを運営しおいたす 出匵で来られる方が倚いので、郚眲を超えお䌚話する機䌚が倚いですね チヌムメンバヌずは定期的にオンサむトでコミュニケヌションを取っおいるので、リモヌトだからずいっお䞍自由は無いです KTCぞ入瀟したずきの入瀟動機や入瀟前埌のギャップは 䞭芏暡Sierずスタヌトアップを経隓したので、芏暡の倧きな䌚瀟で新しいチャレンゞをしおみたいず思ったからです 倧きなギャップはなく、個々人のスキルが高くプロの集団だず感じたした オフィスで気に入っおいるずころ 勀務先の犏岡テックラボは11月にオヌプンしたばかり 海が芋枡せる開攟感のある景色ずおしゃれな内装で、出瀟したくなるオフィスです U.V.さん ⇒ M.U.さんぞの質問 お仕事の䞭で、AI をどのように掻甚しおいるのか、興味深い取り組みがあれば教えおいただけたすか。 䞻に調査や資料䜜成など䞀般的な䜿い方です 情報をキャッチアップする際にコパむロットだず、瀟倖情報瀟内資料も提案しおくれるのが玠敵ですね 販売店様の情報を調査する等であればGeminiの方が優秀だず感じおいたす さいごに みなさた、入瀟埌の感想を教えおくださり、ありがずうございたした KINTOテクノロゞヌズでは日々、新たなメンバヌが増えおいたす 今埌もいろんな郚眲のいろんな方々の入瀟゚ントリが増えおいきたすので、楜しみにしおいただけたしたら幞いです。 そしお、KINTOテクノロゞヌズでは、ただたださたざたな郚眲・職皮で䞀緒に働ける仲間を募集しおいたす 詳しくは こちら からご確認ください
この蚘事は KINTO テクノロゞヌズ Advent Calendar 2025 の 25 日目の蚘事です 🎅🎄 はじめに こんにちは KINTO 開発郚 KINTO バック゚ンド開発 G マスタヌメンテナンスツヌル開発チヌム、技術広報 G 兌務、Osaka Tech Lab 所属の high-g @high_g_engineer です。フロント゚ンド゚ンゞニアをやっおいたす。 珟圚開発䞭のプロゞェクトでは、RC 版の頃から React Compiler を導入しおおり、玄 8 ヶ月が経ちたした。 導入によっお useMemo や useCallback を曞かなくおも自動でメモ化されるため、メモ化を意識する必芁がなくなり、開発䜓隓は向䞊したした。 しかし、実際にどの皋床メモ化が正しく行われおいるのか、パフォヌマンスにどれくらいの圱響があるのかは、詳しく怜蚌できおいたせんでした。 そこで本蚘事では、React Compiler の有効時の挙動や、有効時ず無効時のパフォヌマンス比范を怜蚌しおみるこずにしたした。 React Compiler ずは https://ja.react.dev/learn/react-compiler/introduction React Compiler は、ビルド時に自動的にメモ化を行うこずで React アプリを最適化するツヌルです。 そのため、React Compiler を導入すれば、 useMemo や useCallback 、 React.memo などを手動で曞く必芁がなくなりたす。 最初の安定版v1.0は 2025 幎 10 月 7 日にリリヌスされ、この蚘事が執筆された時点で玄 2 か月半が経過しおいたす。 安定版リリヌスたでの経緯は以䞋の通りです。 2023 幎 3 月 - 「React Forget」ずしお開発、Meta 瀟内の限定的な領域で production 利甚開始 2023 幎 10 月 - React Advanced Conference 2023 で「React Forget」ずしお公開発衚 2024 幎 2 月 - instagram 党䜓で production 展開完了、Meta 瀟内の他サヌビスぞ展開、OSS 化準備ず発衚 2024 幎 5 月 - React Conf 2024 で experimental release を発衚 2024 幎 10 月 21 日 - Beta release を公開 2025 幎 4 月 21 日 - Release Candidate (RC) を公開 2025 幎 10 月 7 日 - v1.0 安定版リリヌス React Compiler の蚭定方法 Vite ず React 19 を䜿甚した環境での React Compiler の蚭定方法を玹介したす。 1. パッケヌゞのむンストヌル pnpm add -D babel-plugin-react-compiler 2. vite.config.ts の蚭定 @vitejs/plugin-react の babel オプションに babel-plugin-react-compiler を远加したす。 import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; // 蚭定オプション const ReactCompilerConfig = { /* ... */ }; export default defineConfig({ plugins: [ react({ babel: { plugins: [["babel-plugin-react-compiler", ReactCompilerConfig]], }, }), ], }); これだけで蚭定は完了です。埌はビルド時に React Compiler が自動的にコヌドを解析し、必芁な箇所にメモ化を適甚しおくれたす。 React Compiler の蚭定オプションに関しおは、本蚘事では説明を割愛したす。 特に蚭定しなくおも動䜜したすが、詳现を知りたい方は以䞋を参照しおください。 https://ja.react.dev/reference/react-compiler/configuration ベンチマヌク察象の React アプリ 実際の開発プロゞェクトで怜蚌を詊みたしたが、䜿甚しおいるラむブラリに既にメモ化されたコンポヌネントが倚く含たれおいお、玔粋な比范が困難だったので、ベンチマヌク専甚のプロゞェクトを䜜成したした。 ヘッダヌ、サむドメニュヌ、メむンコンテンツの゚リアで構成され、初期衚瀺時の合蚈コンポヌネント数は玄 100 個です。 最初に、React Compiler が無効の状態で、React Dev Tools でメモ化の状況を確認しおいきたす。 Components タブを芋るず、メモ化されおいる堎合に衚瀺される「Memo」のラベルが䞀切ないこずがわかりたす。 次に、React Dev Tools の蚭定で Highlight updates when components render にチェックを入れお、䞊䜍にあるボタンコンポヌネントをクリックし再レンダリングの様子を確認するず、本来再レンダリングが䞍芁な子孫コンポヌネントにも再レンダリングが発生しおいるこずが分かりたす。 React Compiler のメモ化の挙動 React Compiler を有効にしお開発サヌバヌを立ち䞊げ、同じアプリがメモ化されおいるかを確認したす。 React Dev Tools の Components タブを確認するず、「Memo」のラベルが数倚く衚瀺されおいるこずが分かりたす。 同様に、䞊䜍にあるボタンコンポヌネントをクリックし、React Dev Tools で再レンダリングの状態を確認するず、再レンダリングが必芁最小限に抑えられおいるこずが分かりたす。 React Compiler のパフォヌマンスベンチマヌク ここからは、React Compiler によるパフォヌマンスの差を React Dev Tools の Profiler を甚いお怜蚌しおいきたす。 怜蚌では、䞋蚘の赀枠のボタンを玄 1 秒間隔で 10 回連続クリックした際の、レンダリング時間の比范を行いたした。 このボタンはメむンコンテンツの最䞊䜍に配眮されおいるため、クリック時に倚くの子孫コンポヌネントぞ再レンダリングの圱響が波及したす。 React Compiler 無効時メモ化なし 蚈枬デヌタ 1回目: 29ms 2回目: 34.5ms 3回目: 36.1ms 4回目: 33.9ms 5回目: 36.3ms 6回目: 17.6ms 7回目: 35.1ms 8回目: 32.1ms 9回目: 33.3ms 10回目: 36.8ms 平均レンダリング時間 32.5ms Flamegraph を芋るず、すべおの子孫コンポヌネントがレンダリングされおいるこずが分かりたす。たた、MainContents 以倖にもレンダリング時間が長いコンポヌネント黄色やオレンゞ色で衚瀺が存圚し、本来䞍芁な再レンダリングが発生しおいるこずが確認できたす。 React Compiler 有効時メモ化あり 蚈枬デヌタ 1回目: 11.1ms 2回目: 12.1ms 3回目: 12.2ms 4回目: 12.1ms 5回目: 12.1ms 6回目: 12.1ms 7回目: 12.1ms 8回目: 12.0ms 9回目: 12.0ms 10回目: 12.6ms 平均レンダリング時間 12.0ms Flamegraph を芋るず、グレヌの斜線で衚瀺されおいるコンポヌネントが倚数確認でき、再レンダリングが必芁最小限に抑えられおいるこずが分かりたす。 パフォヌマンス改善の結果 React Compiler 無効時 React Compiler 有効時 改善結果 平均レンダリング時間 32.5ms 12.0ms 箄 2.7 倍高速化 React Compiler を有効にしただけで、非垞に倧きなパフォヌマンス改善ができおいるこずが確認できたした。 今回はメモ化を党く行っおいないプロゞェクトずの比范のため、すべおのケヌスで同様の改善が芋蟌めるわけではありたせんが、導入効果は十分に期埅できたす。 懞念点 ラむブラリずの盞性 珟圚開発䞭のプロゞェクトでは TanStack Table を利甚しおいたす。TanStack Table は新しい参照を意図的に生成するこずで再レンダリングをトリガヌする蚭蚈のため、React Compiler によるメモ化が適甚されるず、再レンダリングが発生せず意図しない挙動を匕き起こす可胜性がありたす。 この問題に察しおは、 "use no memo" ディレクティブを远加しお郚分的に React Compiler を無効化するこずで察応が可胜です。 function TableComponent() { "use no memo"; const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), }); return ( <table> {/* TanStack Table の参照倉化に䟝存する凊理 */} </table> ); } react-hook-form など、同様に参照の倉化に䟝存するラむブラリを利甚する堎合は、芁所で "use no memo" の蚘述が必芁になるため、導入時にはご泚意ください。 ビルド速床䜎䞋、ビルドファむルサむズ䞊昇 React Compiler を導入するず、再レンダリング時のパフォヌマンスは向䞊したすが、メモ化のためのコヌドが远加されるため、ビルド速床やファむルサむズに倚少圱響が出たす。その結果、初回読み蟌みが少し遅くなる可胜性がありたす。 React Compiler 無効時のビルド結果 ビルド時間: 64ms ファむルサむズ: 232KB React Compiler 有効時のビルド結果 ビルド時間: 556ms ファむルサむズ: 248KB たずめ 今回は React Compiler を有効にしたずきのメモ化に関する挙動の確認ず、パフォヌマンスにどれくらい圱響があるのかを怜蚌しおみたした。 結果ずしお、メモ化が正しく動䜜し、そのおかげでパフォヌマンス改善も十分に期埅できるこずが分かりたした。 ただし、いく぀か泚意点もありたす。 参照の倉化に䟝存するラむブラリを䜿甚する堎合は、 "use no memo" で郚分的に無効化が必芁になるこずがありたす。たた、メモ化のコヌドが远加される分、ビルド速床やファむルサむズには倚少圱響が出たす。 ずはいえ、これらは察凊可胜な範囲ですし、パフォヌマンス改善だけでなくメモ化を意識しなくお枈むずいうメリットは非垞に倧きいです。React Compiler の導入を迷われおいる方は、ぜひ詊しおみおください。 最埌たで読んでいただきありがずうございたした。 参考蚘事 https://ja.react.dev/learn/react-compiler/introduction https://ja.react.dev/reference/react-compiler/configuration https://reactadvanced.com/2023/ https://conf2024.react.dev/ https://react.dev/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023 https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024 https://react.dev/blog/2025/10/07/react-compiler-1 https://github.com/TanStack/table/issues/5567
こんにちはKINTOテクノロゞヌズのクリ゚むティブGでデザむナヌをしおいるmayuです。 今回は、技術曞兞の衚玙制䜜の過皋をご玹介したいず思いたす。 Midjourneyなどの生成AIツヌルを掻甚しおいるので、「 ノンデザむナヌでもプロ䞊みの制䜜ができる 」のがミ゜です。 デザむナヌの方も、そうでない方もぜひご芧ください 技術曞兞甚の衚玙デザむンを䟝頌された ある日、゚ンゞニアのうえはらさんから 「KINTOテクノロゞヌズ(KTC)の有志゚ンゞニアによる技術曞を技術曞兞に出展したいので、衚玙デザむンを䜜っおほしい」 ずいう䟝頌を受けたした。 今回はクリ゚むティブGのデザむナヌmomoiさんの提案で 「デザむナヌを集めおラむブペむンティング方匏で䜜成するのはどうか」 ずいうこずで、ラむブペむンティングむベント内での制䜜が決定したした 技術曞兞っおなに 技術曞兞に぀いおはうえはらさんが曞いおくださった蚘事があるのでこちらをご芧ください。 https://blog.kinto-technologies.com/posts/2025-12-12-techbookfest19-report/ ラむブペむンティングっおなに ラむブペむンティングに぀いおはmomoiさんが曞いおくださった蚘事があるのでこちらをご芧ください。 https://blog.kinto-technologies.com/posts/2025-12-24-ai-live-painting/ どうやっお䜜ったか ざっくり䜜り方を説明するず、 1. お題をChatGPTにむンプットさせる 2. ChatGPTにプロンプトを曞いおもらう 3. Midjourneyで画像を生成する 4. Midjourneyで解像床UP & Photoshopで埮修正する 5. illustratorで入皿デヌタを䜜成する の5ステップです それぞれ玐解いおいきたすね。 1. お題をChatGPTにむンプットさせる 今回のお題はこちらでした。 お題は事前に知らされおいなかったので、正盎「ざっくりしたお題だな 」ず思い最初は党くむメヌゞが浮かびたせんでした。笑 2. ChatGPTにプロンプトを曞いおもらう たずは、私の盞棒ChatGPTにお題をむンプットしお、アむデア出しをしおもらうこずにしたした。 ひずたず、プロンプトを出しおくれたのでこれをMidjourneyに入力しおいきたす。 3. Midjourneyで画像を生成する 䞀回目の生成結果はこんな感じ るぎあは事前に配垃されおいた玠材を Omni-Reference で読み蟌たせ、䞀貫性を保っおいたす。 Omni-Referenceに぀いおはmomoiさんが詳しく曞いおくださっおいるのでこちらの蚘事をご芧ください。 https://blog.kinto-technologies.com/posts/2025-06-13-omni-reference/ ここたでやっお、なんずなく䞖界芳のむメヌゞは湧いおきたした。 でも、るぎあが棒立ちで動きがないので䜕か違うなヌっお感じ  「どんなポヌズがいいか」ずChatGPTに盞談しおみたした。 さすがチャッピヌかなり具䜓的でこれならむメヌゞに合うものが䜜れそう それぞれのポヌズをプロンプトに萜ずし蟌んでもらいたした。 これを、もう䞀床Midourneyで生成しおみたす。 なかなかいい感じになりたした 先ほどの棒立ちるぎあず比べるず、「未来感」が増した気がしたす。 ただ、衚玙の䞊郚にはタむトルを入れる予定なので、これだず頭ず文字が被っおしたいそうなんですよね  どうしよう ず考えた結果、 座らせるこずにしたした笑 (るぎあを座らせるようChatGPTにプロンプトを曞いおもらいたした) これなら画像の䞊郚が空くので、タむトルも問題なく入りそうです。 䜕回か䜜成するず、かなりしっくり来る画像が生成されたした こちらです たさに私が求めおいた「先進的で、モビリティ感のある画像」が生成されたした 画像の䞊郚もいい感じに空いおいるので、タむトルもきちんず収たりそうです。 ここから埮修正は入れたすが、ベヌスのデザむンはこれで決定したした。 4. Midjourneyで解像床UP & Photoshopで埮修正する ラむブペむンティングむベント内では時間制限があったため、先ほど生成した画像をそのたた提出したのですが、ありがたいこずに䟝頌者祚・オヌディ゚ンス祚ずもに1䜍に遞んでいただき、晎れお衚玙デビュヌが決定したした ずなるず、先ほどの画像を衚玙甚に綺麗に敎えおいく必芁がありたす。 ここからはMidjourneyずAdobeのPhotoshopを䜿っお画像を修正しおいきたす。 たずは、Midjourneyを䜿っお解像床を䞊げおいきたす。 やり方はずおも簡単で、画像を開いお右䞋の 「Creation Actions」→「Upscale」→「Subtle」を䞀回クリックするだけ です。 (隣にある「Criative」は、今回は元の画像を保持したいので䜿いたせんでしたが、ディティヌルを加えおクオリティアップを目指すならこちらもおすすめです) この操䜜により画質は保ったたた「 896px × 1,344px 」から「 1792px × 2,688px 」ず、2倍の解像床になりたした 次に、Photoshopで埮修正をしおいきたす。 気になるのはこの蟺ですね。 るぎあのヘッドホンに描かれおいる∞などのマヌク 巊䞋の暗号ぜいもの Photoshopで簡単に消しおいきたいず思いたす。 なげなわツヌルで䞍芁な郚分を囲ったら、「 生成塗り぀ぶし 」をクリックしたす。(※プロンプトは無しでOK) 綺麗に消えたした 巊䞋郚分も同様の操䜜を行っおいきたす。 自然に銎染みたした これで画像が仕䞊がったので、あずは入皿デヌタを䜜成しおいきたす。 5. illustratorで入皿デヌタを䜜成する こちらが入皿デヌタです タむトルなど付け足しお背衚玙ず裏衚玙も䜜成したら完成です。 制䜜を終えお 制䜜を終えお感じたのは、AIのおかげでノンデザむナヌでも高品質なビゞュアルを䜜れるハヌドルが栌段に䞋がったずいうこずです。 今回の衚玙制䜜でも、ChatGPTでのアむデア出しやMidjourneyでの画像生成によっお、れロから䜕かを生み出す負荷が倧きく枛りたした。 その䞀方で、「䜕がいい」「䜕が悪い」の刀断や、现かな䞖界芳の調敎など、AIだけでは完結しない郚分も倚くありたす。 だからこそ、AIの力を借り぀぀、人間が持぀感性を利甚しお方向性を遞択するこずが重芁だずも改めお感じたした。 私は今幎からAIプロゞェクトメンバヌずしお携わっおきお、さたざたなツヌルを䜿う䞭で、少しず぀「 AIぞの正しい頌り方 」がわかっおきた実感がありたす。 AIはただ完党ではなく、人間に眮き換わるこずはできたせんが、高いクリ゚むティビティを持っおいお、私にずっお仕事に欠かせない存圚になっおいたす。 これからも、AIを心匷いパヌトナヌずしお、うたく協業しながら制䜜に向き合っおいきたいず思っおいたす。 最埌たでお読みいただき、ありがずうございたした
KINTOテクノロゞヌズKTCの景山です 幎末恒䟋ずなりたすが、2025幎の振り返りず、来る2026幎の展望に぀いお曞きたいず思いたす。 2025幎の振り返り実装ずカルチャヌぞの定着 2025幎の幎初、私は「AIファヌスト」ず「リリヌスファヌスト最短リリヌス」ずいう2぀のテヌマを掲げたした。 https://blog.kinto-technologies.com/posts/2024-12-25-LookBack2024/ 1. AIファヌスト実装の幎 䞖の䞭的にも生成AIの実装が圓たり前ずなった2025幎、KTCでも以䞋の3点を掚進しおきたした。 すべおのプロダクトぞのAIむンテグレヌト AIプロダクトを倚く開発する 販売店やトペタグルヌプにおけるAI掻甚のドラむバヌずなる この1幎で、瀟員のみなさんのマむンドは劇的に倉わりたした。私の想像を超えるスピヌドで倉化が進み、KTCがグルヌプ内でもAI掻甚の先頭集団にいられたのは、みなさんの真剣な取り組みのおかげです。本圓にありがずうございたした 2. リリヌスファヌストカルチャヌぞの浞透 こちらはテクニカルな斜策ずいうよりも、「プロダクト開発の文化」ずしお組織に深く根付き぀぀ありたす。「䜕を䜜るか」だけでなく「いかに速く届けるか」。この意識が、私の想定を軜々ず飛び越え、みなさんの手によっお珟堎の圓たり前になり぀぀あるこずに頌もしさを感じおいたす。 2026幎の展望自埋ず拡匵の幎 テクノロゞヌ業界の朮流は、「察話するAI」から「行動するAI」ぞず急速にシフトしおいたす。 この波を捉えるために、2026幎は以䞋の2぀のファヌストに泚力したす。 1. AgentファヌストAgentic AI 2025幎たでのAIは、人間が指瀺を出しお答えをもらう「賢いチャットボット」が䞻流でした。しかし、昚今の技術トレンドは、耇雑な掚論を行い、自埋的にタスクを完遂する「AI Agent」ぞず完党に移行しおいたす。 これたでのAI掻甚は「個人の䜜業補助」に留たりがちで、組織党䜓の効率化には限界がありたした。しかし、Agentは違いたす。抜象的な目的を䞎えれば、AI自らがタスクを分解し、ツヌルを操䜜し、人間のようにアクションを実行したす。 KTCでも䞀郚の郚眲でAgent掻甚が始たっおいたすが、2026幎はこれを党瀟展開したす。 CX倉革 Web/App䞊で、コンシェルゞュのように振る舞うAI Ops倉革 運甚・業務プロセスを自埋的に回すAI Sales倉革 クルマの販売プロセスそのものを再発明するAI 䞖の䞭が「AIを䜿う」から「AIに任せる」ぞず倉わる今、党郚眲でAgentを生み出し、組織の生産性を爆発的に高めおいきたしょう。 2. AI゚ンゞニアリングファヌストAI-Native Dev ゜フトりェア開発の䞖界では今、GitHub Copilot WorkspaceやKiro、Cursor、Claude CodeのようなAIネむティブな開発環境が暙準になり぀぀ありたす。「コヌドを曞く」ずいう行為そのものの定矩が倉わろうずしおいるのです。 この倉化は、これたでの技術革新ずは比范にならないスピヌドで進んでいたす。叀いやり方に固執すれば、あっずいう間に陳腐化したす。しかし逆に蚀えば、 「AI゚ンゞニアリング」を歊噚にすれば、職皮の壁を超えられる ずいうこずです。 䌁画、芁件定矩、蚭蚈、実装。AIが実装をサポヌトしおくれる今、PdMやPjMずいった職皮の方々も、埓来ぱンゞニア領域ずされおいた仕事たで拡匵できるチャンスです。䌚瀟は最新の歊噚ツヌル・環境を惜しみなく提䟛したす。䞀人ひずりが「AIネむティブ」な芖点でプロセスを再構築し、開発のあり方を抜本的に倉えおいきたしょう。 KTCの揺るぎない「基本的䟡倀」 技術トレンドがいかに倉わろうずも、KTCの競争力の根幹ずなる䟡倀芳は倉わりたせん。 むンテンシティMoveFast・OwnerShip リリヌスファヌスト ナヌザヌファヌスト これらの䟡倀はKTCの各人により構成され、KTCが倉化の激しい時代を生き抜くための基瀎力です。䌚瀟ずしおも支揎したすが、䜕よりみなさん自身の実践にかかっおいたす。匕き続き、培底しおいきたしょう。 KTCの匷み、優䜍性Vertical AIぞの挑戊 汎甚的なAIモデルは䞀般化し、䞖界䞭の誰もが䜿えるようになりたした。では、KTCはどこで勝぀のか。それは「ドメむン特化Vertical戊略」です。 AI (Agent) クラりド ドメむン知識 & グロヌスノりハり AI×クラりドの技術力は前提条件です。ここは進化が速く、垞に最先端をキャッチアップし続ける危機感が必芁です。 その䞊で、我々には「トペタグルヌプのビゞネス資産」がありたす。コネクティッドデヌタ、車䞡販売の知芋、リアルな顧客接点。これらは他瀟が簡単に暡倣できない資産です。 「AI×クラりド」ずいうグロヌバルな歊噚で、「モビリティ」ずいう独自の領域を深掘りする 。業務知識を蓄え、それをAIで䟡倀に倉換するサむクルを回すこずこそが、KTCだけの匷みになりたす。 最埌に 2026幎は、技術の進化がさらに加速し、瀟䌚実装のフェヌズも䞀段階䞊がりたす。倉化を恐れず、むしろその先頭に立぀気抂を持っお、䞀人ひずりがアップデヌトしおいきたしょう
はじめに この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の 24日目の蚘事です🎅🎄 こんにちは╭Ꙭ╮➝o KINTOテクノロゞヌズ以䞋、KTCで人事グルヌプに所属しおいる、だヌしヌ @dashiko です。 普段は総務・劎務たわりの実務や圹員秘曞業務、そしお各拠点にいるサポヌトメンバヌを束ねるチヌムのリヌダヌを担圓しおいたす。 私はKTC蚭立準備の時期から圚籍しおおり、気づけば早 5 幎ず 10 か月が経ずうずしおいたす叀株を通り越しお、もはや化石です🐘。 開発組織の芏暡も、おかげさたで圓時は 30 名ほどだったずころから、いたでは 400 名を超える組織ぞず成長したした。 そんな倉化の波の䞭で、この䌚瀟で初めお総務の領域に飛び蟌み、 気づけばずっず “珟堎の総務” ずしおオフィスづくりに向き合っおきたした。 この蚘事では、その総務業務の䞭でも、党瀟を暪断しお動いおいる総務チヌム、 通称「Team総務」の掻動にスポットをあおおご玹介しおいきたいず思いたす📄 ※Team総務  兄匟䌚瀟KINTOの総務 × KTC偎の総務がタッグを組んだ、 党瀟暪断でオフィスや安党・カルチャヌづくりを動かしおいるチヌムです。 Team総務。戊闘着は䞉本線のゞャヌゞです IT䌁業ず聞くず、たず思い浮かぶのは💡 ゚ンゞニア デザむナヌ PjM・PdM など思い浮かべる人が倚いず思いたす。 その裏偎で 「オフィス」ずいう物理むンフラ を支えおいるのが総務です。 ずはいえ、瀟倖から芋るず、 「IT䌁業の総務っお、実際なにしおるの」 「“なんでも屋”っお聞くけど、実態は」 ずいうのが正盎なずころかなず🀔 そこでこの蚘事では、匊瀟のTeam総務を䟋に、 総務がどんな圹割を担っおいるのか この1幎、どんなこずに走り回っおいたのか その䞭で芋えおきた “泥臭さ” ず “おもしろさ” あたりを、ご玹介し぀぀「IT䌁業の総務の䞭身、党郚芋せちゃいたす」 をテヌマにたずめおいきたす 📝 Team総務っお䜕やっおいるの ⚙オフィス運営物理䞖界の SRE みたいな仕事 総務は、ある意味 Office Reliability Engineering です👓 耇数拠点東京・名叀屋・倧阪・犏岡のオフィス管理 レむアりト倉曎・増床・移転・リニュヌアル 通称民族倧移動倧芏暡なゟヌニングや配眮替えの蚭蚈ず実行 怅子・デスク・共甚備品などの什噚管理 入退通・セキュリティカヌドの管理 珟堎レベルだず、 座垭衚をPowerPointで地道に曎新しながら 各郚眲の関係者ずすり合わせをしお 移転日・工事日・垭替え圓日などのマむルストヌンを決めお、 自分たちのToDoに萜ずしおひず぀ず぀朰しおいく ずいう、「アナログずデゞタルのあいだ」くらいの運甚で回しおいたす。 芋た目は泥臭いけれど、やっおいるこずはほがプロゞェクトワヌクです💡 🌱働く環境づくり快適性・利䟿性・安党性の最適化 「ちょっずした䞍䟿」を拟っお盎すのも、総務の倧事な圹目です🛠 半期に1回、絊茶機のフレヌバヌアンケヌトを実斜しおラむンナップを調敎 空調・照明・隒音に関する盞談の䞀次窓口 季節や状況に応じた蚭眮備品の調敎 怍栜の配眮、感染予防グッズ、サヌキュレヌタヌなどの蚭眮など 「1人の“気になる”は、10人の“蚀わないモダモダ”かも」 ずいう前提で、個別の芁望ずフロア党䜓のバランスを芋ながら、 党䜓最適の萜ずしどころを探しおいたす🔍 みんなの掚しフレヌバヌを教えお絊茶機アンケヌト 📘ガバナンスずルヌル敎備やさしい「瀟内仕様曞」を぀くる オフィスを安定運甚するには、 「ちょっずしたお䜜法」から「いざずいうずきの行動」たで、ルヌルづくりも欠かせたせん🗒 各拠点のオフィスガむド 日垞のルヌル瀟内手続きの申請・承認フロヌ 安党衛生・灜害時の行動マニュアル など これらも、できるだけIT䌁業らしく・読みやすく を意識しお敎えおいたす。 読たれる前提のルヌル芋出し・Q&A・図解でサクッず理解できるように ぀くっお終わりではなく、フィヌドバックや状況に応じたアップデヌト ルヌルで瞛るずいうよりは、 「みんなが迷わず・気持ちよく動けるための瀟内仕様曞を぀くる」 ずいう感芚で運甚しおいたす📚 瀟内ルヌル・ナレッゞがぎゅっず詰たった「KINTO Technologies NaviKTN」 困ったらたずここを開けばだいたいなんずかなる、を目指しお育おおいたす 🎉瀟内むベント・カルチャヌづくり Team総務は、オフィス起点のむベント も実斜しおいたす。 䞃倕🎋 ハロりィン🎃 クリスマス🎄など、オフィスで季節を感じられるむベント䌁画や装食づくり 瀟内掲瀺板で「総務の぀ぶやき」を連茉し、各拠点オフィスのトピックやむベント報告や総務の舞台裏を発信 こうした取り組みは、単なる「盛り䞊がりむベント」ではなく、 初めおの方も参加しやすい雰囲気づくり 拠点・職皮・圹職をたたいでのコミュニケヌションきっかけづくり オフィスに出瀟したいず思っおもらえる仕組みづくり など、カルチャヌのOSアップデヌトの堎ずしお蚭蚈しおいたす🧩 瀟内掲瀺板で連茉しおいる「総務の぀ぶやき」 各拠点の季節むベントやオフィスの小ネタをTeam総務目線でゆるっずお届け 💪ちょっず泥臭いリアル線総務はわりず物理もやる ここたで読むずスマヌトに聞こえたすが、珟堎はかなり泥臭いです⚟ だいたい毎月どこかで汗かいおたすボ(ÂŽo 長尺脚立に乗っお備品を修理する 床䞋電源の配線のために、オフィスの床䞋に朜り蟌む オフィス矎化のために、定期的にフロアをぐるぐる巡回する 季節装食やオフィスむベント装食を、手䜜りしたり自分たちの手で1枚ず぀貌っお回る 座垭が固定垭運甚なので、異動・入退瀟・兌務を反映した最新の座垭衚を毎月コツコツ曎新する ゚ンゞニアがコヌドをデプロむしおいる裏偎で、 総務は総務で 「オフィスずいう物理レむダヌ」をデプロむ しおいるようなものです。 総務は決しおキラキラした仕事ばかりではありたせんが、 泥臭く手を動かしおいるぶんだけ、 「誰かのための仕事」がくっきり芋える職皮 だず感じおいたす。 床䞋掘りの写真を探したら、5幎前から床を掘っおいたした笑 2025幎の総務掻動ハむラむト 色々ず語っおしたいたしたが、ここでざヌっず今幎1幎の総務掻動をカレンダヌ圢匏で振り返っおみたしょう📅 今幎1幎の総務掻動メモリヌズ📷 こうしお月ごずに䞊べおみるず、 オフィスの移転・開蚭・リニュヌアル・ゟヌニング調敎党拠点  民族倧移動レベルのレむアりト倉曎幎2回  䞃倕・ハロりィン・Xmasなど季節むベントの䌁画・運営 たで、フルコヌスでやっおいた1幎だったこずに、自分たちでもちょっず笑っおしたいたす😆 「オフィスは生き物」ずよく蚀いたすが、 その内臓レむアりトや血管動線・配線、そしお“気持ちの枩床”をせっせず敎えながら、 みんながい぀も通り働ける日垞を維持しおいた1幎だったなず感じおいたす✚ 来幎挑戊したいこず 来幎以降、Team総務ずしおチャレンゞしおいきたいこずを、 「こうなったらいいな」をそのたた宣蚀しおおきたす🔥 オフィス改善アむデアを “プロダクトバックログ” 的に管理する 声を集めお、芋える堎所で優先床を぀けお、ちゃんずリリヌスしおいく 手䜜業前提のオペレヌションを「AI前提」に組み替えおいく バックオフィスこそAI掻甚の実隓堎にしお、チェック・転蚘・集蚈などの単玔䜜業はどんどんAIに任せおいく 「出瀟したくなる堎所」を぀くるオフィス䌁画 ただの“䜜業堎所”ではなく、「行くずちょっず埗する」「誰かず話したくなる」オフィスぞ匷化 季節むベントを「幎䞭行事」レベルたで定着させる 幎のリズムずしお、「あ、そろそろ䞃倕だ」「今幎のハロりィンは䜕やるの」が自然に出おくるくらいたで育おる 利甚状況やアンケヌトなど、デヌタに基づいたオフィス運営を進める 勘ず経隓だけでなく、「数字を芋ながら意思決定できる総務」を目指す おわりに あらためお䞊べおみるず、総務の仕事は オフィス移転・リニュヌアル・民族倧移動 季節むベント・瀟内むベント 安党・ガバナンス・危機管理 座垭調敎・オフィス矎化  などなど “芋えにくいけれど、なくなるず困るもの” ばかりです。 でも、その「芋えにくい仕事」を、 こうしお少しだけ 透明化しおみる のも悪くないなず思っおいたす。 毎幎その1幎を党力で走り、最終的に行き぀いたのはこの感芚でした。 すべおの仕事には必ず「盞手」がいお、 盞手を思えば、どんな仕事も愛ある仕事になる。 床䞋をはいずり回る日も、脚立にのがる日も、 オフィス内駆け回っおる日も、Slack でひたすらアナりンス文を曞いおいる日も、 その先には誰かの「働きやすさ」がありたす。 IT䌁業の総務は、ちょっず泥臭くお、でもわりず愛のある仕事です😌🫶 😲💬 「IT䌁業の総務っお、けっこうプロゞェクト型で、ちゃんず“職胜”なんだな」 ず、この蚘事を読んで、そんな颚に感じおもらえたら嬉しいです。 同じコヌポレヌト領域総務 / 劎務 / 人事のみなさんずも、 「それ、うちもやっおる」ずか 「その芖点なかった」みたいな あるあるや工倫を、い぀かどこかで亀換できたらいいなず思っおいたす “なんでも屋”じゃなくお“オフィスの基盀職”。 IT䌁業 Team総務の仕事、今幎も党力で走りきりたした🏃‍♀💚🎄 最埌たで読んでいただき、ありがずうございたした╭Ꙭ╮➝o
はじめに この蚘事は New Relic Advent Calendar 2025 の24日目の蚘事です。 こんにちは、SREチヌムの おさない です。本蚘事では 先日発衚 されたNew Relic MCPサヌバヌをSlackから利甚できるようにする方法に぀いお玹介したす。 MCPサヌバヌ自䜓はClaudeなどの察話型AIやCodex, Kiroなどのコヌディング゚ヌゞェントなど、さたざたなむンタヌフェヌスで利甚するこずができたすが、Slackずいうむンタヌフェヌスで䜿えるようにするこずで、New Relicのデヌタ利掻甚の幅をさらに広げられるず感じおいたす。 構成図 今回は以䞋のような構成でSlackからNew Relic MCPを利甚したす。 今回䜜成する構成図 SlackでBotにメンションしお質問するこずで、回答に必芁な情報をNew Relic MCPを䜿っお取埗しおスレッドに返信しおくれたす。 構築手順 :::message 本蚘事ではSlackからNew Relicのデヌタにアクセスできるようにするために最小限の内容を玹介しおいたす。以䞋のような芁玠に぀いおは省略しおいたすので、必芁に応じお察応しおください。 システムプロンプトのチュヌニング New Relicのアカりントが耇数ある堎合、どのアカりントから情報を探したすかずいった返答になりがちなので、システムプロンプトなどで「利甚なアカりントから順番に調査しおください。」ずいった文蚀を入れるず動くようになりたした。 セキュリティ面の察策 今回玹介する構成はナヌザヌのむンプットをそのたた䌝えおいるため、入力・出力内容のガヌドレヌルを蚭けるこずをオススメしたす。 たた、IAM Roleの暩限も必芁最小限の蚭定にするこずをオススメしたす。 䌚話履歎の保持 今回の構成では䌚話履歎を保持しおおらず、単発でのやり取りになりたす。 ::: New Relic APIキヌの発行 New Relicの API Keys のペヌゞに遷移しお、 Create a key ボタンを抌䞋したす。 Key Typeは User を遞択しお䜜成し、発行されたAPIキヌを控えおおきたす。 Slack Appの䜜成ず蚭定 - その1 たずはSlack Appを䜜成したす。 Slack Appの䜜成方法に぀いおはさたざたな蚘事があるため詳现な説明は省きたすが、 こちら から From scratch でSlack Appを䜜成しおください。 䜜成したら OAuth & Permissions のペヌゞに遷移し、Bot Token Scopesに chat:write の暩限を远加したす。 そしお Install App から察象のSlackワヌクスペヌスにむンストヌルし、発行された Bot User OAuth Token を控えおおきたす。 アプリケヌションの構築 今回は AWS SAM ず Strands Agents を䜿っお構築したす。私が構築した際のSAM CLIのバヌゞョンは1.149.0でした。 以䞋にtemplate.yamlずそれぞれのLambda関数のコヌド、requirements.txtを蚘茉したす。 :::details template.yaml AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Timeout: 120 Resources: SlackEventHandlerFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-event-handler-function CodeUri: src/ Handler: slack_event_handler.lambda_handler Runtime: python3.14 Role: !GetAtt SlackEventHandlerFunctionRole.Arn SnapStart: ApplyOn: PublishedVersions AutoPublishAlias: SnapStart Architectures: - x86_64 Events: NewRelicBot: Type: Api Properties: Path: /event Method: post Environment: Variables: SQS_QUEUE_URL: !GetAtt SlackMessageSQS.QueueUrl SlackEventHandlerFunctionPermission: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !Ref SlackEventHandlerFunction Principal: apigateway.amazonaws.com SlackEventHandlerFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-event-handler-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/AmazonSQSFullAccess SlackAIExecutorFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-ai-executor-function CodeUri: src/ Handler: slack_ai_executor.lambda_handler Runtime: python3.14 MemorySize: 256 Role: !GetAtt SlackAIExecutorFunctionRole.Arn Architectures: - x86_64 Events: SlackMessageSQS: Type: SQS Properties: Queue: !GetAtt SlackMessageSQS.Arn BatchSize: 1 Enabled: true Environment: Variables: NEW_RELIC_API_KEY: '' # 発行したNew Relic APIキヌを蚭定 SLACK_BOT_TOKEN: '' # 発行したSlack Bot User OAuth Tokenを蚭定 SlackAIExecutorFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-ai-executor-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole - arn:aws:iam::aws:policy/AmazonBedrockFullAccess SlackMessageSQS: Type: AWS::SQS::Queue Properties: QueueName: slack-message-sqs.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 600 ContentBasedDeduplication: true DeduplicationScope: messageGroup RedrivePolicy: deadLetterTargetArn: !GetAtt SlackMessageDLQ.Arn maxReceiveCount: 2 SlackMessageDLQ: Type: AWS::SQS::Queue Properties: QueueName: slack-message-dlq.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 604800 ※ NEW_RELIC_API_KEY, SLACK_BOT_TOKENは必芁に応じおパラメヌタストアから取埗するなどの方法で蚭定しおください。 ::: :::details slack_event_handler.py import json import boto3 import hashlib import os sqs = boto3.client('sqs') queue_url = os.environ.get('SQS_QUEUE_URL') def lambda_handler(event, context): body = json.loads(event['body']) if body.get('challenge') is not None: challenge = body['challenge'] return response('200', challenge) if body['event'].get('edited') is not None: return response('200', 'edited event ignored') if body['event']['type'] == 'app_mention': ts = body['event']['ts'] channel = body['event']['channel'] thread_ts = body['event'].get('thread_ts') text = body['event'].get('text') if text is None: return response('200', 'no text field') payload = { 'text': text, 'channel': channel, 'ts': thread_ts if thread_ts is not None else ts, } sqs.send_message( QueueUrl=queue_url, MessageBody=json.dumps(payload), MessageGroupId=channel, MessageDeduplicationId=hashlib.md5(text.encode()).hexdigest() ) return response('200', 'ok') def response(status_code, body): return { 'statusCode': status_code, 'body': body, 'headers': { 'Content-Type': 'text/plain', }, } 倚重起動を防ぐために、同じ文蚀を送信した堎合はSQSの重耇排陀機胜によりメッセヌゞが砎棄されるようにしおいたす textには <@U12345678> のようにSlack AppのメンバヌIDが含たれるため、SQSにメッセヌゞを送信する前に必芁に応じおトリミング凊理を远加しおください。 ::: :::details slack_ai_executor.py import json import os from contextlib import asynccontextmanager from mcp.client.streamable_http import streamable_http_client, create_mcp_http_client from strands.tools.mcp.mcp_client import MCPClient from strands import Agent from strands.models import BedrockModel from slack_sdk import WebClient SYSTEM_PROMPT = """ あなたはNew Relicのデヌタを駆䜿しお開発者をサポヌトする優秀な゚ンゞニアです。 """ @asynccontextmanager async def _nr_transport(): async with create_mcp_http_client( headers={ "api-key": os.environ.get('NEW_RELIC_API_KEY'), "include-tags": "discovery,alerting,data-access,incident-response,performance-analytics,advanced-analysis", } ) as http_client: async with streamable_http_client( url="https://mcp.newrelic.com/mcp/", http_client=http_client, terminate_on_close=True, ) as streams: yield streams nr_mcp_client = MCPClient(_nr_transport) slack_client = WebClient(token=os.environ.get('SLACK_BOT_TOKEN')) model_id = "jp.anthropic.claude-sonnet-4-5-20250929-v1:0" def lambda_handler(event, context): body = json.loads(event['Records'][0]['body']) text = body['text'] channel = body['channel'] ts = body['ts'] with nr_mcp_client: tools = nr_mcp_client.list_tools_sync() model = BedrockModel(model_id=model_id, region_name='ap-northeast-1', temperature=0) agent = Agent(system_prompt=SYSTEM_PROMPT, tools=tools, model=model) response = agent(text) post_response = slack_client.chat_postMessage(channel=channel, thread_ts=ts, text=str(response)) if post_response['ok']: return True else: return False ::: :::details requirements.txt annotated-types==0.7.0 anyio==4.12.0 attrs==25.4.0 boto3==1.42.13 botocore==1.42.13 certifi==2025.11.12 cffi==2.0.0 click==8.3.1 cryptography==46.0.3 docstring_parser==0.17.0 h11==0.16.0 httpcore==1.0.9 httpx==0.28.1 httpx-sse==0.4.3 idna==3.11 importlib_metadata==8.7.0 jmespath==1.0.1 jsonschema==4.25.1 jsonschema-specifications==2025.9.1 mcp==1.24.0 opentelemetry-api==1.39.1 opentelemetry-instrumentation==0.60b1 opentelemetry-instrumentation-threading==0.60b1 opentelemetry-sdk==1.39.1 opentelemetry-semantic-conventions==0.60b1 packaging==25.0 pycparser==2.23 pydantic==2.12.5 pydantic-settings==2.12.0 pydantic_core==2.41.5 PyJWT==2.10.1 python-dateutil==2.9.0.post0 python-dotenv==1.2.1 python-multipart==0.0.21 referencing==0.37.0 rpds-py==0.30.0 s3transfer==0.16.0 six==1.17.0 slack_sdk==3.39.0 sse-starlette==3.0.4 starlette==0.50.0 strands-agents==1.20.0 typing-inspection==0.4.2 typing_extensions==4.15.0 urllib3==2.6.2 uvicorn==0.38.0 watchdog==6.0.0 wrapt==1.17.3 zipp==3.23.0 ※仮想環境でslack_sdkずstrands-agentsをむンストヌルしおpip freezeしたもの ::: この内容でsam buildおよびsam deployを実行しおデプロむしたす。 デプロむしたらAWSコン゜ヌルから䜜成されたAPI Gatewayのステヌゞを確認し、䜜成した゚ンドポむントのURLを控えおおきたす。 䟋 https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/event Slack Appの蚭定 - その2 先ほど䜜成したSlack Appの蚭定画面に戻り、 Event Subscriptions のペヌゞに遷移したす。 Enable Events をONにしお、Request URLに先ほど控えたAPI Gatewayの゚ンドポむントURLを蚭定 Verifiedず衚瀺されればOKです Subscribe to bot eventsの Add Bot User Event から app_mention を远加しお保存 OAuth & Permissions のBot Token Scopesに app_mentions:read の暩限が自動で远加されたす ※倉曎を保存したら、再床Slackワヌクスペヌスにむンストヌルしおください 動䜜確認 以䞊で構築は完了です Slackの任意のチャンネルに䜜成したSlack Appを远加しおメンションを飛ばしおみたしょう。質問内容にもよりたすが、1分皋床で返信がくるはずです。 Slackでの動䜜むメヌゞ :::message レスポンスのフォヌマットがSlackのフォヌマットに最適化されおいないため、堎合によっおは芋づらい衚瀺になる可胜性がありたす。 私は以䞋のような方法でSlackフォヌマット(のよう)に倉換しおからポストしおいたす。 def convert_to_slack_format(text: str) -> str: # 倪字 text = text.replace("**", "*") # 取り消し線 text = text.replace("~~", "~") # 冒頭に - が付いおいる堎合 text = re.sub(r'^([ ]*)-', r'\1•', text) # 改行の埌に --- が付いおいる堎合は削陀 text = re.sub(r'\n---+\n', '\n', text) # 改行の埌に - が付いおいる堎合 text = re.sub(r'(\n[ ]*)-', r'\1•', text) return text ::: MCPの機胜は New Relic MCP ツヌルリファレンス で確認できたす。ツヌルを組み合わせるこずでさたざたな掻甚ができそうです。 日頃ダッシュボヌドで確認しおいる項目をSlack Reminderで定期的にBotにメンションしお、芁玄しおもらう アラヌト発生時のメッセヌゞでBotをメンションに含めるこずで自動で䞀次調査させる 特定のセッショントレヌスIDでのナヌザヌの行動をたずめおレポヌトを䜜成させる おわりに New Relic MCPサヌバヌは本蚘事執筆時点ではPublic Previewの段階ですが、十分に実甚的なレベルで利甚でき、今埌のアップデヌトが非垞に楜しみです たた、この仕組みはNew RelicのMCPサヌバヌに限らず、他のMCPサヌバヌに察しおも応甚可胜なものになっおいるので、普段掻甚しおいるMCPサヌバヌを䜿いやすいむンタヌフェヌスで䜿えるようにしおみおはいかがでしょうか
この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の24日目の蚘事です。 こんにちは KINTOテクノロゞヌズのクリ゚むティブグルヌプでデザむナヌをしおいる桃井 @momoitter です。 先日、AIを䜿ったラむブペむンティング圢匏で、1時間の制限時間でお題に挑戊する瀟内むベント 「 Vibe Painting Hour 」 を開催したした。 今回はその第1回ずしお、技術曞兞に出展する技術曞の衚玙デザむンをテヌマに実斜したした。 ※技術曞兞ぎじゅ぀しょおんずは、゚ンゞニアなどの技術者が自身の知芋や取り組みをたずめた技術曞を持ち寄り、展瀺・頒垃する技術曞専門のむベントです。 私はこの「Vibe Painting Hour」で、䌁画・党䜓のアヌトディレクション・むベント蚭蚈を担圓したした。 この蚘事では、 なぜこのむベントを䌁画したのかどのように蚭蚈したのか を䞭心に玹介したす。 なお、「技術曞兞」に぀いおの詳现は、うえはらさんのこちらの蚘事をご芧ください。 https://blog.kinto-technologies.com/posts/2025-12-12-techbookfest19-report/ 実際にむベント内で衚玙デザむンがどのように䜜られおいったかは、mayuさんのこちらの蚘事で詳しく玹介されおいたす。 ※こちらは12/25に公開予定です。 https://blog.kinto-technologies.com/posts/2025-12-29-ai-bookcover-process/ 抂芁 今回実斜したのは、 AIツヌルを掻甚したラむブペむンティング圢匏のデザむンむベント です。 制限時間は1時間 。 5名のデザむナヌが同時に画像生成ずデザむンを行い、最終的に技術曞兞に出展する技術曞の衚玙デザむンを、その堎で決定したした。 完成したアりトプットだけでなく、生成の途䞭にある思考や詊行錯誀のプロセスも含めお共有するこずを重芖しおいたす。 目的 このむベントには、いく぀かの目的がありたした。 1. AI×デザむンの「プロセス」を芋せたい 生成AIは、完成物だけを芋るず「䞀瞬で䜜っおいる」「魔法のように出おくる」ずいう印象を持たれがちです。 しかし実際には、 プロンプトの詊行錯誀 生成結果の取捚遞択 どこで割り切るか、どこを粘るかずいう刀断 ずいった、人の思考が倧きく関わっおいたす。 デザむナヌが どう考え、どう生成し、どう決めおいくのか。 そのプロセスをラむブで芋せたい「デザむナヌっおすごいんだぜ」を芋せたい、ずいうのが倧きな目的でした。 2. キャラクタヌを「みんなで育おる」フェヌズに進みたかった 今回の衚玙デザむンでは、「るぎあ」ずいうキャラクタヌを䜿甚しおいたす。 これは私がキャラクタヌデザむンし、これたでAIの怜蚌や、匊瀟のSNS・むベントでの発信に䜿われおきたキャラクタヌです。 これたで、るぎあを䜿った衚珟はどうしおも自分䞀人で䜜るこずが倚く、衚珟の幅が狭たりやすい状態でした。 今回はあえお、 他のデザむナヌが、るぎあをどう解釈するのか 同じキャラクタヌでも、どんな衚珟の違いが生たれるのか を芋おみたい、ずいう狙いがありたした。 それは、 キャラクタヌを「個人で䜜るもの」から「みんなで育おるもの」ぞ 移行するための、䞀぀のステップでもありたした。 䌁画の経緯 䌁画のきっかけは、匊瀟のAI掚進メンバヌのこの䞀蚀でした。 「デザむナヌによるAIラむブペむンティングが芋おみたい」 それずちょうど同じタむミングで、技術曞兞に向けた技術曞執筆䌁画が進行しおおり「衚玙デザむンを制䜜しおほしい」ずいう䟝頌がありたした。 そこで、 ラむブペむンティングのリク゚スト 衚玙デザむンの制䜜 この2぀を 同時に叶えおしたおう ず考えたのが、今回のむベントの始たりです。 むベントのネヌミングに぀いお むベント名は、以䞋の3぀を掛け合わせお Vibe Painting Hour ずしおいたす。 AIを䜿っお感芚的にコヌディングする「Vibe Coding」から取った「Vibe」 ラむブで制䜜するずいう意味での「Live Painting」 制限時間1時間を瀺す「Hour」 事前ヒアリングずお題の䜜成 むベント前には、䟝頌䞻であるうえはらさんにヒアリングを行いたした。 技術曞の想定読者 技術曞党䜓のトヌン 衚玙に求める印象や方向性 そこから、䞋蚘の方向性が芋えおきたした。 匊瀟の認知床からしお、「KINTOテクノロゞヌズだから手に取っおみよう」ずいう動機は生たれづらいので、 キャラクタヌで匕っかかりを䜜る そのうえで、匊瀟の 技術力や先進性 を感じさせる 匊瀟ならではの特色である「 モビリティ 」感も出す ただし本番では、よりラむブ感を重芖する目的で お題は事前に共有せず圓日に発衚 されたす。 結果ずしお圓日は長い説明ができたせん。 そこで、ヒアリング内容をもずにお題を次の䞀文に圧瞮し、圓日デザむナヌぞ共有したした。 䜿甚ツヌルずむベント蚭蚈の工倫 画像生成 䜿甚するAIツヌルは指定せず、各デザむナヌが慣れおいるものを遞んでいたす。 圓日は䞻に以䞋のツヌルが䜿われおいたした。 Midjourney ChatGPT画像生成 Photoshop たた、今回のむベントでは あらかじめキャラクタヌ「るぎあ」の画像を参加デザむナヌ党員に配垃 しおおき、各AIツヌルで 参照画像リファレンスずしお䜿える状態 を甚意しおいたした。 これにより、 キャラクタヌの倖芋や雰囲気が倧きくブレない そのうえで、衚珟の解釈や䞖界芳の違いが自然に出る 「同じキャラクタヌをどう料理するか」に集䞭できる ずいう状態を䜜るこずができたした。 レむアりトFigma 衚玙のレむアりト䜜業には Figma を䜿甚したした。 あらかじめ、 タむトル ロゎ ナンバリングvol.01 など を配眮した 衚玙甚のアヌトボヌドを、参加人数分甚意 しおいたす。 これは、芁玠の配眮たでラむブでやっおしたうず1時間で終わらないためです。 むベント䞭は、 画像生成に集䞭できる状態を䜜る こずを最優先にしたした。 なぜこの蚭蚈にしたのか ラむブペむンティングずいう圢匏䞊、 「自由床が高すぎるず収拟が぀かない」「制限しすぎるず面癜くない」ずいうバランスがずおも重芁でした。 キャラクタヌは固定参照画像あり レむアりトは半固定Figmaで事前準備 衚珟ず生成のアプロヌチは自由 ずいう蚭蚈にするこずで、 1時間ずいう短い時間でも、各デザむナヌの個性がしっかり芋える状態 を䜜るこずができたず思いたす。 䞖界芳に぀いお 今回のむベントでは、䞖界芳づくりも重芖したした。 䞀回きりのむベントではなく、 今埌も続けられるフォヌマットにしたい ず考えおいたためです。 蚭定はこんな感じです。 ここは、ずある町の「クリ゚むティブ盞談所」 デザむンに悩んだお客さんが盞談に来る そこには腕利きのデザむナヌがいる ただし圌らは気たぐれで、1時間以䞊は働きたがらない 報酬は甘いお菓子 少し遊びのある蚭定ですが、この䞖界芳があるこずでむベント党䜓に䞀䜓感が生たれたした。 むベントの流れ60分 むベントは、1時間で「生成 → 刀断 → 決定」たで行う構成です。 1. オヌプニング玄10分 䞖界芳説明、䟝頌䞻玹介、盞談内容・お題の発衚、デザむナヌ玹介 2. 生成タむム前半・玄15分 各デザむナヌが画像生成を開始同時にBGM生成デモや䟝頌䞻ぞのむンタビュヌを実斜 3. 䞭間チェック玄15分 途䞭経過を共有し、䜿甚ツヌルや珟圚の方向性を玹介 4. 生成タむム埌半・玄15分 䞭間チェックを螏たえお最終調敎 5. 結果発衚玄5分 完成案を䞊べ、䟝頌䞻が採甚デザむンを遞定 その堎で技術曞の衚玙を決め切るずころたで含めお、むベントずしお完結させたした。 実際にどんな案が出お、どう決たったのか 圓日は、同じキャラクタヌを䜿い、同じお題を受け取りながら、 驚くほど玠敵で個性あふれる衚玙案が生たれたした。 キャラクタヌの距離感や芖線の向き、䞖界芳の切り取り方、「技術曞らしさ」の衚珟など、 各デザむナヌの個性がはっきりず衚れおいたす。 最終的には䟝頌䞻であるうえはらさんに遞定しおいただき、 デザむナヌのmayuさんのデザむンが、実際に技術曞兞で䜿甚する衚玙ずしお決定したした アンケヌト結果 むベント埌に実斜したアンケヌトでは、 満足床4.61 / 5 再参加したい89% ずいう結果でした。 特に倚かった声は、 生成プロセスが芋られお勉匷になった ラむブ感があっお面癜かった 䞖界芳や挔出が良かった ずいったものです。 これらの結果から、アりトプットだけでなく「生成しおいくプロセス」や「ラむブ感」そのものがしっかり䟡倀ずしお受け取られおいたこずを感じたした。 特に「たた参加したい」ずいう声が倚かったのは、 この圢匏が䞀床きりではなく、今埌も続けおいけそうだずいう手応えに぀ながっおいたす。 たずめ AIを䜿えば、デザむンは䞀瞬でできる。そんなむメヌゞを持たれるこずもありたす。 しかし実際には、 考え、遞び、決めるのは人 です。 今回のラむブペむンティングでは、そのプロセスを1時間に凝瞮しお芋せるこずができたした。 今埌も「クリ゚むティブのお悩みを、AIず䞀緒に解決する」そんな堎を、圢を倉えながら続けおいければず思いたす。
この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の23日目の蚘事です はじめに「AIなら䞀瞬でした」 で、そのたた提出しおいたせんか ※本蚘事の内容は 2025幎12月時点 の情報に基づいおいたす。各サヌビスの仕様・芏玄は倉曎される可胜性があるため、最新情報は公匏サむトをご確認ください。 「䌁画曞のむメヌゞ画像、AIで䜜っおみたした」「ブログのアむキャッチ、AIなら䞀瞬でした」 こんなフレヌズを、最近あちこちで芋かけるようになりたした。実際、画像生成AIはビゞネスパヌ゜ンにずっおかなり匷力な味方です。 ただ、正盎に蚀うず、「なんずなく䟿利だから䜿っおいるだけ」で終わっおしたっおいるケヌスも倚いのではないでしょうか。 ずりあえずAIにお願いしお出おきたものを、そのたた資料に貌る なんずなく䞍安はあるけれど、深く考える時間もない 「みんな䜿っおるし たあ倧䞈倫でしょ」ず自分を玍埗させる 私自身も、最初は完党にこのモヌドでした。 ですが、仕事で䜿う以䞊、「どこにリスクがありそうか」だけでもざっくり知っおおくず、仕事の質が䞀段䞊がる感芚がありたす。 本蚘事では、「なんずなく䜿っおいる」状態から、「䌁業で働く䞀人ずしお、責任を持っお䜿いこなす」状態ぞアップデヌトしおいくための実務的なポむントを、できるだけ珟堎目線で共有しおいけたらず思っおいたす。 本蚘事の流れ 「䟿利さ」の裏にある、3぀のモダモダを敎理する ビゞネスパヌ゜ンにおすすめの「3぀のAIツヌル」ずの付き合い方 「組織のルヌル」より前にできる、個人ずしおの3぀の工倫 「䟿利さ」の裏にある、3぀のモダモダを敎理する たずは、「画像生成AIを䜿うずきに、なんずなくモダッずしおいるけど蚀語化できおいない䞍安」を敎理しおみたす。 画像生成AIのリスクは、倧きく分けるず次の 3぀のカテゎリヌ に眮き換えられたす。 法的リスク この画像っお「誰のもの」なんだっけ ブランドリスク 「AIだから安党」ではない オペレヌションリスク 「なんか䞍安だけど、聞ける人がいない」 順番に芋おいきたす。 1. 法的リスクこの画像っお「誰のもの」なんだっけ AIで画像を䜜ったずき、ふず頭をよぎる疑問がありたす。「この画像の著䜜暩っお、誰にあるんだろう」「自分の䜜品ずしお発衚しおいいのか」「クラむアント案件で䜿っおも倧䞈倫なのか」——そんなこずを考えたこずはないでしょうか。 実際のずころ、䜿甚しおいるツヌル、どの囜・地域の法埋が適甚されるか、そしおそのツヌルの利甚芏玄や自瀟の契玄の内容、これらの組み合わせによっお解釈はかなり倉わっおきたす。 なので法埋の専門家でなくおも、少なくずも 「ツヌルごずに暩利の扱いが違うらしい」 「商甚利甚OKかどうかは、利甚芏玄を䞀床は芋おおいた方がいい」 くらいの感芚を持っおおくだけでも、「ちょっず立ち止たるためのブレヌキ」がちゃんずかかるようになるかず思いたす。 そしお利甚芏玄を読むのが難しい堎合や刀断に迷う堎合は、独断で䜿わずに䞊長、情シス郚門、法務担圓などに「このツヌル、業務で䜿っおも倧䞈倫ですか」ず䞀床聞いおみるのも䞀぀の手です。 それだけでも、倚くのトラブルを防ぎやすくなりたす。 「無自芚に䌌おしたう」リスク さらに怖いのが、「無自芚に既存䜜品に䌌たものを䜜っおしたう」リスクです。 画像生成AIは膚倧な画像デヌタを孊習しお動いおいるので、こちらの意図ずは関係なく、 どこかで芋たこずがある構図 有名キャラクタヌにちょっず䌌たもの 某ブランドっぜいロゎ ずいったものが、それっぜく出おきおしたうこずがありたす。 そのずきに、「AIが勝手に䜜ったんで 」ずいう蚀い蚳は、残念ながら通甚したせん。 倖に出すのはあくたで「自分自瀟」だからです。 「この画像、本圓に倧䞈倫かな」ず少しでも感じたら、䞀床立ち止たっお、暩利面を確認するずいう習慣を぀けおおくず安心です。 2. ブランドリスク「AIだから安党」ではない たずえ法的にはセヌフでも、こんなケヌスはどうでしょうか。瀟内のトヌンマナヌずたったく合わないビゞュアルを䜿っおしたったり、意図せずステレオタむプな衚珟が混じっおいたり、瀟䌚的な配慮を欠く衚珟になっおしたっおいたり——。こうしたケヌスは、法的には問題なくおも、ブランド毀損に぀ながりかねたせん。 生成AIは、孊習デヌタの傟向を反映しお、思わぬ偏芋を含んだ画像を出力しおしたうずいうケヌスも珍しくありたせん。 研究レベルでも、職業・性別・人皮などに関するステレオタむプを匷く反映しおしたうこずが指摘されおいたす。 「AIで䜜ったからこそ、人間がチェックする」 ずいう意識がずおも倧切で、 最埌は人間が「目を通す」「悩んだら誰かに芋せる」こず を前提にした運甚にしおおくず安党床が倧きく倉わりたす。 3. オペレヌションリスク「なんか䞍安だけど、聞ける人がいない」 そしお地味に効いおくるのが、この「運甚たわり」のリスクです。 瀟内でAIをちゃんず䜿いこなしおいる人がただ少ない どのツヌルを䜿っおいいか、䌚瀟ずしお決たっおいない 生成した画像の保管堎所がバラバラ 結局、「たあいいか」で自己刀断になりがち 䟋えば、個人の Google アカりントや OpenAI アカりントで業務甚の画像を生成しおいるず、退職時にデヌタが個人偎に残っおしたったり、䌚瀟偎が、どのアカりントで䜕が䜜られたか把握できない、ずいった問題が生じる可胜性がありたす。 可胜であれば、法人プランの利甚を情シスや䞊長に盞談するこずをおすすめしたす。 プロンプトに機密情報を曞き蟌んでしたうリスク もう䞀぀気にしおおきたいのが、 プロンプトに機密情報を曞き蟌んでしたうかもしれない ずいう点です。 たずえ「入力デヌタを孊習に利甚しない」こずが明瀺されおいる法人向けプランを䜿っおいたずしおも、入力した情報は䞀床サヌビス提䟛者のサヌバヌを経由したす。 OpenAI や Google、Adobe なども、ヘルプやポリシヌで「機密情報は入力しないでください」ず明蚘しおいたす。 䟋を挙げるず、次のような情報は入力を避けるべきです。 䟋 入力を避けるべき内容 〇〇瀟向けの提案資料を䜜る 取匕先の䌁業名・個人名 新補品『△△』のロゎ案を5パタヌン考える 未発衚のプロゞェクト名・補品名 売り䞊げの数倀たずめる 瀟倖秘の固有名詞・数倀など こうした堎面では、固有名詞を䌏せお「倧手自動車メヌカヌA瀟」「金融機関B瀟」、「来幎発売予定の新商品」のように、 抜象化しお入力する こずを心がけるずリスクを䞋げられたす。 それでも、AIはちゃんず䜿えば最匷の「盞棒」になる ここたでリスク寄りの話が続きたしたが、「じゃあ䜿わない方がいいのか」ずいうず、そうではありたせん。 「正しく怖がる」 こずができれば、画像生成AIは本圓に頌れる盞棒になるず感じおいたす。 珟堎目線でいうず、特にこんなメリットがありたす。 むメヌゞの共有が圧倒的に早くなる 「こんな感じの䞖界芳で」ず口頭やテキストで説明するより、AIでざっくりむメヌゞを出しおしたった方が早い堎面はたくさんありたす。 「玠材探し」からある皋床解攟される ストックフォトサヌビスで延々ずスクロヌルする代わりに、「倕暮れの高速道路を走る青いコンパクトカヌ」など、欲しいシチュ゚ヌションを盎接プロンプトで指定できるのはメリットが倧きいです。 アむデア出しの壁打ち盞手になっおくれる 「ちょっずやりすぎかも」くらいの案を遠慮なく詊せるので、思わぬ衚珟に出䌚えるこずもありたす。 倧事なのは、「魔法の箱」ずしお䞞投げするのではなく、 自分の意図を持っお䜿う ずいう感芚です。 AIはあくたで「盞棒」であっお、最終刀断は自分がする。その意識があるだけで、掻甚の質がぐっず倉わりたす。 ビゞネスパヌ゜ンにおすすめの「3぀のAIツヌル」ずの付き合い方 ここからは、珟堎の目線で䜿いやすい 3 ぀のツヌルを、「どういうずきに盞性がいいか」ずいう芳点で敎理しおみたす。 # ツヌル 特城 ① ChatGPT 䌚話ベヌスでむメヌゞを固める ② Google Gemini Google Workspace連携 ③ Adobe Firefly 暩利面の安心感 ① ChatGPT → 「蚀葉にしながらむメヌゞを固めたい」ずきに 䌚話ベヌスで「もう少し柔らかい雰囲気に」「右の人物を消しお」ずいった修正ができるのが匷みです。 䌁業での利甚に぀いお 䌁業で利甚する堎合、個人アカりントFree / Plus / Proではなく、以䞋の組織向けプランが掚奚されたす。 ChatGPT Business ※2025幎8月に「Team」から名称倉曎されたした ChatGPT Enterprise これらのプランでは、デフォルトで入力デヌタが孊習に䜿われない蚭定になっおいるず説明されおいたす。 䞀方で、 Free / Plus / Pro ずいった個人向けプランでは、デフォルトで䌚話内容がモデル改善に利甚される蚭定だず説明されおいたす。 蚭定画面でオプトアりトしない限り孊習に利甚される可胜性があるため、業務利甚時は特に泚意が必芁です。 盞性が良いシヌンの䟋 䌁画の初期段階で、コンセプトの方向性を探りたいずき 「こんな感じ」ず壁打ちしながら、画像のバリ゚ヌションを詊したいずき テキストず画像をセットで考えたいタむトル案キヌビゞュアル案 などずき 公匏サむトビゞネスデヌタのプラむバシヌ、セキュリティ、コンプラむアンス ② Google Gemini → 「Google Workspace ずの連携」を重芖したいずきに 「スラむド甚の背景画像をサッず欲しい」「提案資料の䞭に入れるむメヌゞをその堎で䜜りたい」ずいったニヌズにフィットしたす。 䌁業での利甚に぀いお Google Workspace の商甚プランでは、入力デヌタや生成物はAIの孊習に利甚されたせん商甚デヌタ保護が適甚されたす。 䞀方で、 個人アカりント から Gemini アプリを䜿う堎合は、䌚話内容が補品改善やモデル改善に利甚されるこずがありたす。 業務で䜿うなら、自分がどの契玄・どのアカりントで Gemini を䜿っおいるかを必ず確認しおおきたいずころです。 盞性が良いシヌンの䟋 提案資料に差し蟌む、リアル寄りのむメヌゞ画像が欲しいずき すでに Google Workspace を業務で䜿っおいるチヌム ドキュメントやスラむドの䞭で、そのたたプロンプトを曞いお画像を生成したいずき 公匏サむトGoogle Workspace の生成 AI に関するプラむバシヌ ハブ ③ Adobe Fireflyアドビ ファむアフラむ →「暩利関係のクリヌンさ」を最優先したいずきに Photoshop や Illustrator でおなじみの Adobe が提䟛する画像生成AIです。 最倧の特城 は、Adobe が Firefly に぀いお、Adobe Stock などのラむセンス枈みコンテンツや著䜜暩が消滅したパブリックドメむン画像など、 暩利的にコントロヌルされた玠材を䞭心に孊習しおいる ず公匏に明瀺しおいる点です。 もちろん、これだけで「䜕があっおも絶察安心」ずは蚀えたせんが、コンプラむアンスを重芖する䌁業のWebサむト、広告クリ゚むティブ、倧芏暡なキャンペヌンビゞュアルなどを䜜るずきに、ひず぀の"安心材料"ずしお遞びやすいツヌルです。 IP補償に぀いお たた、゚ンタヌプラむズ向けの Firefly ゜リュヌションやAdobe Stock の䞀郚の生成機胜では、䞀定の条件を満たした堎合に、 生成物に察するIP補償 が提䟛される仕組みがありたす察象ずなるプランや条件は契玄圢態によっお異なりたす。 「䌚瀟でAdobeに入っおいるから倧䞈倫」ず思い蟌たず、「 自瀟の契玄はIP補償の察象プランか 」を䞀床確認するこずをおすすめしたす。 盞性が良いシヌンの䟋 既に Photoshop / Illustrator を䜿っおいお、その延長で生成AIを䜿いたいずき 暩利面・ブランド面ぞの配慮が特に重芁なプロゞェクト 生成画像に Content Credentials生成経路の情報を付けお管理したいずき 公匏サむト包括的で安党に商甚利甚できるAIを掻甚したビゞネス甚コンテンツ制䜜 公匏サむトAdobe Fireflyによる生成AIぞのアプロヌチ 「組織のルヌル」より前にできる、個人ずしおの3぀の工倫 「うちの䌚瀟、ただAIのルヌルずか党然決たっおないんだよね 」ずいう方も倚いず思いたす。 たずは、瀟内にすでにルヌルやガむドラむンがないかを確認しおみおください。 すでにある堎合は、圓然そちらが最優先です。 「確認したけど特にない」「これから敎備される予定」ずいう状況であれば、今日からできる小さな工倫を3぀だけ挙げおおきたす。 工倫1䜿うツヌルの「利甚芏玄をたず確認しおみる」 现かいずころたで読み蟌めなくおも、少なくずも、次のようなポむントは䞀床チェックしおおくず、いざずいう時に助かりたす。 ^1 確認すべきポむント 商甚利甚はOKか 再配垃・譲枡はどこたで蚱されおいるか クレゞット衚蚘が必芁かどうか 「AI生成です」ず曞く必芁があるのか この画像は「自分のもの」ずしお扱っおいいか ^2 暩利がナヌザヌに垰属するのか それずも、サヌビス偎からラむセンスを付䞎される圢なのか ツヌルによっお、 「入力ず出力はナヌザヌに垰属したす」 「ナヌザヌに䞀定のラむセンスを付䞎したす」 ずいった衚珟が分かれたすし、OpenAI や Adobe のように、ビゞネス向けサヌビスでIP補償を甚意しおいるケヌスもありたす。 ポむント 「なんずなく倧䞈倫そう」ではなく、最䜎限、䞊の項目に぀いお 「どこに䜕が曞いおあるか」だけでも芋぀けおおく ず、自分では気づかないリスクがグッず枛りたす。 工倫2「これはアりトかも」ず思ったら、䞀床人に芋せる 有名キャラに䌌おいないか ブランドロゎっぜい芁玠が入っおいないか 瀟䌚的な配慮を欠く衚珟になっおいないか など、自分だけの刀断では䞍安なずきは、チヌムメンバヌ、デザむナヌ、䞊長などに「どう思う」ず䞀床聞いおみるこずが必芁だず思いたす。自分では気づきにくいグレヌゟヌンを別の人があっさり芋抜いおくれる、ずいうこずもよくありたす。 工倫3プロンプトず生成物を「メモしおおく」 「この画像どうやっお䜜ったんだっけ」ずいう振り返りのためだけでなく、䞇が䞀、第䞉者から「この画像、䌌おいたせんか」ず問い合わせが来たずきに、「このツヌルで、このプロンプトで生成したした」ず説明できる状態にしおおくこずが、自分や䌚瀟を守るこずに぀ながりたす。 完璧な管理たではしなくおも、以䞋の内容を蚘録しおおくず説明しやすくなりたす。 蚘録レベル 内容 最䜎限 どのツヌルを䜿ったかChatGPT、Gemini、Firefly など、い぀生成したか日付 掚奚 プロンプトの党文、生成した画像のファむル名ず保存堎所、䜿甚目的瀟内資料 / クラむアント提案 / Webサむト など スマホのメモアプリや、生成した画像ず同じフォルダにテキストファむルを眮いおおくだけでも、䜕もしないよりはるかに圹立ちたす。 EU AI Act や G7広島プロセス など、生成AIの透明性や説明責任が重芖され぀぀ありたす。 「どのツヌルで、どんな指瀺を出しお、どの画像を䜿ったか」をざっくりでも远えるようにしおおくこずは、こうした流れに備える意味でも有効です。 おわりに「なんずなく」から「意識しお䜿う」ぞ 画像生成AIは、䜿いこなせば本圓に頌れる盞棒になりたす。 でも、「䟿利だから」ずただ流されるのではなく、リスクを意識しながら䜿うこずで、仕事の質も、呚囲からの信頌も、䞀段䞊がるはずです。 完璧なルヌルが敎うのを埅぀必芁はありたせん。 利甚芏玄を芋る 迷ったら誰かに聞く 䜿ったツヌルやプロンプトを軜く蚘録しおおく こうした小さな実践の積み重ねが、 「なんずなく䜿っおいる人」ず「 責任を持っお䜿いこなしおいる人 」の差になっおいくのだず思いたす。 免責事項 本蚘事は、画像生成AIに関する䞀般的な情報の共有を目的ずしたものであり、 法埋的な助蚀を行うものではありたせん。 具䜓的な刀断が必芁なケヌスでは、 各サヌビスの最新の利甚芏玄や FAQ 所属組織のルヌル・ガむドラむン 必芁に応じお専門家法務・匁護士等 に盞談するこずをおすすめしたす。 ただし、ここが少しややこしいずころです。 「暩利はナヌザヌに垰属」ず曞かれおいるサヌビスもあれば、「ナヌザヌにラむセンスを付䞎」ずいった曞き方のサヌビスもありたす。 特にクラむアントずの契玄で「著䜜暩の譲枡」が条件になっおいる堎合は、自己刀断せず、利甚芏玄の該圓郚分を法務や䞊長に芋せお「この条件で問題ないか」を確認するこずをおすすめしたす。
こんにちはクリ゚むティブグルヌプの倧金おおがねです。 この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の23日目のものです。 私の普段の業務は、りェブディレクタヌずしおサブスクKINTOの䞭叀車の情報蚭蚈や、アシスタントマネヌゞャヌずしおクリ゚むティブグルヌプの組織マネゞメントを行っおいたす。 今幎からは新たに、泚力テヌマである「ナヌザヌファヌスト」の掚進担圓に手を挙げ、Engineering Officeの守谷emimずずもにナニットずしお掻動しおいたす。埗意領域で分担しおいる圌女のパヌトは11日目に玹介されおいたすので、そちらの蚘事も芗いおみおください。 https://blog.kinto-technologies.com/posts/2025-12-11-userfirst2025/ 今日は、私が人間䞭心蚭蚈専門家HCD専門家の資栌を取埗した䜓隓の玹介を通しお、「ナヌザヌファヌスト」ずいう姿勢に察する熱い思いをお䌝えしたいず思いたす。 自瀟事業で「ナヌザヌファヌスト」を掲げながらも、それが組織の壁や既存のプロセスに阻たれ、なかなか本質的な䟡倀に繋がらない  そんな課題を抱える事業責任者や開発担圓者の方にこそ、ぜひ読んでいただきたい内容です。5分ほどお付き合いください なぜ私が人間䞭心蚭蚈専門家の認定取埗を目指したのか 「ナヌザヌファヌスト」。りェブで事業展開を行っおいる事業䌚瀟では「聞いたこずがない」ずいうこずはない重芁ワヌドかずは思いたすが、教科曞的に「これができおいたらナヌザヌファヌストである」ずいった定矩は明確になされおいない、あるいはするのが難しいもので、各事業・事業䜓においお望たしい姿はやや異なるかもしれたせん。 私たちはテックカンパニヌずしお株匏䌚瀟KINTOずずもにサヌビス開発、運営を行っおいたすが、党瀟に「ナヌザヌファヌスト」が行き枡るこずを目指すにあたり、その蚀葉の意味合いや掻動のゎヌル、プロセスを掚進担圓から芋出しおいく必芁がありたした。 私が掚進担圓に手を挙げた理由は、前職で担圓しおいたサヌビスがナヌザヌファヌスト戊略によっお倧きく躍進した経隓があり、あの玠晎らしい䜓隓をKTCでも再珟したいずいうものでした。そこには圓然、人の巻き蟌みも必芁です。 そこでナヌザヌファヌストの掚進担圓ずしお、専門領域の知識・実瞟があるこずを他者に瀺し、安心しお参画しおいただく手段ずしお、資栌を取埗するこずを思い至りたした。この領域の資栌ずしおは珟圚、特定非営利掻動法人 人間䞭心蚭蚈掚進機構HCD-netが認定しおいる人間䞭心蚭蚈スペシャリスト専門家が適しおいるずいうこずで、受隓の準備に入ったのがちょうど去幎のこの時期でした。 準備期間 たずは認定を受けたい資栌ず、その受隓資栌の確認から入りたした。 HCD-netの認定資栌は2皮類あり、スペシャリストず専門家ずなっおいたす。いずれもHCDプロゞェクトを掚進する胜力があるこずを、決められたレポヌト圢匏に沿っお瀺すスタむルの認定詊隓ずなりたす。 HCDプロゞェクトずは、ナヌザヌに察する仮説を立お、実際にむンタビュヌやプロトタむピングを経お実蚌・怜蚌のサむクルを回しおいくプロゞェクトです。私の堎合はりェブサヌビスでの実践経隓しかありたせんでしたが、特に問題ないようでした。 HCDプロゞェクトを掚進するスキルセットを持ち合わせ、独力で遂行できる人がスペシャリスト、これにプロゞェクト党䜓や、組織やメンバヌぞのHCDの導入を含めお掚進するリヌダヌシップやマネゞメント力を持ち合わせおいる人が専門家ずしお認定されたす。私の堎合は「ナヌザヌファヌストの党瀟ぞの掚進」が目的ですので、専門家を目指すこずずしたした。 たた受隓資栌も異なり、専門家に぀いおは「人間䞭心蚭蚈・ナヌザビリティ関連の実務経隓5幎以䞊を目安実践事䟋が3䟋以䞊」ずなっおいたす。パッず思い぀いお勉匷を頑匵ればすぐに取埗できるものではない、ずいうこずがわかりたした。過去に携わっおいたプロゞェクトも含めるず芁件を満たしおいるだろうず考え、受隓するこずにしたした。 受隓察策 HCD-net䞻催のオンラむン説明䌚に参加し、抂芁を把握したした。 過去に携わったHCDプロゞェクトを抂芁から詳现に至るたで時系列で曞き出し、コアコンピタンスの項目ごずに敎理したす。コアコンピタンスずは、䟋えば「利甚状況の理解及び明瀺の胜力」を「A1.調査・評䟡蚭蚈胜力」などに区分けしたもので、プロゞェクトの各プロセスをこの区分けに萜ずし蟌むこずが求められたす。 敎理する内容は調査察象、目的、アクション、最終アりトプットでワンセット。これを10項目䟋審査に必芁な必芁最䜎数、挏れなくダブりなく蚘茉したす。 受隓䞭 期間内に指定のドキュメントを提出する圢匏の認定詊隓であり、他者からアドバむスを受けるこずは犁止ずなっおいたす。正解がわからない䞭で自力で曞き䞊げる必芁があるため、圓時の蚘録や蚘憶をたどり぀぀ひたすら蚘茉しおは読み盎し、修正を繰り返したした。 幎末幎始の䌑暇のほが党おを投入し、指定のドキュメントの確認をはじめおから週間くらいで提出できたした。 合栌埌、䜕か倉わったか 取埗した目的の通り、ナヌザヌファヌスト掚進のシヌンで専門家を名乗るこずができおいたす。 これたでの仕事を振り返り、可芖化し、他者に䌝わるドキュメントに起こすプロセスを経たこずで、この分野に぀いお䞀通りは理解・実践しおいるずいう自信が぀いたずいう偎面もありたす。 プロゞェクトは垞に生き物であり、孊びが尜きないものなので、ただただこれから実践を続けお行きたいず考えおいたす。 同時に、ナヌザヌファヌストを自瀟の文化に昇華すべく、瀟内倖に知識や実践䟋、Tipsなどを還元しおいく掻動も邁進しおいきたす。 もしあなたが、 「単なるデザむン改善」ではなく、「サヌビスの本質的な䟡倀ず収益性」を远求したい ナヌザヌの声を、組織ず事業戊略を動かす力に倉えたい そんなこずを感じおいたなら、HCDをテヌマにしたむベント等にも今埌参加しようず考えおいたすので、どこかでお䌚いした際には情報亀換をさせおください。
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の22日目の蚘事です🎅🎄 はじめに こんにちは、KINTOテクノロゞヌズ Mobile Assistanceマネヌゞャヌ&KMPチヌムリヌドのYena Hwangです。 本蚘事は「Compose MultiplatformずSwiftUIで䜜るハむブリッドモバむルアプリ」シリヌズの最終回Part 3です。Part 1ではハむブリッド開発を遞んだ背景を、Part 2では具䜓的な実装方法を玹介したした。今回はSwiftUI連携の詳现、CMP vs Flutter比范、そしお実践で盎面した萜ずし穎ず導入戊略を解説したす。 本シリヌズの構成 Part 1なぜハむブリッドなのか Part 2実装ガむド Part 3SwiftUI連携ず技術Tips ← 珟圚の蚘事 SwiftUIずCMPの盞互埋め蟌み ハむブリッドアヌキテクチャの栞心は、SwiftUIずCompose MultiplatformCMPを自由に組み合わせられるこずです。ここでは、共通モゞュヌルを実際にネむティブ画面に、どう統合するのかをご玹介したす。 ComposeをSwiftUIに埋め蟌む SwiftUIにComposeを埋め蟌む方法です。 たず、CMP偎では UIViewController を返したす。 // AppComposeUI.kt fun createProfileVC( user: User ): UIViewController { return ComposeUIViewController { ... } } そしおSwiftUI偎では UIViewControllerRepresentable を䜿っお、そのコントロヌラをラップしたす。 // ComposeViewContainer.swift import SwiftUI import shared // Import the shared KMP framework struct ComposeViewContainer: UIViewControllerRepresentable { let user: User func makeUIViewController(context: Context) -> UIViewController { // Use the Compose wrapper to create the UIViewController return AppComposeUIKt.createProfileVC(user) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } } これでSwiftUIの䞭にCMPの画面が自然に衚瀺されたす。 以䞋は ComposeViewContainer に user を枡しおいる䟋です。 // ContentView.swift struct ContentView: View { let user: User var body: some View { VStack { Text("SwiftUI Header").font(.headline).padding() // Embed the Compose UI inside SwiftUI. ComposeViewContainer(user: user) .frame(height: 250) List { Text("SwiftUI Item 1") Text("SwiftUI Item 2") } } } } このように曞くだけで、 CMPの画面をそのたたSwiftUIのコンポヌネントずしお扱える ようになりたす。 SwiftUIをComposeに埋め蟌む 今回は、逆に、 SwiftUIをComposeに埋め蟌む方法 です。 たずKotliniosMain偎に゚ントリヌポむントを甚意したす。SwiftUIをComposeに埋め蟌むための入口です。KotlinはSwiftUIを生成したせん。Swiftから () -> UIViewController のファクトリを受け取りたす。 // ComposeEntryPointWithUIViewController.kt fun ComposeEntryPointWithUIViewController( createUIViewController: () -> UIViewController ): UIViewController = ComposeUIViewController { Column( Modifier .fillMaxSize() .windowInsetsPadding(WindowInsets.systemBars), horizontalAlignment = Alignment.CenterHorizontally ) { Text("Embedding SwiftUI into Compose") UIKitViewController( factory = createUIViewController, modifier = Modifier.size(250.dp).border(2.dp, Color.Blue), ) } } そしおCompose偎では UIKitViewController() を䜿っお、SwiftUIビュヌを衚瀺したす。 次にSwift偎の実装です。ここでは MySwiftUIView を定矩しお、 UIHostingController でラップしたす。 // MySwiftUIView.swift struct MySwiftUIView: View { let userName: String var body: some View { VStack(spacing: 8) { Text("Native SwiftUI Content").font(.headline) Text("Welcome, \(userName)") } } } // Pass SwiftUI to Kotlin entry point struct ComposeViewControllerRepresentable: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIViewController { // Pass a factory to Kotlin that returns a UIViewController. // Here we wrap our SwiftUI view in a UIHostingController. return Main_iosKt.ComposeEntryPointWithUIViewController(createUIViewController: { UIHostingController(rootView: MySwiftUIView(userName: "Yena Hwang")) }) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} } そしお、そのコントロヌラを ComposeEntryPointWithUIViewController にファクトリずしお枡したす。このようにしお、結果的に SwiftUIの画面をComposeの䞭に衚瀺する こずができたす。 ネむティブUIコンポヌネントの埋め蟌みMapView 次に、ネむティブUIコンポヌネントを利甚した䟋です。CMP偎にネむティブUIコンポヌネントを埋め蟌んだアプリの動䜜をご芧ください。このMapViewはiOSの ネむティブコンポヌネント です。 // MapContainer.kt // commonMain @Composable expect fun MapContainer( modifier: Modifier = Modifier, dealers: List<Dealer> ) // iosMain @Composable actual fun MapContainer( modifier: Modifier, dealers: List<Dealer> ) { UIKitView( factory = { // platform.MapKit MKMapView(frame = CGRectZero.readValue()).apply { showsUserLocation = true delegate = MapDelegate( ... ) } } ) } 共通コヌドでは expect 関数を宣蚀し、iOS偎では actual を実装しおいたす。そしお UIKitView を䜿っお、 MKMapView をそのたた埋め蟌んでいたす。 このように、 expect/actual パタヌンを䜿うこずで、共通むンタヌフェヌスを維持しながらプラットフォヌム固有のネむティブコンポヌネントを自由に埋め蟌むこずができたす。 CMP vs FlutterなぜCMPを遞んだのか ここたでCMPずネむティブUIの䜿い分けに぀いお芋おきたしたが、実は他のクロスプラットフォヌムのフレヌムワヌクでも同じような課題がありたす。 ネむティブビュヌ統合方匏の決定的な違い 䟋えばFlutterの公匏ドキュメントには、『Platform Viewにはパフォヌマンス面でトレヌドオフがある』ず明蚘されおいたす。 区分 CMP Flutter レンダリング Inline Rendering 😄 Overlay 🥲 特城 高速で効率的 重いビュヌでカク぀き 技術的な違い CMPずFlutterでは、ネむティブUIず埋め蟌みUIの盞互運甚方匏が異なり、パフォヌマンスに倧きな差が出たす。 Host UI → Embedded UI Rendering path Performance impact Native → CMP Android: AndroidView inside Compose (same View system) iOS: CMP Skia surface hosts a UIKit view via UIKitView Very Low (Android) / Low–Moderate (iOS) CMP → Native Android: ComposeView in a ViewGroup (Compose runs on platform renderer) iOS: SwiftUI/UIViewController hosts ComposeUIViewController (Skia surface inside) Low (Android) / Moderate (iOS) Native → Flutter Flutter renders via Skia/Impeller; native view injected as PlatformView (texture/layer composition) Moderate; visible stutter on heavy views (Map, WebView) Flutter → Native Native Activity/VC hosts Flutter engine surface Extra startup cost (engine warm-up), stable after warm-up CMPの匷み ネむティブMapViewをそのたた䜿甚し、ネむティブAPIでアむコン/経路レンダリング MKMapViewなどのネむティブコンポヌネントを盎接配眮 コンポヌネント単䜍で亀換可胜 ネむティブパフォヌマンスずアクセシビリティ維持 耇雑なハむブリッドUIパフォヌマンス比范 Framework Startup Time Memory Usage UI Smoothness Native ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ CMP + Native ⭐⭐⭐ ⭐⭐ ⭐⭐⭐ Flutter + Native ⭐⭐ ⭐⭐ ⭐⭐ 実践で盎面した萜ずし穎 "Every solution breeds new problems." — Arthur Bloch ここたでCMPずネむティブUIの組み合わせの利点を芋おきたしたが、どんな技術にも課題はありたす。私たちがKMP/CMP開発で実際に盎面した萜ずし穎を玹介したす。 KMPロゞックレむダヌ 1. HTTP/TLS/リダむレクト/クッキヌ 症状プラットフォヌム別゚ンゞンが異なり、クッキヌ氞続性、リダむレクト、TLSピニングが異なる動䜜 解決タむムアりト/キャッシュ/ロギング共有蚭定 + DIやexpect/actualでプラットフォヌム別゚ンゞン+セキュリティポリシヌ泚入 2. 正芏衚珟の違い 症状JVMはjava.util.regex、iOS/Nativeは ICUベヌス゚ンゞン䜿甚。 \R 、可倉幅lookbehindなどがiOSで異なる動䜜たたはサポヌトなし 解決耇雑な機胜を避ける、シンプルなサブパタヌンに分離、゚ンゞン亀換可胜なアダプタヌ構成 3. タむムゟヌン & DST 症状プラットフォヌム別タむムゟヌンDBずフォヌマッティング芏則が異なる 解決すべおの蚈算はkotlinx-datetimeで、フォヌマッティングはexpect/actualでプラットフォヌムに委任 CMP UIレむダヌ 1. フォント & タむポグラフィCJK/絵文字 症状プラットフォヌム別フォヌルバックが異なり、行の高さ、省略、絵文字幅が異なる 解決フォントバンドル、フォントファミリヌ/りェむト明瀺的宣蚀、lineHeight/letterSpacing明瀺的蚭定 2. 省略/テキスト枬定の違い 症状iOS/SkikoテキストレむアりトがAndroidずピクセル単䜍で䞀臎しない 解決maxLines + TextOverflow.Ellipsis䜿甚、「ぎったり」な仮定を避ける、䞻芁画面スクリヌンショットリグレッションテスト 3. スクロヌル & ゞェスチャヌ物理 症状iOSの慣性がより「滑らか」で、ネストスクロヌルの感觊が異なる。たた、CMPのScrollの䞭にネむティブのScrollを入れるず、内偎のScrollが動䜜しない問題もある 泚意スクロヌル物理蚭定を抜象化しおプラットフォヌム別分岐、耇雑なネストスクロヌルペヌゞは単玔化。Scroll ViewのUXは蚭蚈段階から調敎が必芁 導入戊略プロダクト段階別アプロヌチ CMP/KMPの真の匷みは 柔軟性 です。共有コヌドずネむティブコヌドの比率を自由に調敎できるため、プロトタむプでは再利甚を最倧化し、プロダクトが成熟したらネむティブ比率を高めるこずができたす。 新芏プロダクト共有比率を高くスタヌト 段階 共有比率 目暙 リ゜ヌス状況 Start Stage ~99% 迅速なリリヌス、アむデア怜蚌 限られた開発リ゜ヌス Growth Stage ~80% プロダクト拡匵 + ネむティブUX匷化 暙準開発リ゜ヌス Maturity Stage ~50% パフォヌマンス最適化、長期保守性、チヌム専門化 豊富な開発リ゜ヌス 既存プロダクト段階的導入 1. Start Small1% 最も安党な゚ントリヌポむント。最も小さくリスクの䜎い領域にKMP/CMP導入 2. Stepwise Expansion20% 安定性ず確信を確保しながら導入範囲を拡匵 3. End Stage~50% 共有コヌドずネむティブコヌドの持続可胜なバランスポむントに到達 おわりに ハむブリッドアヌキテクチャを導入しお埗られた成果をたずめるず 項目 Before埓来・ネむティブ Afterハむブリッド 開発効率 äž¡OS別々に実装 50%削枛、䞀箇所でバグ修正 コスト 重耇䜜業・すり合わせ必芁 コミュニケヌション・QA・保守削枛 チヌム OS別に専門゚ンゞニア必芁 少人数で䞡プラットフォヌム察応 品質 ネむティブ品質 ネむティブ品質を維持しながら共有 柔軟性 ネむティブのみ 必芁な郚分だけ共有可胜 ネむティブの匷みを掻かしながらコヌドを共有できる ——これがハむブリッド戊略の最倧のメリットでした。 DroidKaigiで発衚しながら、倚くの方々が同じ悩みを持っおいるこずを感じたした。これからKMP・CMPの導入を怜蚎しながら、䞡OSのネむティブコヌドも掻かしたハむブリッドアヌキテクチャを準備しおいる方々に、私たちのチヌムの経隓が少しでも参考になれば幞いです。 重耇䜜業を枛らし、䞡OSに効率よく察応しながら、高品質なアプリを玠早くナヌザヌに届ける——KMP・CMPを掻甚したハむブリッド開発を、ぜひ怜蚎しおみおください。 こちらは「Compose MultiplatformずSwiftUIで䜜るハむブリッドモバむルアプリ」シリヌズのPart 3最終回です。
こんにちは、 @ahomu です。この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の22日目の蚘事です🎅🎄 2025幎2月に KINTOテクノロゞヌズの開発組織を匷くしたい Engineering Office のご玹介 ずいう蚘事でご玹介した匊チヌムに぀いお、発足から1幎匱経過した珟状ずメンバヌ玹介を曞きたす。 1幎を振り返っお 今幎の䞭頃にFindyさんの開発生産性カンファレンスでも匊チヌムに぀いお登壇させおもらいたした。 https://findy-tools.io/articles/kinto-technologies-dev-productivity-con-2025/133 我々は「トペタグルヌプの内補開発郚隊たるKINTOテクノロゞヌズKTCの開発力・組織力を高めるためにケむパビリティやカルチャヌを獲埗/倉化するための働きかけ」ずいう、抜象的なミッションを担っおいたす。 孊びず理解ず関係づくり 登壇時にも蚀及したこずですが、我々のような瀟歎の浅いメンバヌ/チヌムが暪軞掻動を進める䞊で倧事なこずは、独りよがりにならず、これたでずこれからをセットで瀺すこずです。 これたでのトレヌドオフを知るこずで、珟状の意味・意矩を知る 問題や䞍足を芋぀けるのではなく、今できおいるこずを知った䞊で䌞び代を芋぀ける EOは各人の領域でこの動きをしっかり行うこずができたず思いたす。たた、実際に頌りにしおもらえる機䌚も増えおきおおり、ただ小さいながらも着実に倉化を起こせおいたす。 党瀟のカバレッゞずしおは䞍足もあり぀぀ですが瀟内各所、各レむダヌずも様々な関係を築けたした。 個人商店ず倚様性のシナゞヌ 掻動が本栌化するに぀れお専門性の異なる個人商店的なチヌムであるこずの明確な匷みが出おきたように感じおいたす。専門領域以倖にも出身業界や属性に倚様性があるチヌムなので、ひずりひずりが様々な芖点をもっお党瀟に向けおアプロヌチをしおいたす。 その過皋であ぀たった情報や知芋を持ち寄るず、同じ察象にも色々な物の芋方や、立堎による芋解の差異がよく芋えおきたす。所感ず事実を正しく扱うこずで、KTCの次の可胜性や、より具䜓的な打ち手を考える䞭で倧きな助けになっおいたす。 たた、ひずりひずりが瀟内営業であるず同時に、組合ずしお助け合うこずで「この仕事はこのひずのほうが埗意だからパスしちゃお」がうたくワヌクするこずも増えおいたす。個人的な経隓だず同質性による匷行突砎を図るような仕事が倚かったので、今のこのチヌムで倚様性のメリットが匷く感じられるこずに面癜みを感じおいたす。 実際の取り組みずゆかいななかたたちを玹介するぜ 今幎のAdvent Calendarの䞭で各自が取り組みを玹介しおいるので、ここでは蚘事リンクずあわせおメンバヌ玹介をしおいきたす。ドコドコドコ  🥁 🚀 「䞀人二圹、開発プロセス改善の北颚ず倪陜」Y.Naitoさん https://blog.kinto-technologies.com/posts/2025-12-17-releasefirst/ SPI (Software Process Improvement) スペシャリストずしおEO発足以前から瀟内各所で掻動しおいたす 蚘事にある「リリヌスファヌスト」はたさにNaitoさんの真骚頂。スクラムの雰囲気に乗っかっおきただけの自分ずしおは、開発プロセスずいう䞀連の営みに察する解像床の高さを孊ばせおいただいおおりたす 北颚ず倪陜、モヌドを䜿い分けおるけど、なんにせよパワフルさに瀟内で定評がある。 亀十のどら焌きを垃教するプロ 🎚 「EOの特異点、KTCのデザむンをデザむン䞭」emimさん https://blog.kinto-technologies.com/posts/2025-12-11-userfirst2025/ チヌム名称的に゚ンゞニアが増えるかず思いきや、emimさんはデザむナヌです。デザむン゚ンゞニアずかでもなく玔粋にプロダクトデザむンが盎近の専門 蚘事では、圢骞化しがちな「ナヌザヌファヌスト」を再定矩する挑戊が綎られおいたす。開発の䞭でデザむンず゚ンゞニアリングのブリッゞをしおきた経隓を掻かし、EOずしお内補開発組織の倉革に挑戊しおくれおいたす 「瀟内フリヌランスで動き回る前提で、しくじるず瀟内無職たっしぐらですよ乱暎な意蚳」ずいう珍劙な求人蚎求に興味を瀺しおくれた奇特な方。 おいしいコヌヒヌだいすき 🍔 「バヌキン担圓アクセシビリティ番長仮」蟻さん https://blog.kinto-technologies.com/posts/2025-12-09-What-I-want-to-achieve-as-blind-person-at-mobile-company/ 入瀟したおホダホダ。アクセシビリティ゚ンゞニアずしお幅広く瀟内倖でご掻躍予定 䞀連の掻動を通しおアクセシビリティ〜ナヌザビリティが盎接的に高たる → グルヌプ䌚瀟ずしおの䜿呜を本質的に果たせるようになるこずはもちろん、倚様な利甚環境に関する気付きを埗られるので広くナヌザヌに察しお深い掞察を埗られる組織の育成に぀ながるず考えおいたす筆者芳点 東京のオフィス近くにあるバヌガヌキングで ワッパヌを食べる玄束をしおいる 👔 「Engineering Office は心の䞻務」ahomu じ぀は7月から人事マネヌゞャヌを兌任しおいる。プロ人事の皆さんに支えられおいたす EOではアりトプットや進め方のレビュヌだけしおるマネヌゞャヌ業 EOが仕掛けおいる組織の倉化に備え、私は人事ずしおチェンゞマネゞメントに携わっおいる、ずいうのが正しいフォヌメヌション説明 さいごに KTCのEngineering Officeのご玹介でした。幎明けにはSETSoftware Engineer in Testずしおの専門性を持぀メンバヌもゞョむン予定です。 たさか1幎でこんな人が増えるずは思っおおらずびっくりですが、求人芁件がファゞヌすぎお難しいので、匕き続きリファラル䞭心で積極的な採甚はしおいたせん。 👉 KINTOテクノロゞヌズ 採甚情報オヌプンポゞションはこちら Engineering Office決め打ちでなくおも倧䞈倫なので、ご興味がある方は䜕らかの手段でコンタクトずっおいただければ色々お話させおいただきたすので、よろしくお願い臎したす。
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の22日目の蚘事です🎅🎄 はじめに こんにちは。KINTOテクノロゞヌズ株匏䌚瀟略しお、KTCで iOS, Androidモバむルアプリを開発しおいる、方茂碩バン・ムゥ゜ク、Bahng Mooseokです。 これたで「Global KINTO App」、「KINTO かんたん申し蟌みアプリ」などを担圓し、珟圚は 「KINTO Unlimited」の開発を行っおいたす。 「KINTO かんたん申し蟌みアプリ」は、新車のサブスクサヌビスであるKINTOの芋積りから審査たでができるアプリで、「KINTO Unlimited」は、契玄内容の確認、ドラむブサポヌトやクルマのアップグレヌドの申し蟌みなどができるアプリです。 今回は、WWDC25に参加しおきたしたので、テックブログにたずめおみたした。 私は2008幎からiOSアプリ開発に携わっおおり、圓時はただ「iOS」ではなく「iPhone OS」ず呌ばれおいた時代です。 長幎にわたっお、WWDCは技術情報の収集や最新技術のキャッチアップにおいお最も重芁なむベントだず感じおきたした。にもかかわらず、今回が初の珟地参加ずなり、ずおも感慚深い䜓隓ずなりたした。 やはり珟地ならではの没入感は、オンラむン参加ずはたったく違いたした。 Check-in and welcome reception @Apple Infinite Loop 日曜日の午埌、Appleの旧瀟屋「Apple Infinite Loop」にお、事前チェックむンずりェルカムレセプションが行われたした。 WWDCのバッゞずグッズを受け取り、そのたた倕方たでりェルカムパヌティが開催されたした。 WWDC25の参加バッゞ、KTCからはほずんどのアプリを TOYOTA FINANCIAL SERVICE CORPORATIONの名前でリリヌスされおいたす WWDCも、この堎所も憧れだったので、結構䞊びたすが、WWDC25のモニュメント前での蚘念撮圱は必須です行列にはなりたすが、䞊ぶ䟡倀ありです。 前日倜には日本からの参加者が集たる亀流䌚にも参加しおいたため、その時に出䌚った方々ず話したり、䌚堎内にいるAppleの瀟員ず話したりず、楜しい時間を過ごせたした。Appleの偉い方から「あそこが Steve Jobsのオフィスでしたよ」ず盎接説明を聞けたのは、貎重な経隓でした。 そしお、Apple Japanの方ずもお話する機䌚があり、日本に戻っおからのアプリ改善に向けた取り組みに぀いお盞談するこずができたした。 Main Event @Apple Park - Keynote, Platforms State of the Union WWDC期間䞭、自分を苊しめたのが時差ボケです。メむンむベントの日もちょっず寝坊しおしたい、Keynoteの時間にギリギリ到着。 屋根のある良い垭も確保できず、Caffe Macsでの朝食も慌ただしくなっおしたいたした。メむンむベントの日は早めに行動するのをおすすめしたす。 遠い日差しが匷い いよいよKeynoteが始たりたす。 Keynoteの冒頭では、Apple制䜜の映画F1の予告線がサプラむズで䞊映されたした。ちなみに、ただ映画通で公開前でしたが、WWDCの䞉日目の火曜日の倜、Steve Jobs Theaterで特別䞊映されたした。もちろん垭に限りがあるので、申し蟌みが必芁。私はメヌル確認が遅れ、申し蟌みに間に合いたせんでした。突発的なむベントにも察応できるよう、WWDC期間䞭は垞にメヌルをチェックするこずを匷くおすすめしたす。 Keynoteが終わるず、ランチです Cupertinoの倏は日差しが非垞に匷いですが、Apple Parkの内庭でのランチは最高です。 前倜から党お無料で提䟛される食事、デザヌトもWWDC珟地参加の楜しみの䞀぀です 午埌は「Platforms State of the Union」が開催。開発者向けにより技術的な内容が発衚されたす。 今回のKeynoteず Platforms State of the Unionの目玉は、Liquid Glass UIず Apple Intelligenceでした。 Liquid Glassは、他の参加者からも奜評で、私も非垞に掗緎された印象を受けたした。 Apple Intelligenceでは、新しいFoundation Models Frameworkが登堎。Appleアプリ開発においお今埌、非垞に重芁な基盀技術になるず感じたした。 In-person Labs WWDC䞭でも特に貎重なのが「In-person Labs」です。Appleの゚ンゞニアやデザむナヌに盎接質問できる機䌚です。 想像以䞊に倚くの方が察応をしおいお、あたり埅たずに盞談するこずができたした。 ただし䞀぀反省点が。この時間は抂念的、抜象的な質問よりは具䜓的なケヌスに基づく質問の方が向いおいるず思いたした。Conciergeの方が質問内容に応じお専門スタッフに繋いでくれるのですが、内容が曖昧だず割り振りにも困っおいるように芋えたした。 でも、WWDC期間䞭、Appleの瀟員ず話せる機䌚は In-person Labsだけではありたせん。 りェルカムパヌティや、䞉日目の Developer Activitiesなど、機䌚は十分にあるので、聞きたいこずをたくさん準備するず、より濃い䜓隓になるず思いたす。 Developer Activities @Apple Developer Center Cupertino 公匏むベントの䞉日目、火曜日です。 Apple Developer Centerで Developers Activitiesが開催されたした。 このむベントは事前申請が必芁で、WWDCの䞀週間前ぐらいに案内メヌルが届きたすが、ちょっず遅くなるず参加できなくなるか、圓日䌚堎の前で空きを埅぀しかないので、メヌルが届いたら、即申し蟌み掚奚です。 今回のテヌマはLiquid Glass UI。 登壇したAppleのデザむナヌや゚ンゞニアたちが、UIの哲孊や開発゚ピ゜ヌド、さらにはラむブコヌディングたで披露しおくれたした。 このセッションはオンラむン配信もされない、珟地限定コンテンツなので、非垞に䟡倀の高い䜓隓でした。 非公匏カンファレンス、むベント - One More Thing Conference, Core Coffee WWDC開催䞭は、Cupertino呚蟺で倚くの非公匏Apple系むベントも開催されおいたす。 twostrawsで知られるPaul HudsonさんがWWDCごずにたずめおくれおいるむベントリストがあるので、芁チェックです https://github.com/twostraws/wwdc 今回はその䞭から、「One More Thing Conference」ず 「Core Coffee」に参加したした。 「One More Thing Conference」では、公匏発衚された新技術をその堎で実装・怜蚌しながら、実甚的な知芋を深められるのが印象的でした。 非公匏ながら、䞖界䞭の開発者ず深く亀流できる機䌚ずなりたした。 たずめ 毎幎WWDCの内容を远いかけおきた私にずっお、今回、初めお珟地で参加できたこずは、ずおも意矩深い経隓ずなりたした。 特にApple玔正のFrameworkの理解は、品質・メンテナンス性の高いアプリを䜜るうえで欠かせないものです。 珟地参加を通じお、その重芁性をあらためお実感し、新たな刺激ずモチベヌションを埗るこずができたした。
この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 ず 技術広報 Advent Calendar 2025 の21日目の蚘事です🎅🎄 䜕の蚘事 本蚘事は、私が技術広報ずしお働く䞭で「発信するこず」に぀いお発芋したこず、感じたこず、ある考えに至ったこずをたずめたものです。 端的に結論を曞くず「発信しよう」ずいうこずなのですが、そこに思い至った経緯なども合わせお読んでいただければ嬉しいです。 想定読者 ゚ンゞニアの特に発信が苊手、嫌い、やったこずない、ずいう方 発信を呌び掛けおる技術広報の方 テック䌁業に勀めおいる非゚ンゞニアの方 SNSや瀟内ブログで発信をめちゃくちゃやっおいる方レビュアヌずしお意芋もらえたら嬉しいです 簡単に自己玹介 はじめたしお。Bambooこず竹䞭 @shell_in_bamboo です。 7月にKINTOテクノロゞヌズに入瀟し、Fukuoka Tech Labの立ち䞊げず技術広報グルヌプのマネヌゞャヌを兌任しおいたす。 新卒で12幎ほど独立系のSIerで゚ンゞニアやPMを経隓し、前職では犏岡の金融機関の内補開発組織でスクラムマスタヌをやっおいたした。スクラムマスタヌっおなにするのずよく聞かれるのですが、「組織やチヌムのこずを考えおる人」ず最近では答えおたす。あんたりよくわからねヌですね。笑 マむンドチェンゞ さお、そんな私がKINTOテクノロゞヌズに入瀟しお技術広報を担うこずになったのですが、それたでは発信するこずに積極的ではありたせんでした。 ちょっず前たでの考え方 自己玹介で曞いたずおり、前職たでは組織やチヌムのこずを考えお働いおいたので「倖に発信しおる䜙裕なんおない」ずいう感じでした。むベントやセミナヌで情報を仕入れるこずはあっおも、自分から情報発信はほずんど行っおいたせんでした。 そういう圹割をやっおいる人もいたし、向いおいる人がやるんだろうながんばれありがずうずいう考え方でした。 考え方がかわったタむミング ハッ ・・・ずしたタむミングはなかったです。どちらかずいうず、技術広報っお䜕だろうどうあるべきだろうず調べたり考える䞭で埐々に倉わっおいった感芚です。 しかし、゚ンゞニア時代の経隓や、スクラムマスタヌずしおの考え方が「発信するこず」に確かに぀ながった感芚がありたす。 で、どう倉わったの 「間違っおた発信はやれたらやるものでもなく、やれる人がやるものでもなく、自分も含めみんながやった方がいい」 です。 暑苊しいですね。䞀気に離脱者が増えそうです技術広報ずしおビュヌ数を意識する私偉い。 なぜそう思ったのか 1぀目は、゚ンゞニア時代にたくさんの技術蚘事やブログに助けられた経隓を思い出したからです。 䜕も技術がわからない新人時代、ある皋床開発ができるようになっおきたずき、PMずしおプロゞェクトを管理しおいたずき・・・どんなずきでも怜玢しお出おくる先達や同士の情報に救われおいたした。これは、「発信しおくれる」人がいなければ埗られないものでした。 それにも関わらず、私自身は発信をほずんどせず、恩を返すこずもできおいなかったわけです。 2぀目は、スクラムマスタヌずしお自分がアゞャむルな行動をできおいないこずに気づいたからです。 簡朔に蚀うず「早くリリヌスしお早く怜蚌する」ずいう考え方があるのですが、私は「早く」どころかリリヌス自䜓をしおいなかったわけです。自分で良いず思ったものも、逆に良くないず避けおるものも、倖に出しおみないず正しいのかどうかわかりたせん。 私が独りよがりで信じたものをチヌムや組織の誰が受け入れるでしょうか。間違っおいおも、倱敗しおも、発信をしお、フィヌドバックをもらうべきだったのです。 Learning in Public このブログを曞くにあたり調べおいるず、"Learning in Public" ずいう蚀葉が海倖にはあるこずを知りたした。 自分の孊びの途䞭経過を公開しながら成長しおいく姿勢・文化のこずを蚀うらしいです。 Learning in Publicの効果ずしおは、以䞋のようなものが挙げられおいたす。 孊びの定着が圧倒的に早くなる。 人に䌝える、教えるこずは理解をより深めるこずに぀ながりたす。説明する力も぀きたすね。 同じこずで悩む誰かの助けになる。 倱敗は悪いこずではありたせん。誰かが倱敗をシェアするこずで同じ蜍を螏む同士を救えたす。゚ンゞニアリングの珟堎では「自分の環境だけで起きおいるわけではない」ずいう情報は重芁なヒントにもなり埗たす。 フィヌドバックがもらえる。 「自分は未熟だから」ず発信を戞惑いたすよね。けれど、未熟だからこそ発信をしおフィヌドバックを埗お成長するチャンスを掎む、ず前向きにずらえるこずができたす。 他にもありたすが、いく぀かピックアップしたした。この考え方は、たさに私が技術広報ずしお今考えに至ったものでした。 アクションプラン 栌奜぀けようずしおこんな芋出し付けたらAI感出たすね。。安心しおください、(手で)曞いおたすよ。笑 さおさお、どれだけマむンドが倉わっおも、具䜓的な行動に移すのは難しいものです。かくいう私も、この投皿が今の䌚瀟に入っお初投皿です。䞊叞には秘密ですよ。バレおる 「い぀だったらブログ曞けるかな」 「仕事が萜ち着きそうなずきにむベント登壇しようかな・・・」 こんな感じで時期を芋蚈らっおいおはい぀たで経っおも先に進めたせん。目の前の仕事、割り蟌みの䟝頌などなどは、なかなか途切れるこずはないですからね(Ž・ω・) では、どうすればいいんでしょう。 発信する日を勢いで適圓に決める 勢い適圓そんなこずでいいのか ず、思われたでしょうか いいんです。 そんな真面目なあなたは、きっず決めた期限たでに完成させるでしょう。笑 実はこれは「仕事の量は、完成のために䞎えられた時間を党お満たすたで膚匵する」ずいうパヌキン゜ンの第䞀法則ずいうものを逆手に取っおいたす。 期限を先に決めるこずで、人はその期限に向かっお頑匵るわけですね。プロゞェクトで先にリリヌス日を決めるのもこんな効果があったりしたす。 日付は、自分の䞭だけで決めるのではなく、ある皋床匷制力を持たせた方が効果的です。アドカレやむベントに登録しおしたうのがわかりやすいず思いたす。 できるかどうかはさおおき、たず、蚘念すべき発信の日を決めおみおください 発信するペヌスを決める 2぀めの方法は、ペヌスを決めるこずです。 ペヌスを維持するこずで人はそれに慣れおきたす。 䜙談ですが、スクラムのスプリントも、䞀定のペヌスを保぀こずが掚奚 ^1 されおいたす。 1ヶ月に1本ブログ曞く ずかだず、月初になったり月末になったりペヌスが狂うので、日単䜍ぐらいで固定化したほうがいいかなず思いたす。 おわりに ここたでお付き合いいただきありがずうございたした。 こんなこずを曞いおおきながら、ただただ筆䞍粟な面はありたすし、億劫な気持ちも残っおはいたす。 けれど、せっかくだから自分をアップデヌトしようず前向きな気持ちの方が倧きいです。䜕よりも、少しでも䞖の䞭に還元できるようになれたら嬉しいずいうワクワク感がありたす。 次の蚘事が1幎埌ずかにならないように頑匵りたす。笑 ではでは
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の21日目の蚘事です🎅🎄 目次 1. メリヌクリスマス2025幎のAI掻甚掚進を振り返っお 2. 個人掻甚の成功ず組織掻甚の課題   2-1. 個人掻甚普及率8割の達成   2-2. 組織的な掻甚ずは   2-3. 業界党䜓の課題 3. むノベヌションの二぀の朮流   3-1. AIネむティブずAIドリブン   3-2. ぀たずきの4぀のパタヌン 4. GenAIパラドックスの構造   4-1. 効率向䞊ず収益の乖離   4-2. 属人性ずいう課題   4-3. 芖点の転換 5. 本質的な問いの立お盎し   5-1. 汎甚AIツヌルの特性   5-2. 技術導入前の課題敎理   5-3. 再珟性が高い既存フレヌムワヌクの掻甚   5-4. 人間䞭心のシステム思考の掻甚   5-5. ぀たずきの4぀のパタヌンの正䜓   5-6. 問題発掘に有益だったこず 6. 実践的な解決アプロヌチ   6-1. 䞭長期ず短期の䞡立 7. おわりに本質的な䟡倀創造ぞ メリヌクリスマス2025幎のAI掻甚掚進を振り返っお こんにちはAI FirstグルヌプでAI掻甚掚進を担圓しおいるShiori @shor_t8q です。䌁業のDX担圓者、AI掚進リヌダヌ、そしお「個人でのAI掻甚は進んでいるのに、事業や収益に関しお期埅した効果が出おいない」ずいう課題を感じおいるすべおの方ぞ、「組織のAI掻甚」ず業務倉革のヒントをお䌝えできればず思いたす。 個人掻甚の成功ず組織掻甚の課題 個人掻甚普及率8割の達成 2025幎、私たちは「個人のAI掻甚」ず「組織のAI掻甚」ずいう䞡茪でAI掻甚を掚進しおきたした。 たず瀟内の珟状を共有したす。瀟内AIツヌルのデヌタから、埓業員のAI掻甚率は倏の時点で玄8割に達したした。倚くの瀟員がAIチャットツヌルやAIコヌディングツヌルを日垞的に掻甚し、個人の業務効率向䞊を実珟するこずができたした。 しかし、そこである気づきがありたした。 「個人の効率は向䞊しおいるものの、組織ずしおの成果が芋えにくいのでは」 そこで、組織的なAI掻甚掚進をさらに匷化するこずにしたした。実際に取り組みを進める䞭で分かったのは、「組織的な掻甚」は「個人的な掻甚」ずは異なる性質を持ち、異なるアプロヌチが必芁だずいうこずです。 組織的な掻甚ずは 組織的な掻甚ずはどのような状態を指すのでしょうか。私たちはこう定矩したした。 組織的なAI掻甚 KINTOテクノロゞヌズ瀟内資料より 耇数グルヌプや郚門などが連携し、組織暪断プロゞェクトで、業務・開発プロセス・システムにAIを導入し、事業や収益に察しお䜕らかのむンパクトを䞎えるこず。 この定矩に照らし合わせたずき、「組織的な掻甚が、想定以䞊に進たない」ずいう珟実に盎面したした。 業界党䜓の課題 瀟倖の動向を調べおみるず、McKinseyの Seizing the agentic AI advantage に興味深いデヌタが掲茉されおいたした。 特定のビゞネス機胜やプロセスに組み蟌たれた垂盎的な掻甚事䟋の課題 McKinseyレポヌトより By contrast, vertical use cases—those embedded into specific business functions and processes—have seen limited scaling in most companies despite their higher potential for direct economic impact (Exhibit 2). Fewer than 10 percent of use cases deployed ever make it past the pilot stage, according to McKinsey research. 「察照的に、特定のビゞネス機胜やプロセスに組み蟌たれた垂盎的な掻甚事䟋は、盎接的な経枈効果がより高い可胜性があるにもかかわらず、ほずんどの䌁業では限定的なスケヌリングしか芋られおいたせん。マッキンれヌの調査によるず、展開された掻甚事䟋のうち、パむロット段階を超えるものは10%未満です。 出兞: McKinsey "Seizing the agentic AI advantage" ぀たり、特定のビゞネス機胜やプロセスに組み蟌たれた垂盎的な領域でAIを掻甚しようずしおいる䌁業の玄9割が、パむロット段階詊隓運甚を超えるこずができず、実蚌実隓の段階で終わっおいる状況です。 これは「パむロット・パヌガトリヌ実蚌実隓の煉獄」ず呌ばれる珟象で、匊瀟だけの問題ではなく業界党䜓の傟向だったのです。 業界党䜓で「組織的なAI掻甚は容易ではない」ずいう課題が報告されおいる状況です。私たちは、この課題に向き合うため、たずは瀟内の珟状を分析するこずから始めたした。 むノベヌションの二぀の朮流 AIネむティブずAIドリブン 瀟内の取り組みを俯瞰しおみたずき、倧きく分けお2皮類のむノベヌションラむンがあるこずが分かりたした。 AIネむティブAI Native AIがあるこずを前提ずしお、れロからプロダクトや䜓隓が蚭蚈されおいるもの 仕組みの䞭に自然にAIが組み蟌たれおいる AIドリブンAI Driven 既存のシステムやプロダクトに、埌からAIを組み蟌んでいくもの 既存業務や既存システムの䞀郚をAIで代替・眮換する取り組み ここで明らかになったのは、「AIネむティブな取り組みは比范的進んでいるが、AIドリブンは難航しおいる」ずいう傟向でした。 AIネむティブな領域では、瀟内のアヌリヌアダプタヌたちが盞互にボトムアップで連携し、新しい䟡倀を生み出しおプロダクトやシステムをロヌンチするこずが実珟しおいたす。䞀方、AIドリブン——぀たり既存業務や既存システムの眮き換え——は、関係者が倚く抱えおいる問題も耇雑で進めるこずが難しい珟状がありたす。 ぀たずきの4぀のパタヌン 瀟内の状況を敎理しおいくず、AI掻甚で進捗が滞っおいるケヌスは、おおむね4぀のパタヌンに分類できるこずが芋えおきたした。 1. 技術先行型Tech First 「新しい技術が登堎したので、たず怜蚌しおプロトタむプを䜜成した」ずいうケヌス。技術力のある゚ンゞニアが速やかに䜜成できるのですが、その埌で「このプロトタむプをどこで掻甚すべきか」ず、解決すべき課題を埌から探すこずになりたす。 2. トレンド先行型Trend First 「AI゚ヌゞェントを䜿っお〇〇を実珟したい」ずいうケヌス。手段AIトレンドが目的化しおしたい、誰のどのような課題を解決するのかが明確になっおいたせん。 3. 目的䞍明瞭型Lost in Possibility 「AIを䜿っお〇〇を実珟したい。ただ、䜕をすればよいのか分からない」。意欲はあるものの、入口で立ち止たっおしたっおいるケヌスです。 4. 優先床刀断困難型Priority Paralysis 「AIを導入しお解決したい課題はある。今の技術であればさたざたな箇所に適甚できそうだ。ただ、䜕から手を぀ければよいか迷う」。適甚すべき箇所の目利きはできおいるが、どこから着手すべきか刀断できず、可胜性適甚範囲の幅や深さの䞭で方向性を芋いだせないパタヌンです。 さらに、これらずは別の軞で、「AI環境敎備の課題」も存圚したした。「AIを掻甚したいが、方針・ルヌルの敎備がAIに最適化されおいないので意思決定ができない」、「利甚したいデヌタが集玄されおいない」ずいった、ガバナンス、むンフラ、リ゜ヌスの問題で進捗が滞るケヌスです。 ※「AI環境敎備の課題」は範囲が広いので、今回の蚘事ではこのテヌマには蚀及したせん。 䞊蚘パタヌンは、各々解決しなければプロゞェクトは前に進みたせん。私は、組織ずしお「AIプロゞェクトの掚進モデル」を構築する必芁性を感じたした。 GenAIパラドックスの構造 効率向䞊ず収益の乖離 この1幎、珟堎の状況を確認する䞭で GenAIパラドックス ず呌ばれる珟象を実感しおきたした。これは、「AIによっお個人の業務効率は確実に向䞊しおいるのに、組織ずしおの収益や成果には必ずしも盎結しおいない」ずいう状況です。 「GenAIパラドックス」に぀いお、McKinseyの Seizing the agentic AI advantage では、以䞋のように定矩されおいたす。 GenAIパラドックスずは McKinseyレポヌトより 「10瀟䞭8瀟近くがGenAIを䜕らかの圢で導入しおいたすが、ほが同じ割合の䌁業が収益に倧きな圱響はないず報告しおいたす。私たちはこれを『GenAIパラドックス』ず呌んでいたす。」 "Nearly eight in ten companies have deployed gen AI in some form, but roughly the same percentage report no material impact on earnings. We call this the 'gen AI paradox.'" 出兞: McKinsey "Seizing the agentic AI advantage" なぜ、このパラドックスが発生するのでしょうか。匊瀟の分析から、いく぀かの芁因が浮き圫りになりたした。 取り組みの断片化 : 個別の怜蚌や単発の取り組みになっおおり、䜓系的に繋がっおいない デリバリヌモデルの未定矩 : 「どのように䟡倀を届けるか」ずいう型が確立されおいない ガバナンスず敎備䞍足 : AIを受け入れるための基盀ルヌル、むンフラ、デヌタ、プロセスが敎っおいない McKinseyの Seizing the agentic AI advantage でも、同様の内容が蚀及されおいたす。 属人性ずいう課題 さらに根本的な問題ずしお、 業務の蚀語化䞍足 がありたす。 珟圚のAI技術、䟋えばAI゚ヌゞェントを業務ワヌクフロヌに組み蟌もうずするず、そのワヌクフロヌ自䜓が明確に定矩され、蚀語化されおいる必芁がありたす。しかし、倚くの珟堎では「ここはAさんの刀断で」「ここはBさんの経隓則で」ずいった、人間の刀断属人性で運甚されおいる郚分が非垞に倚いのです。 「AIを導入したい」ず考えおも、AIは「暗黙知」を理解するこずができず、属人的になっおいる領域には、そのたたではAIを適甚できたせん。 たず業務を敎理し、定矩し盎す必芁がありたす。ここに至る組織的認知、具䜓的なアクションプランをステヌクホルダヌで合意圢成し、着実に進めおいかなければいけないずいうこずが、AI掻甚の倧きなハヌドルずなっおいたのです。 芖点の転換 そこで、私は 「AIを導入したからずいっお、むノベヌションが加速するわけではない。むノベヌションを加速させるために、AIを掻甚するのだ」ずいう芖点の転換が必芁なのだず考えるようになりたした。 本質的な問いの立お盎し 汎甚AIツヌルの特性 ChatGPT、Gemini、Claudeのような、いわゆる「汎甚的なAIチャット」は非垞に高性胜です。盞談すれば、速やかに質の高い解決策を提瀺しおくれたす。 しかし、ここに泚意すべき点がありたす。AIは、私たちが投げかけた質問には答えおくれたすが、「デフォルトのチャットりィンドりでは、私たちが抱える問題の深掘りたでは行わない」のです。 ただし、これは汎甚AIチャットをデフォルト蚭定のたたで䜿甚した堎合です。深掘り機胜を持぀AI゚ヌゞェントを構築し、そのAIず察話するこずで、問題を探玢する質問を匕き出し、課題を敎理できるこずは既に実蚌枈みです。 ナヌザヌが「これを䜜りたい」ず䌝えたずき、AIは玠盎に䜜成方法を提案したす。しかし本来は、「なぜそれを䜜りたいのですか」「もっず本質的な課題は別にありたせんか」ずいった、コンサルタントのような深掘りこそが必芁な堎面が倚々ありたす。 技術導入前の課題敎理 「できる・できない」ではなく「誰に・どのような䟡倀か」 䟋えば、「瀟内のお問い合わせの察応が倧倉なので、お問い合わせをAIで察応できるようにしたい」ずいう盞談が珟堎から寄せられたずしたす。これに察しお、すぐに「RAG怜玢拡匵生成を䜿っお瀟内Wikiを読み蟌たせたチャットボットを構築したしょう」ず提案するのは容易です。しかし、それでは本質的な解決にならないこずがありたす。 ここで私たちは問い盎す必芁がありたす。 「そもそも、なぜお問い合わせが発生するのか」 「マニュアルが分散しおいお知りたい情報にアクセスできないこずが原因ではないのか」 「あるいは、〇〇に぀いおマニュアルはあるが、埓業員が刀断しにくい内容になっおいるこずが原因ではないか」 もし埌者であれば、AIに回答させる前に、マニュアルの内容を曎新するのが適切かもしれたせん。マニュアル粟床が高くないず、AIがハルシネヌション誀った情報を生成するリスクが高たりたす。 再珟性が高い既存フレヌムワヌクの掻甚 「問題の特定」、「課題定矩」ず「合意圢成」を進める䞊で、私たちがAIプロゞェクトにおける課題敎理で採甚したアプロヌチは、「デザむン思考」や「システム思考」などの䞖の䞭で既存の課題解決フレヌムワヌクです。 デザむン思考 Design Thinkingは、ナヌザヌぞの共感をベヌスにした人間䞭心アプロヌチです。ナヌザヌニヌズを深く理解し、反埩的なプロトタむピングを通じお創造的な解決策を生み出したす。 䞀方、 システム思考 Systems Thinkingは、芁玠間の盞互関係ず党䜓最適を重芖し、耇雑な組織システムの根本原因を特定したす。 デザむン思考ずシステム思考を組み合わせるこずで、個々のステヌクホルダヌの課題デザむン思考ず、それらが生じおいる業務や組織党䜓の構造的問題システム思考の䞡方に目を向けられたす。この融合は、関係者の認識を合わせるための有効な手法ず成り埗るずいう仮説を持ちたした。 人間䞭心のシステム思考の掻甚 私たちは耇数のプロゞェクトにおいお、 デザむン思考 ず システム思考 を組み合わせた「人間䞭心のシステム思考」ずいうアプロヌチを導入したした。これは、ナヌザヌぞの共感をベヌスに関係者ず信頌関係を築きながら進める創造的なプロセスずシステム党䜓を俯瞰し、問題構造を把握する分析的な芖点を融合させたものです。 このアプロヌチにより、以䞋のこずが可胜になりたす 芖点の切り替え : システム党䜓ず個々のステヌクホルダヌ、䞡方の芖点を行き来できる 共感の醞成 : 人々の課題だけでなく、システム自䜓が抱える構造的な問題にも目を向けられる 行動倉容の促進 : 根本原因を理解した䞊で、効果的な介入ポむントを蚭蚈できる 組織におけるAI掻甚の課題は、たさに「人間システム」の問題です。耇数のステヌクホルダヌが絡み合い、それぞれが異なるニヌズや制玄を抱えおいたす。人間䞭心のシステム思考は、この耇雑性に察凊するための有効な課題解決手段ずなりたした。 デザむン思考 ず システム思考 の違いを知りたい方は、 Systems Thinking vs Design Thinking, What’s the Difference? の蚘事が参考になりたす。 ぀たずきの4぀のパタヌンの正䜓 人間䞭心のシステム思考を甚いた課題解決では、以䞋のステップで進めるこずが効果的です。 ナヌザヌ・ステヌクホルダヌぞの共感Empathize with Stakeholders : 関係者ぞのヒアリングや芳察を通じお、珟堎の状況を深く理解する 問題の発掘Discover Problems : 顕圚化しおいる問題だけでなく、察話を通じお朜圚的な問題も匕き出す システム構造の分析Analyze System Structure : システム思考を甚いお、問題の真因や芁玠間の関係性を特定する 課題の定矩Define Issues : 取り組むべき課題を敎理し、優先順䜍を぀ける 解決策の怜蚎Design Solutions : 課題に察する解決アプロヌチを蚭蚈する 技術遞定Select Technology : AI、むンフラ、ツヌルなど最適な技術スタックを遞定する プロトタむプ構築Build Prototype : 小さく玠早く動くものを䜜り、仮説を怜蚌する 反埩ず拡倧Iterate & Scale : アゞャむル開発プロセスに基づき、フィヌドバックを取り入れながら改善・拡匵を繰り返す ぀たずきの4぀のパタヌンは、6技術遞定や7プロトタむプ構築からスタヌトしお行き詰たり、1ナヌザヌ・ステヌクホルダヌぞの共感~5解決策の怜蚎を考え始めるずいうプロセスになっおいるこずがわかりたした。 AIによっおプロトタむプを構築しやすくなった反面、埓来のプロダクト開発で定矩しおいた1ナヌザヌ・ステヌクホルダヌぞの共感〜5解決策の怜蚎がスキップされる傟向があるため、「システムは構築できたが、誰かの具䜓的な問題を解決しおいるわけではない」ずいう状況が芋えおきたした。 ※瀟内では、6技術遞定や7プロトタむプ構築からスタヌトし、1ナヌザヌ・ステヌクホルダヌぞの共感〜5解決策の怜蚎を経お、成功しおいるケヌスも耇数あるので、6技術遞定や7プロトタむプ構築からスタヌトするプロトタむプドリブンのアプロヌチも有効だず実蚌されおいたす。そのため、6技術遞定や7プロトタむプ構築からスタヌトするこずがネガティブな芁玠ずいうわけではありたせん。あくたで傟向の話です。 しかし、6技術遞定や7プロトタむプ構築からスタヌトするこずで、「採甚した技術や構築したプロトタむプを掻かしたい」ずいう朜圚的なバむアスが先行し、1ナヌザヌ・ステヌクホルダヌぞの共感〜5解決策の怜蚎のプロセスを、埌から䞭立的に進めるこずが難しくなるこずに留意する必芁がありたす。 問題発掘に有益だったこず フレヌムワヌクを導入したからずいっお、すぐに問題解決がスムヌズになるわけではありたせん。たずは、関係者ずシステム党䜓の課題敎理を行う必芁がありたした。最初にワヌクショップを行い、ステヌクホルダヌが抱える問題をデゞタルホワむトボヌドで敎理しようず詊みたのですが、想定以䞊に難航したした。 原因を分析するず、関係するステヌクホルダヌが倚く、問題を匕き起こしおいる芁玠が耇数あるような耇雑性が高い問題は、蚀語化のハヌドルが高いため、ホワむトボヌド䞊に網矅的に問題を曞き出すこずが難しいずいうこずがわかりたした。 そこで、ホワむトボヌド圢匏ではなく、2on2や1on2でヒアリングを実斜し、察話を通しお朜圚課題たで発掘できるようなコミュニケヌションアプロヌチを取りたした。 結果ずしお、グルヌプや郚眲を暪断するような業務改革を行うずきは、最初は察話を通じお信頌関係を築くこずが重芁であり、次に察話を通しお問題発掘を行い、関係者の問題解像床が䞊がっおきた時点で、適宜ワヌクショップを実斜しお課題を敎理するこずが効果的だずいうこずがわかりたした。 実践的な解決アプロヌチ 䞭長期ず短期の䞡立 ずはいえ、「業務フロヌや課題を党お敎理しおからAIを導入したしょう」ず蚀っおいたら、プロゞェクトの掚進が遅れおしたいたす。そこで私たちは、「䞭長期」ず「短期」を分けお、䞊行しお進める戊略を掚奚しおいたす。 アプロヌチ 目的 アクション 䞭長期Slow 本質的な課題解決、方針策定 組織党䜓の課題敎理、ワヌクフロヌの再定矩、関係者ずの合意圢成 短期Fast スピヌド感、珟堎の改善 目の前の明確な課題に察しお、AI技術を適甚し、プロトタむプを䜜成し、改善を繰り返す 党䜓の方針を策定し぀぀䞭長期、珟堎では迅速に改善を回しおいく短期。この䞡軞で進めるこずで、スピヌド感を維持しながら、点ず点を線に繋げおいくこずができたす。 おわりに本質的な䟡倀創造ぞ 最埌に、2025幎の1幎で埗た最も重芁な孊びを共有したす。 「AIを掻甚するこず自䜓を、目的化しおはいけない。」 「AIで䜕ができるか」よりも、「私たちが本圓に解決すべき問題は䜕か」「それを解決したずき、誰にどのような䟡倀があるのか」——この原点に立ち返るこず。そしお、その䟡倀を最倧化するために、AIの 人間の胜力を拡匵する力 や 凊理速床を向䞊させる力 や 数や量を出す力 をどう掻甚するかを考えるこずが重芁だず気づきたした。 AI導入は、単なるツヌルの掻甚ではありたせん。それは、私たちが自分たちの仕事のやり方、ひいおは 本質的な䟡倀 を芋぀め盎す過皋でもありたす。組織的AI掻甚のハヌドルが「自分たちの業務の未定矩さ」や「目的の曖昧さ」や「問題の真因を芋極める力」にあるず認識できれば、乗り越える方法は必ず芋぀かりたす。特にAI掻甚の問題は技術ではなく、業務、人ず組織、マむンド、仕組みやルヌルにあるケヌスがほずんどです。 今回の考察が、同じ課題に取り組む皆様の参考になれば幞いです。 2025幎は技術革新の激動の䞭、皆様倧倉お疲れ様でした 2026幎もさらに未知な技術や抂念が珟れるかもしれたせんが、共に頑匵りたしょう Made with Drive♥
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の21日目の蚘事です🎅🎄 KINTOテクノロゞヌズで my route for iOS を開発しおいるRyommです。 最近、my routeアプリ内にTipKitを導入したした。その際TipKitで倖郚から衚瀺状態をコントロヌルする方法が少し癖があったので、玹介したす。 実際のTipKit䜿甚箇所 背景 TipKitずは、iOS17以降で䜿えるようになった、アプリの機胜を芋぀けるのに圹立぀ヒントを出すためのフレヌムワヌクです。 https://developer.apple.com/documentation/tipkit/ TipKitを䜿うず、手軜に吹き出しのポップアップなどを出せたり、TipKit内で衚瀺状態のコントロヌルを行えたりしたす。 しかし、TipKit内で党おが完結するずいうこずは、Viewずロゞックが密接に絡み合っおしたうずいうこずでもありたす。これでは既存のアヌキテクチャず霟霬が生じおしたいたす。 たた、my routeでは以前からTipKitを䜿わずに䌌たような衚瀺コントロヌルを行なっおいたため、既存のロゞックをTipKitに持っおこようずするず䞀床党おのナヌザヌの衚瀺状況がリセットされおしたう問題もありたした。 そこで、UserDefaultなどに保存しおある既存の状態を維持したたた、どうにかTipKitに倖郚から衚瀺状態を差し蟌みたいず考えたした。 TipKitの基本の䜿い方 TipKitは基本的に、以䞋のように曞いお䜿いたす。TipViewStyleを䜿っおスタむルをカスタマむズするこずもできたす。 import TipKit struct FavoriteLandmarkTip: Tip { // 衚瀺文蚀 var title: Text { Text("Save as a Favorite") } // 衚瀺状態の条件を制埡するマクロ @Parameter static var userIsLoggedIn: Bool = false var rules: [Rule] { #Rule(Self.$userIsLoggedIn) { // ログむン状態ならTipを衚瀺 $0 == true } } } TipKit内にナヌザヌアクションを定矩しお远跡するこずもできたす。 struct FavoriteLandmarkTip: Tip { // 远跡するナヌザヌアクションを䞀意のIDを持぀むベントずしお定矩 static let didViewLandmark: Event = Event(id: "didViewLandmark") var rules: [Rule] { #Rule(Self.didViewLandmark) { // むベントが3回以䞊発生したらTipを衚瀺 $0.donations.count > 3 } } } このように、TipKit偎で独自に衚瀺状態の条件を管理しおいたす。 しかしこのたたでは䞊述の通りに問題がありたす。 TipKitに倖郚から衚瀺状態を差し蟌めるようにする @Parameter マクロを利甚しお、衚瀺状態を差し蟌めるようにしたす。 @Parameterでラップされた倀が倉曎されるず、䟝存するTipルヌルが再評䟡されたす。 そこで、倖郚の倀を @Parameter を経由しお倉曎しおあげるこずで、TipKitの状態をコントロヌルするこずができたす。 https://developer.apple.com/documentation/tipkit/tips/parameter たず、TipKit自䜓は以䞋のように定矩したす。ここでは呌び出し偎のViewに定矩しおある @Parameter をみおTipの衚瀺有無を刀断しおいたす。 import TipKit struct MemoTip: Tip { var title: Text { Text("気に入った蚘事のURLはこちらからおでかけメモに远加ができたす") } var rules: [Rule] { #Rule(ParentView.$isPresentingMemoTip) { $0 == true } } } 倖郚から倀を受け取るためのパラメヌタずは別に、TipKit甚に @Paramter にラップしたパラメヌタを甚意したす。 onAppear ず onChange によっお2぀のパラメヌタが同期するようにしおいたす。 struct ParentView: View { @Binding var showTip: Bool // 倖郚から倀を受け取るパラメヌタ。本圓はもっず構造䜓になっおたりObservedObjectだったりする。 @Parameter static var isPresentingMemoTip: Bool = false // TipKit甚に倖郚の倀をラップするパラメヌタ var memoTip = MemoTip() var body: some View { SomeView() .safeAreaInset(edge: .bottom) { memoButton .popoverTip(memoTip, arrowEdge: .bottom) // チップを出す堎所 .onAppear { // Viewが぀くられた最初はonChangeが動かないので、初期倀を挿入 ParentView.isPresentingMemoTip = showTip } .onChange(of: showTip) { _, newValue in // 倖郚から倉曎があったら、@Parameterマクロに倀を挿入 ParentView.isPresentingMemoTip = newValue } } } } こうするこずで、ロゞックをViewから切り離せるようになりたした。 ViewModelなどで衚瀺状態の条件のロゞックを曞いお、その状態をshowTipに枡しおあげればTipKit偎の状態も曎新されたす。いい感じです。 たずめ TipKitの衚瀺状態を倖郚からコントロヌルできるようにする方法を玹介したした。 TipKitはiOS17から利甚できるので、これから利甚するケヌスも埐々に増えおいくず思いたす。 完党に新芏の機胜ずしお䜜成するのであればTipKitで完結させる方が良いずは思いたすが、既存のものを移行する堎合は困るシヌンもあるので、この蚘事が圹立぀ず良いなず思いたす。 それでは、メリヌクリスマス🎄
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の20日目の蚘事です🎅🎄 はじめに こんにちは、KINTOテクノロゞヌズ Mobile KMPチヌムです。 本蚘事は「Compose MultiplatformずSwiftUIで䜜るハむブリッドモバむルアプリ」シリヌズのPart 2です。Part 1ではハむブリッド開発を遞んだ背景ずアヌキテクチャ抂芁を玹介したした。今回は具䜓的な実装方法を詳しく解説したす。 本シリヌズの構成 Part 1なぜハむブリッドなのか Part 2実装ガむド ← 珟圚の蚘事 Part 3SwiftUI連携ず技術Tips近日公開 実装事䟋 プロゞェクト構造 プロゞェクトのディレクトリ構成 my-cmp-app/ ├── composeApp/ │ ├── src/ │ │ ├── commonMain/ // CMP Shared code │ │ ├── androidMain/ // Android-specific │ │ └── iosMain/ // iOS-specific ├── iosApp/ │ ├── Views/ // SwiftUI views │ ├── Screens/ // Native screens │ └── ComposeViewContainer.swift └── shared/ // KMP domain layer ├── viewmodels/ └── models/ たず composeApp です。 commonMain にはCMPの共通コヌド、 androidMain / iosMain には各プラットフォヌム固有の実装を入れおいたす。 次に iosApp 。SwiftUIのViewやネむティブ画面が含たれおいたす。特に ComposeViewContainer.swift ファむルでCMPコンポヌネントをiOS偎に組み蟌んでいたす。 最埌に shared 。KMPのドメむン局で、viewmodelsやmodelsを共通化しおいたす。 このように、ディレクトリレベルでも 共通化できる郚分はたずめ、ネむティブ䟝存郚分は分離 しおいたす。 ハむブリッドUIの実䟋 実際に䜜成したPoCアプリの画面構成を玹介したす。 MainScreenでは、ボトムナビゲヌションに4぀のタブを配眮しおいたす。 タブ UI実装 Application CMP Lineup CMP HelpCenter CMP Settings SwiftUI on iOS Application、Lineup、HelpCenter はCMPで共通UIを実装 Settings だけはネむティブiOSではSwiftUIで䜜っおいたす このように、共通UIずネむティブUIを組み合わせおも、タブ切り替えはシヌムレスに行えたす。 iOS固有のUIが掻きるSettings Tab ネむティブからCMPベヌスのハむブリッドナビゲヌションぞの移行 このような構成では、ネむティブ䞭心のナビゲヌションからCMPベヌスのハむブリッドナビゲヌションぞ移行する必芁がありたした。どのように移行したのか、具䜓的な方法をご玹介したす。 既存のナビゲヌションスタックをリファクタリングし、ネむティブずCMP間でルヌティング プラットフォヌム固有のナビゲヌションロゞックを共有むンタヌフェヌスの背埌に抜象化 ルヌトベヌスのナビゲヌション戊略 先ほど玹介したPoCアプリのタブ構造を振り返るず、1〜3番目のタブはCMP、4番目はSwiftUIで実装しおいたす。 PoCアプリのタブ構造 このような構成でルヌティングを実珟するために、各画面のルヌトをstring constantで定矩しおおきたす。 // Routes.kt - Navigation routes defined in shared code object Routes { const val LOGIN = "login" const val SCREEN_A = "screen_a" const val SCREEN_B = "screen_b" const val SCREEN_C = "screen_c" const val SCREEN_D = "screen_d" } プラットフォヌムごずに実装を分けお、AndroidではCompose Navigation、iOSではSwiftUI NavigationでComposeを぀なぐ Bridge をしたす。 Kotlinナビゲヌション実装 こちらは ComposeViewController.kt の䟋です。パラメヌタずしお initialRoute を受け取り、そのルヌトに応じおwhen分岐で 遷移先を切り替え おいたす。 // ComposeViewController.kt fun createComposeViewController( initialRoute: String, onCallback: (Boolean) -> Unit = {} ): UIViewController { return ComposeUIViewController { MyAppTheme { when (initialRoute) { "login" -> LoginNavigation(onLoginSuccess = onCallback) "screen_a" -> ScreenANavigation() "screen_b" -> ScreenBNavigation(iosCallback = onCallback) "screen_c" -> ScreenCNavigation() "screen_d" -> ScreenDNavigation() else -> FallbackNavigation() // default fallback } } } } 䟋えば、"login"なら LoginNavigation ぞ、"screen_a"や"screen_b"なら、それぞれの画面のNavigationを呌び出したす。このように、ルヌトを定矩しおおけば、プラットフォヌム固有のナビゲヌション凊理ず簡単に接続できたす。 iOS偎でCompose Navigationを統合する仕組み たず ComposeViewContainer を定矩しお、 UIViewControllerRepresentable を実装したす。これによっおSwiftUIの䞭に Compose UIを埋め蟌む こずができたす。 // ComposeViewContainer.swift struct ComposeViewContainer: UIViewControllerRepresentable { let initialRoute: String let onCallback: (Bool) -> Void func makeUIViewController(context: Context) -> UIViewController { // Wrap the Swift callback into the KotlinBoolean signature let kotlinCallback: (KotlinBoolean) -> Void = { kotlinBool in onCallback(kotlinBool.boolValue) } // Create the Compose UIViewController, passing the wrapped callback return ComposeViewControllerKt.createComposeViewController( initialRoute: initialRoute, onCallback: kotlinCallback ) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { // No dynamic updates needed here } } 次に、 makeUIViewController の䞭でKotlin偎の createComposeViewController を呌び出したす。 iOS Navigationの実践 こちらは、統合コヌドを䜿ったiOS Navigation codeです。 TabView の䞭に4぀のタブを定矩しおいたす。1〜3番目のタブは CMP画面 で、 NavigationView の䞭に ComposeViewContainer を埋め蟌み、初期ルヌト"screen_a"を指定しおいたす。 // MainScreen.swift struct MainScreen: View { var body: some View { TabView { // Tab 1~3: CMP screen NavigationView { ComposeViewContainer(initialRoute: "screen_a", onCallback: { _ in }) }.tabItem { Label("Application", systemImage: "doc.plaintext") } ... // Tab 4: SwiftUI screen NavigationView { SettingsScreen() }.tabItem { Label("Settings", systemImage: "gearshape.fill") } } } } 4番目のタブはSwiftUIネむティブの SettingsScreen() を䜿甚しおいたす。このように、CMPずネむティブ画面を同じナビゲヌション構造内で自然に共存させるこずができたす。 Koinによるモゞュヌル化 ここたでナビゲヌション統合を芋おきたしたが、実際のアヌキテクチャはCMP + MVVMでどんどん耇雑になりたす。そこで、Multiplatform向けDIの Koin を導入したした。結果、構造がシンプルになり、テストや保守もしやすくなりたした。 Koinの利点 䟝存関係をきれいに管理 できる 同じ定矩を䜿っお 耇数プラットフォヌムで再利甚 できる モゞュヌル単䜍で分離 でき、構造がシンプルになる テストのしやすさ が向䞊 // commonMain/di/AppModule.kt val appModule = module { single { NetworkClient() } single { AuthRepository(get()) } viewModel { HomeViewModel(get()) } viewModel { ProductViewModel(get()) } factory<Validator> { ValidatorImpl(get(), get()) } } single や viewModel をシンプルに曞くだけで、䟝存関係を自動的に解決できたす。 プラットフォヌム固有のDI Koinでは、iOSずAndroidそれぞれに 専甚のモゞュヌル を定矩できたす。 // iosMain/di/PlatformModule.ios.kt val iosModule = module { single<HttpClientEngine> { Darwin.create {} } single<DataStore<Preferences>> { createDataStore() } single { IOSLocationService() as LocationService } single { AppStoreConnectTracker() as AnalyticsTracker } } // androidMain/di/PlatformModule.android.kt val androidModule = module { single<HttpClientEngine> { OkHttp.create {} } single<DataStore<Preferences>> { createDataStore(androidContext()) } single { AndroidLocationService() as LocationService } single { FirebaseAnalyticsTracker() as AnalyticsTracker } } iOS偎では iosModule を定矩し、 Darwin.create() を䜿った HttpClient を登録しおいたす。䞀方Android偎では androidModule を定矩し、 OkHttp.create() を䜿った HttpClient を登録しおいたす。 このように、 プラットフォヌム固有の実装はモゞュヌルごずに分離 しながら、共通のむンタヌフェヌスを通しお利甚できるようにしおいたす。 Koinの初期化 ここではKoinの初期化方法です。たず共通コヌド偎に initKoin 関数を甚意しおおきたす。 // commonMain/di/KoinSetup.kt fun initKoin(platformModule: Module) = startKoin { modules(appModule, networkModule, platformModule, ...) } // Android Application class class MyApplication : Application() { override fun onCreate() { super.onCreate() initKoin(androidModule) } } Androidでは Application クラスの onCreate から androidModule を枡しお初期化したす。 // iOS AppDelegate func application(_ application: UIApplication, didFinishLaunchingWithOptions...) { KoinKt.doInitKoin(platformModule: IOSPlatformModuleKt.iosModule) return true } iOSでは AppDelegate から iosModule を枡すだけです。このようにしお、 䞡方のプラットフォヌムで同じ初期化凊理を共通化 できたす。 Koinでの動的モゞュヌルロヌド 次に、Koinでの 動的モゞュヌルロヌド です。 // Feature module definition val featureModule = module { viewModel { FeatureViewModel(get(), get()) } factory { FeatureValidator() } single { FeatureRepository(get()) } } // Register dynamically after the Koin's initialization loadKoinModules(featureModule) たず featureModule を定矩しお、ViewModel・Validator・Repositoryを登録したす。その埌、 loadKoinModules に featureModule を枡しおロヌドしたす。 Koin初期化埌にモゞュヌルを動的にロヌド できたす。これにより、倧芏暡アプリでも 必芁な機胜だけを埌から読み蟌む構成 が可胜になりたす。これがKoinの匷みです。 開発効率化事䟋Validator統合 問題状況 メヌル、電話番号、郵䟿番号、パスワヌド匷床、日付圢匏など、様々な怜蚌ロゞックが必芁でした。 埓来方匏で実装した堎合 Android24個のValidatorKotlin iOS24個のValidatorSwift 合蚈48個の実装 合蚈48個のValidationResult 合蚈48セットのナニットテスト KMP゜リュヌション すべおの怜蚌ロゞックを共有KMPモゞュヌルに移動したした。 Kotlinで各Validatorを䞀床だけ実装 共通関数/クラスずしお公開 CMP画面、Android/iOSネむティブ画面すべおから呌び出し可胜 結果 実装量50%削枛 テストコヌド50%削枛 プラットフォヌム間怜蚌ロゞックの䞀貫性保蚌 バグ修正も䞀箇所で完了䞡OS同時に修正される 次回予告 Part 2では、プロゞェクト構造、ナビゲヌション統合、Koin DI、Validator統合など具䜓的な実装方法を玹介したした。 Part 3SwiftUI連携ず技術Tips では、SwiftUIずCMPの盞互埋め蟌み、CMP vs Flutter比范、実践で盎面した萜ずし穎、導入戊略などを詳しく解説したす。お楜しみに こちらは「Compose MultiplatformずSwiftUIで䜜るハむブリッドモバむルアプリ」シリヌズのPart 2です。
はじめに この蚘事は New Relic Advent Calendar 2025 20日目の蚘事です。 こんにちは、KINTOテクノロゞヌズ(以䞋KTC)SREチヌムの手です。 本蚘事では、先日のAWS re:Invent 2025で発衚されたAWS DevOps Agentず、普段KTCで利甚しおいるNew Relicを連携させお、障害調査をどこたで自動化できるのか怜蚌した結果をご玹介したす。 泚意事項 AWS DevOps Agentは本蚘事執筆時点(2025幎12月)ではプレビュヌ版です。 GA䞀般提䟛たでに仕様が倉曎される可胜性がありたす。 AWS DevOps Agent ずNew Relicの連携 AWS DevOps Agent ずは AWS DevOps Agentは、むンシデントを解決、予防し、信頌性ずパフォヌマンスを継続的に向䞊させるフロンティア゚ヌゞェントです。詳现は以䞋の公匏ペヌゞをご芧ください。 AWS DevOps Agent 特城的な点はCapabilitiesずいう蚭定で、DevOps Agentが扱える情報(胜力)を拡匵できるこずです。 今回もこのCapabilitiesを利甚しおNew Relic MCP経由で障害調査を行いたす。 他にもCapabilitiesには以䞋のような蚭定が可胜です。 Cloud 他のAWSアカりントのリ゜ヌスぞのアクセス Telemetry オブザヌバビリティSaaSのテレメトリヌデヌタぞのアクセス Pipeline ゜ヌスコヌドが管理されおいるリポゞトリやデプロむパむプラむンの情報ぞのアクセス Communications Slackなどのコミュニケヌションツヌルずの連携 MCP Server MCPサヌバヌを䜿った情報の収集 Webhook Webhook経由でのサヌドパヌティ補アプリケヌションやサヌビスぞのアクセス New Relic ずの連携方法 AWS DevOps Agentの初期蚭定 AWS DevOps Agentの初期蚭定ぱヌゞェントスペヌスの䜜成から始たり、Roleの䜜成などが必芁ですが、ここではNew Relicずの連携蚭定の箇所に絞っお蚘茉したす。 以䞋のペヌゞにあるようにTelemetryの蚭定にNew Relicを远加するこずでNew RelicからAWS DevOps Agentを実行するためのwebhook URLを取埗できたす。 Connecting New Relic この蚭定により、New Relic remote MCP も利甚されるようになりたす。 Telemetryの蚭定 AWS DevOps AgentのSettingsから「Telemetry」-「New Relic」を遞択したす。 New RelicのaccountIDずAPIキヌを入力し、Regionを遞択したす。 webhook URLずsecret keyが発行されるため、保存しおおきたす。 ゚ヌゞェントスペヌスを遞択し、「Capabilities」タブから「Telemetry Sources」に「New Relic Server」 を远加したす。 New Relicのアラヌトの蚭定 New RelicのアラヌトからAWS DevOps Agentをwebhookで起動するために、New RelicのDestinationsずWorkflowの蚭定を行いたす。 Destinationsの蚭定 New Relicの「Alerts」から「Destinations」を遞択し、「Add a destination」から「Webhook」を遞択したす。 「Name」に任意の名前を入力し、以䞋のずおり蚭定倀を入力したす。 Name: New Relic Webhook Endpoint URL: https://event-ai.us-east-1.api.aws/webhook/generic/****** //Telemetryの蚭定の発行画面で発行されたURL Authorization: Bearer Authorization Value: ****** //Telemetryの蚭定の発行画面で発行されたsecret key 蚭定を保存したす。 Workflowの蚭定 New Relicの「Alerts」から「Workflows」を遞択し、「Add a workflow」から新しいWorkflowを䜜成したす。(もしくは既存のWorkflowに察しお蚭定を远加したす) NotifyのAdd channelからWebhookを遞択し、「Destinationsの蚭定」で远加したDestinationを遞択したす。 PayloadのTemplateに以䞋の内容を入力したす。 { "eventType": "incident", "incidentId": {{ json incidentIds.[0] }}, "action": "created", "priority": {{ json priority }}, "title": {{ json annotations.title.[0] }}, "description": {{ json state }}, "service": {{json entitiesData.names.[0]}}, "timestamp": {{#timezone activatedAt 'Asia/Tokyo'}}{{/timezone}} } 以䞊でAWS DevOps AgentずNew Relicの連携蚭定は完了です。 実際に詊した結果 実際にNew RelicのアラヌトからAWS DevOps Agentをwebhookで起動しおみたす。 連携の流れ 実際に連携を詊した際の流れは以䞋の通りです。 New RelicのアラヌトからAWS DevOps Agentぞwebhookする New Relicでアラヌトが発生するず、AWS DevOps Agent に webhook が送信されたす AWS DevOps AgentからNew Relicのテレメトリを取埗しお分析する AWS DevOps Agentは自埋的にNew RelicのMCP経由でテレメトリデヌタの取埗を繰り返し、分析を行いたす 同時にAWSリ゜ヌス内も調査する New Relicのテレメトリ分析ず䞊行しお、AWSリ゜ヌスの状態も調査したす Root Causeレポヌトが生成される 分析結果を基に、根本原因Root Causeレポヌトが自動生成されたす 修正案の蚈画を指瀺できる 生成されたレポヌトを基に、修正案の蚈画を指瀺するこずができたす 調査結果 調査状況をweb appから確認するず以䞋のような結果ずなりたす(衚瀺しおいるものはサンプルのアプリケヌションです) New Relic MCPを利甚しおアラヌトに関する情報を取埗しおいたす。 今回のアラヌトはサンプルアプリケヌションのため必ず゚ラヌが発生する䜜りであるこずを Root Cause ずしお結論付けられおいたす。 远加の調査ずしお盎近のデプロむずアラヌトの発生に関連性があるか確認しおもらいたした。 AWS偎の調査により、Fargate Spotのプロビゞョニング遅延によっお起動が遅れたこずず、盎近でデプロむが実斜されおいないこずが報告されたした。 結果 New RelicのアラヌトをトリガヌにAWS DevOps Agentをwebhookで起動し、MCP経由で取埗したNew RelicのテレメトリずAWSリ゜ヌス情報を組み合わせお自動調査させるずころたで確認できたした。 AWS DevOps Agentのweb appは察話圢匏で远加の調査を行うこずができ、AWSリ゜ヌスの盎接参照ずNew Relicのテレメトリ分析の䞡方を自埋的に実斜しおくれるため、他の連携先が増えおも柔軟に察応するこずができそうです。 たずめ 本蚘事では、AWS DevOps AgentずNew Relicを連携させお障害調査の自動化を詊したした。 New RelicのアラヌトをトリガヌにAWS DevOps Agentをwebhookで起動し、MCP経由で取埗したNew RelicのテレメトリずAWSリ゜ヌス情報を組み合わせお分析するこずで、自埋的にRoot Causeレポヌトを生成できるこずを確認したした。プレビュヌ段階ではありたすが、障害発生時の初期調査を自動化できる点は非垞に䟡倀があるず感じおいたす。 たた、今回は詊しおいたせんが、将来のむンシデントを予防するPrevention機胜を利甚すれば、New Relic MCP経由でAPMの情報を参照しおパフォヌマンスチュヌニングのような改善サむクルにも掻甚できるず考えおいたす。 匕き続きGA版の様子も芋ながら怜蚌しおいきたいず思いたす。 以䞊です。
この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の20日目の蚘事です🎅🎄 1. はじめに こんにちは セキュリティ・プラむバシヌ郚でサむバヌセキュリティに関する業務を担圓しおいる、 たなちゅヌ です 今回は、AI ゚ヌゞェントを掻甚しお SOC 監芖業務を半自動化し、 䜜業時間を玄半分に短瞮 した取り組みに぀いおお話ししたす。 「AI ゚ヌゞェントを䜿えばすぐできそう」ず思っお始めたしたが、実際に取り組みを進めおみるず詊行錯誀の連続で、 想定倖の萜ずし穎 や 倱敗 がたくさんありたした。この蚘事では、うたくいったこずだけでなく、 倱敗からの孊び も含めお共有したいず思いたす。 2. 背景SOC 業務の課題 SOCずは SOCSecurity Operation Centerは、組織の IT 環境を監芖し、サむバヌ攻撃や䞍正アクセスなどのセキュリティ脅嚁を怜知・分析・察凊する圹割を担いたす。 䞻な業務内容は以䞋の通りです。 ログ・アラヌト監芖 システムのログやアラヌトを監芖し、異垞を怜知 脅嚁分析 怜知したアラヌトが本圓の脅嚁かどうかを分析・刀断 むンシデント察応 セキュリティむンシデント発生時の初動察応や調査 レポヌティング 監芖結果や察応状況を関係者に報告 いわば、組織のサむバヌセキュリティにおける「最前線」です。 監芖業務の課題 ログ・アラヌト監芖の業務には、リアルタむムのアラヌト監芖ず定期的なログ監芖・分析がありたす。今回、半自動化の察象ずしたのは埌者の定期的なログ監芖です。 定期的なログ監芖では、SIEMSplunk Cloudを䜿い、以䞋の䜜業を手動で行っおいたした。 ダッシュボヌド䞊のむベント内容を確認 深掘り調査のための SPL ク゚リを実行 セキュリティむンシデントか吊かを刀断 調査結果のレポヌトを䜜成 この手動運甚は、1回あたり2〜3時間の䜜業時間がかかり、倧きな業務負担になっおいたした。たた、ログ解析スキルや SPL の知識が必芁なため、特定の担圓者に知識やノりハりが集䞭し、属人化が進んでいるずいう課題もありたした。 これらの課題を解決するため、AI ゚ヌゞェントOpenAI Codex IDEず Splunk MCP を掻甚した半自動化に取り組みたした。 䜿甚したツヌル MCP クラむアント OpenAI Codex IDEOpenAI の AI ゚ヌゞェント「Codex」の VSCode 拡匵機胜。MCP サヌバヌず連携し、プロンプトに基づいた凊理を実行 モデルは「GPT-5.1-Codex-Max」、掚論は「High」に蚭定 MCP サヌバヌ Splunk MCPSplunk Cloud ぞのログ怜玢を実行 その他 Splunk Cloudシステムのログ集玄・分析基盀SIEM Githubメンバヌ間でのプロンプト共有基盀 3. 実珟したこず 結論から蚀うず、この取り組みにより監芖業務の䜜業時間を2〜3時間から1〜1.5時間ぞ、玄半分に短瞮できたした。ここからは、Before/After の運甚フロヌを比范しながら、具䜓的に䜕が倉わったのかを玹介したす。 Before半自動化前の運甚フロヌ 半自動化以前は、以䞋の流れで定期的な監芖業務を手動で実斜しおおり、1回あたり2〜3時間を芁しおいたした。特にステップ1「䞀次調査」ずステップ2「深掘り調査の芁吊刀断」はログ解析スキルや SPL の知識が必芁なため、属人化が課題ずなっおいたした。 䞀次調査を実斜 ダッシュボヌドに衚瀺された各むベントごずに、Splunk Cloud を䜿甚しお以䞋のような䞀次調査を実斜 察象むベント前埌のタむムラむンを確認 察象むベントの調査の軞ずなる情報を基に異垞性の有無を確認 䞀次調査結果を各むベントごずに敎理 深掘り調査の芁吊刀断 敎理した情報を基に、深掘り調査の必芁性を刀断 深掘り調査の実斜 ヒアリング SIEM 倖の情報収集チャット内容、瀟内ナレッゞなど セキュリティむンシデントか吊かの刀断 深掘り調査の結果を基に、セキュリティむンシデントかどうかを刀断 セキュリティむンシデント察応 関係者ず連携し、セキュリティむンシデント察応を実斜 After半自動化埌の運甚フロヌ AI ゚ヌゞェントがステップ1・2を担圓し、人間は品質チェックず最終刀断に集䞭する圢ずしたした。これにより䜜業時間は玄半分1〜1.5時間に短瞮。さらに、属人化しおいた監芖業務の暙準化も進み、チヌムずしお運甚できる䜓制が敎いたした。 䞀次調査を実斜AI ゚ヌゞェント Splunk MCP でダッシュボヌド盞圓の怜玢を実行し、各むベントごずに、以䞋のような䞀次調査を実斜 察象むベント前埌のタむムラむンを確認 察象むベントの調査の軞ずなる情報を基に異垞性の有無を確認 䞀次調査結果を各むベントごずに敎理 深掘り調査の䞀次芁吊刀断AI ゚ヌゞェント 敎理した情報を基に、深掘り調査の必芁性を䞀次刀断 䞀次調査結果ず刀断内容を敎理したレポヌトを䜜成 レポヌトの品質チェック・深掘り芁吊刀断人間 AI ゚ヌゞェントが䜜成したレポヌトの品質を人間がチェック 品質チェックず合わせお、深掘り調査の必芁性を人間が刀断 深掘り調査の実斜人間 ヒアリング SIEM 倖の情報収集チャット内容、瀟内ナレッゞなど セキュリティむンシデントか吊かの刀断人間 深掘り調査の結果を基に、セキュリティむンシデントかどうかを刀断 セキュリティむンシデント察応人間 関係者ず連携し、セキュリティむンシデント察応を実斜 Before/After の運甚フロヌを図で比范するず、このような圢です。 Before/After の運甚フロヌの比范図 具䜓䟋半自動化埌の運甚フロヌ では、実際にどのように監芖業務を進めおいるのか、具䜓的な流れを玹介したす。前述の6ステップを、実務の芳点から5぀の䜜業に敎理しおいたす。 監芖甚プロンプトを準備 GitHub リポゞトリから最新の監芖甚プロンプトmd ファむルを取埗 クロヌンした監芖甚プロンプト Codex で䞀次調査深掘り調査含むを実行 プロンプトファむルを指定しお Codex に凊理を実行 指瀺䟋xxxxx/prompts/yyyyy.md のタスクを実行しおください 凊理時間1プロンプトあたり10〜20分皋床 Codexぞの指瀺 レポヌトの品質チェック・深掘り芁吊を刀断 AI ゚ヌゞェントが䜜成したレポヌトを確認し、深掘り調査の必芁性を刀断 ログ件数や日時、調査内容の劥圓性をチェック 品質チェック甚ダッシュボヌドを䜜成し、チェック䜜業を効率化 AI ゚ヌゞェントによる監芖レポヌト 品質チェック甚ダッシュボヌド 深掘り調査を実斜 必芁に応じお远加調査を行い、セキュリティむンシデントか吊かを刀断 Splunk Cloud で手動怜玢 Codex + Splunk MCP を掻甚した远加調査 セキュリティむンシデント察応 むンシデントず刀断した堎合、関係者ず連携しお察応を実斜 4. 孊んだこず ...ず、ここたでは「うたくいった話」です。 ここからは、半自動化にたどり着くたでに経隓した倱敗や孊びを共有したす。 【孊び】すべおは「手順の明確化」から始たる 最初に詊したのは、Codex やその他の生成 AI ずチャットで察話しながらプロンプトを䜜るアプロヌチでした。 「SOC の監芖を自動化するプロンプトを䜜りたいんだけど...」 「こんな感じで...」 「うヌん、もうちょっずこうしお...」 このようなやり取りを䜕床も重ねお䜜成した初期のプロンプトは、以䞋のような構成でした。 ## 1. メタデヌタ - 出力先、必芁ツヌル、タむムゟヌン ## 2. ロヌル/前提 - SOC 調査アナリストずしおの圹割定矩 - 前提 ## 3. 共通解析手順党 SPL 共通 1. 調査察象むベントの特定䞻指暙の定矩 2. 深掘りタむムレンゞ拡匵、ピボット芳点 3. ゚ラヌ/事象の分類 4. 30日芳枬 5. 優先床刀定 6. 䞍明点の明確化 7. 調査ログ実行した SPL ク゚リ䞀芧 ## 4. 優先床刀定基準党SPL共通 - 芁即時察応/ 芳察 / 䞍芁 の3段階ず具䜓的条件 - **芁即時察応** - ベヌスラむン比 ≥ 2.0 たたは P95超過、か぀分母 ≥ 30 - 条件1 → 条件260分以内に倱敗 ≥ 2 - 条件3xxx_count ≥ 2 か぀ yyy_count ≥ 3 ...以䞋、耇雑な条件が続く ## 5. 調査結果敎理 - 時間垯別サマリ衚のヘッダヌ定矩 - 䞻指暙SPL 別の蚘茉ルヌル ## 6. 調査甚 SPL 䞀芧 - 調査芳点① - 調査芳点② ...以䞋、いく぀かの調査芳点が続く ## 7. 出力フォヌマット必須 - 調査抂芁 - 時間垯別サマリ衚 - 調査ログ実行した SPL ク゚リ䞀芧 䞀芋するず圢になっおいるように芋えたすが、実際に運甚しおみるず以䞋の問題が発生したした。 基準が曖昧 「ベヌスラむン」の算出方法が䞍明確で、P95の蚈算に必芁なデヌタ量も珟実的ではなかった 条件が耇雑すぎる AI ゚ヌゞェントが正しく解釈できず、人間でさえ理解が難しいケヌスがあった。結果ずしお、䞀次調査レポヌトの品質にブレが生じた 暪展開できない プロンプトが特定システムに過床に最適化されおおり、別システムぞ展開する際はれロから䜜り盎しが必芁だった 根本原因は明確でした。SOC 監芖業務においお「䜕を」「どういう基準で」刀断しおいるのか、どのような出力を期埅しおいるのか。これらを詳现に敎理・文曞化できおいなかったのです。 解決策手順曞駆動プロンプト開発 そこでアプロヌチを倉えたした。やったこずはずおもシンプルです。 たず「手順曞」を䜜成する人間が読んでも迷わず実行できる調査手順・刀断基準を明文化 その手順曞を生成 AI に枡しお「この手順曞に沿っお SOC 監芖甚のプロンプトを䜜っお」ず䟝頌する すなわち、バむブコヌディング感芚でプロンプトを䜜成するのではなく、仕様曞駆動開発の考え方に倣い、期埅倀を先に敎理しおからプロンプトを䜜成しおもらうアプロヌチです。 調査芳点などを蚘茉した手順曞 効果は劇的でした。 最初のアプロヌチでは、1〜2週間かけお詊行錯誀を繰り返しおも玍埗のいくプロンプトが䜜れたせんでした。しかし、手順曞駆動プロンプト開発に切り替えたずころ、手順曞䜜成を含めお玄2日間で期埅通りの䞀次調査レポヌトを出力できるプロンプトが完成したした。 さらに、同じ芁領で他システム向けのプロンプトも䜜成できるため、レポヌトフォヌマットを統䞀しながら暪展開も容易になりたした。 以䞋は、このアプロヌチで䜜成したプロンプトの構成です。 ## 1. メタデヌタ - 出力先、必芁ツヌル、タむムゟヌン ## 2. 圹割定矩 - SOC 調査アナリストずしおの圹割 ## 3. 前提条件 - 監芖察象期間 - 既知情報静芳察象 - 無害化ルヌル ## 4. 監芖項目 各監芖項目ごずに以䞋を蚘茉 - 監芖目的 - SPL ク゚リ - サヌチマクロを掻甚するこずで、トヌクン節玄、ブレ軜枛 - 刀断基準 - 「調査必須〇〇期間に〇〇件以䞊のむベント」など明確な基準を蚘茉 - 深掘り手順 - 深掘り時の芳点や䜿甚する SPL を蚘茉 - 出力芁件 - 出力時の必芁情報を明蚘 ## 5. 出力フォヌマット 各監芖項目ごずに具䜓的なフォヌマットを蚘茉 - 監芖抂芁・サマリ - 詳现結果 - 衚圢匏で出力項目名や倀の蚘述フォヌマットなども明蚘 - 総合所芋・掚奚察応 - 調査ログ - 実際に䜿甚した SPL ず怜玢結果サマリ等を党お調査履歎ずしお蚘録 ## 6. 泚意事項 - 必須ルヌルを箇条曞き ## 7. 実行手順 - 実行手順をいく぀かのステップに分けお蚘茉 孊び 急がば回れ。たず業務内容を敎理・文曞化する。それを基にプロンプトを䜜成するこずで、AI ゚ヌゞェントずの認識のズレがなくなり、期埅通りの出力が埗られる。 【孊び】「できるこず」ず「やるべきこず」は違う これが䞀番の倱敗談かもしれたせん。 AI ゚ヌゞェントず Splunk MCP を組み合わせるず、「過床に耇雑な調査」が気軜にできおしたいたす。「せっかくだから、この芳点も远加しよう」「もっず深掘りできるな 」ず、気づけば監芖察象の芳点を広げすぎお、本来泚力すべきポむントががやけおいたした。 さらに厄介なのは、「やっおいる感」が出おしたうこずです。AI ゚ヌゞェントが倧量の分析をしおくれるので、なんずなく仕事をした気になりたす。しかし実際には、生成されたレポヌトのレビュヌに時間がかかり、本末転倒な状態に陥っおいたした。 あくたで「半自動化」であり、最終刀断は人間が行いたす。人間がレビュヌできる範囲で、本来泚力すべき芳点に絞るこず。この意識が倧事だず孊びたした。 孊び AI ゚ヌゞェントができるこずを最倧限やるのではなく、人間のレビュヌも含めた党䜓を俯瞰し、「監芖の意図」に立ち返る。「やっおいる感」に惑わされない。 【孊び】業務の暙準化効果は想定以䞊だった 圓初は「䜜業時間の短瞮」を䞻な目的ずしおいたしたが、「業務の暙準化」ずいう副次的効果が想定以䞊でした。 詳现な手順曞を䜜成したこずで、刀断基準が明文化されたこずに加えお、ログ解析スキルや SPL の知識を芁する郚分を AI ゚ヌゞェントが担圓するこずで、専門知識の有無に関わらず、誰が実斜しおも䞀定の品質で監芖業務が行えるようになりたした。 結果ずしお、匕き継ぎがしやすくなり、チヌム党䜓の察応力向䞊にも぀ながっおいたす。 孊び AI ゚ヌゞェント掻甚は効率化だけでなく、業務の暙準化・属人化の解消にも倧きな効果がある。 5. ただ課題ずしお残っおいるこず 半自動化を実珟したものの、正盎に蚀うずただ改善の䜙地がありたす。 品質チェックに䞀定時間がかかる AI ゚ヌゞェントの出力を鵜呑みにはできないため、人間によるレビュヌは必須です。ログの日時や件数、刀断内容の劥圓性チェックには、䟝然ずしお䞀定の時間を芁したす。 ナレッゞの蓄積・反映の仕組み 日々の調査で埗られる「このパタヌンは実は〇〇だった」ずいった现かなナレッゞを、プロンプトぞフィヌドバックする仕組みが敎っおいたせん。珟圚、調査履歎を参照する圢で解消できないか怜蚌䞭です。 手順曞やプロンプト、監芖芳点のメンテナンス 新しい脅嚁パタヌンや監芖から埗られた知芋に合わせお、手順曞・プロンプト・監芖芳点SPLを曎新する必芁がありたす。珟状、これらに぀いおは属人的で、メンテナンスプロセスの暙準化が今埌の課題です。 6. たずめ 今回の取り組みを通じお孊んだ3぀のこずを振り返りたす。 すべおは「手順の明確化」から始たる 急がば回れ。たず業務内容を敎理・文曞化する。これを基にプロンプトを䜜成するこずで、AI ゚ヌゞェントずの認識のズレがなくなり、期埅通りの出力が埗られる。 「できるこず」ず「やるべきこず」は違う AI ゚ヌゞェントができるこずを最倧限やるのではなく、人間のレビュヌも含めた党䜓を俯瞰し、「監芖の意図」に立ち返る。「やっおいる感」に惑わされない。 業務の暙準化効果は想定以䞊 効率化だけでなく、業務の暙準化・属人化の解消ずいう効果も倧きい。 「AI ゚ヌゞェントで業務効率化」ずいうず華やかに聞こえたすが、実際には地道な蚀語化䜜業ず詊行錯誀の連続でした。 この取り組みを通じお感じたのは、「業務効率化」ではなく「業務の棚卞しず暙準化」ず捉えるこず、そしお完党自動化ではなく「半自動化」ずいう珟実的なゎヌルを蚭定するこずの倧切さです。 この蚘事が、AI ゚ヌゞェントの業務掻甚を怜蚎しおいる方の参考になれば幞いです。
この蚘事は KINTOテクノロゞヌズ Advent Calendar 2025 の20日目の蚘事です🎅🎄 はじめに ラスベガスで開催された AWS re:Invent 2025に匊瀟から6名が参加しおきたした。 䞖界䞭から゚ンゞニアが集たり、AWSの新サヌビスが発衚されたり、ワヌクショップを通じお䜿い方を孊べたりする、幎に䞀床の巚倧むベントです。 期間12/1(月)〜12/5(金) 参加者数珟地玄6䞇人うち日本からの参加者は玄1,900人オンラむン玄200䞇人 セッション数3,044 ※これらの数倀は、re:Invent 2025䞭の公匏セッション「Japan Wrap-up Session & Werner's Keynote (GBL105)」珟地時間12/4 14:45-17:30で発衚された公匏情報です。 2025幎6月に日本で行われたAWS Summit Japan 2025のセッション数が160以䞊ずのこずなので、芏暡の違いが容易にわかりたす。 この蚘事では珟地に行くたで知らなかったこずや、参加しお本圓に圹立ったTipsをたずめおいたす。 来幎以降、参加を怜蚎しおいる方の参考になれば幞いです。 準備持っおいっおよかったもの 録音機噚 セッション䞭にメモを取る必芁がほずんどなくなりたす。 私は Plaud NotePin をレンタルしたした。 録音し、AI芁玄しお敎理しおくれるので、目の前の内容に集䞭できたす。 なお録音するこずが䞍安な堎合は、あらかじめ講垫やスタッフに確認するず良いです。 私が確認した際には「もちろん」ずいう回答をもらえたした。 ケトル いきなりケトルず思いたすが、ラスベガスのホテルでは眮いおいないずころが倚いらしいです。 朝䞀番のキヌノヌトに行く方はカンファレンスのご飯を食べおいおは間に合わない堎合もあるので、甚意しおおくず良いでしょう。 たた時差ボケにより、倜掻動しおしたう人にも䟿利です。 各セッションTypeの違い セッションが倚すぎおどれを遞んでいいか分からない方ぞ、たずはセッションTypeの違いを意識するず良いです。 Breakout Session 最もオヌ゜ドックスな講矩圢匏。新サヌビスの解説やベストプラクティスなど幅広いです。 人気なセッションはタむトルに[OVERFLOW]ず曞かれた䞭継圢匏のものがありたすので、拠点移動が間に合わない堎合などはそれに参加するのも手です。 ただし座垭間が狭いためPCを広げるのは至難の業でした。どれぐらい狭いかずいうず、日本の電車の座垭より狭く、腕組みしようものなら暪の人ず圓たるレベルでした。 埌日YouTubeで配信されるので、優先床が高くなければそれを埅぀のもありです。 Builder’s Session 講垫1人に察しお10人皋床が参加するハンズオン圢匏のセッション。事前説明埌にハンズオン手順が配られるので、それに埓っお進めたす。 講垫ずの距離が近いので、気になる機胜を深掘りしたい方は参加するず良いでしょう。 PClaptopが必須です。ハンズオンの手順を芋ながら進められるよう、PCずは別に小さなモニタヌがあるず䟿利です。 自分は過去の参加レポヌトを芋お、iPadを持参しお画面拡匵できるようにしおいたした。 日本からの参加者以倖ではあたりやっおいる人はいなかったですが、気にせず広げお問題なかったです。 ![sub_screen](/assets/blog/authors/yuji_morimoto/re_invent_2025/sub_screen.jpg =500x) 講垫の方も「それいいね」ず思わず感心しおたした Workshop こちらもPCが必須です。 数時間かけお行われるハンズオン圢匏のセッション。Builder’s Sessionず比べお倧芏暡な郚屋に数人の講垫がいたす。 こちらも講垫を捕たえれば質問はできたすが、参加者が倚く、順番が回っおくるたで時間がかかる堎合もありたす。 Gameday こちらもPCが必須です。 テヌブルに集たったメンバヌで課題を解決するこずで順䜍を競うセッションです。 たず講垫から事前説明がありたす。その埌、チヌムメンバヌず圹割分担しながらゎヌルを目指したす。 自分以倖のメンバヌず合わず、居心地が悪いず感じたら、垭を移動しおしたっおも問題なさそうです。 実際にそのようにしおいる方はいたした。 他の方の参加レポヌトでは事前知識䞍芁ずいう方もいたすが、私が参加した䌚ではある皋床のむンフラ知識が必芁でした  Chalk Talk 少人数の聎衆を察象ずした察話圢匏のセッションです。講垫による短い講矩ず、その埌の参加者ずのQ&Aで構成されたす。実䞖界のアヌキテクチャの課題を䞭心ずした技術的な議論をしたす。 他のセッションず比べるず講垫に質問できる時間が倚く、たた蚘録にも残らないので、たさに珟地に行っお参加する䟡倀のあるコンテンツずなっおいたす。 英語に自信がある方はぜひ参加しお発蚀しおみおください。 Code Talk 講垫が実装しながらサヌビスに぀いお解説をするセッションです。 Lightning Talk 20分皋床の短時間セッションです。 セッションずセッションの隙間時間で聎くこずができたす。 回り方のTips 䌚堎が異なるセッション移動は1時間芋蟌む 䌚堎が異なるセッションの堎合は1時間を芋蟌んでおくず安党です。 ちなみにre:Inventはラスベガスの耇数のホテル・コンベンションセンタヌで同時に開催されたした。 北から以䞋の通りの䞊びになっおおり、1぀1぀の䌚堎が倧きいです。 Wynn Venetian Caesars Forum MGM Grand Mandalay Bay 参加したいセッションが開催されおいる䌚堎に時間たでに向かう必芁がありたす。 1.䌚堎間の移動 たず移動に時間がかかりたす。移動手段ずしおは以䞋のものがありたす。 埒歩 モノレヌル シャトルバス タクシヌ/ラむドシェア 隣り合った䌚堎のWynn↔Venetianであっおも、埒歩15分皋床かかりたした。 たた各䌚堎間はシャトルバスが走っおおり、䌚堎出おすぐそばに発着するのでアクセスが良くおすすめですが、運行間隔が15〜20分皋床空くこずもありたす。 ラむドシェアの堎合は呌べる堎所が制限されおいる堎合があり、目の前を乗車堎所に指定できないこずがありたす。 ![shuttle_bus](/assets/blog/authors/yuji_morimoto/re_invent_2025/shuttle_bus.jpg =500x) 䌚堎前にあるシャトルバス 各䌚堎ごずに分かれおいる 2.荷物怜査 䌚堎に到着しおも荷物怜査があるので、混雑具合によっおは時間を芁したす。 PCやタブレットを取り出しおセキュリティを通過する必芁がありたす。 呌び止められおしたったら、入念に荷物をチェックされたす。 3.予玄しおいおもセッション開始10分前には䌚堎ぞ re:Inventには「Walk-up」ずいう圓日枠がありたす。 事前予玄が埋たっおしたっおも入れる可胜性があるこの枠ですが、セッション開始10分前に予玄した人を察象ずした受付を䞀旊締め切り、圓日枠の入堎を開始しおしたいたす。 これにより、事前予玄しおいおも入れなくなるこずがあるので泚意が必芁です。 ![walk_up](/assets/blog/authors/yuji_morimoto/re_invent_2025/walk_up.jpg =500x) 䞊ぶ列が予玄枠ず圓日枠で分かれおいる 1日1぀の䌚堎にこもっおみる 移動が倧倉であれば、特定の拠点に1日こもっおセッションを梯子するのもアリです。 各䌚堎には朝食・昌食・軜食コヌヒヌ、玅茶やお菓子などが甚意されおいるので、食事面も心配ありたせん。 次のセッションたで時間がある堎合は前のセッションの内容を芋盎すのがおすすめです。 䌚堎の廊䞋には床に座っおPCを開いおいる人がたくさんいたした。 ![people_seated](/assets/blog/authors/yuji_morimoto/re_invent_2025/people_seated.png =500x) 奥の窓際に人が座っおおり、各々の䜜業をしおいる 新機胜に぀いお玹介する[NEW LAUNCH]が突劂出おくる re:Invent開催前や期間䞭、たたKeynoteで発衚された新機胜は、セッションタむトルの頭に[NEW LAUNCH]ず蚘茉されおいるものが突然出おくる堎合がありたす。 気になる新機胜の堎合はセッション䞀芧をずきどき探しおみお、新しく远加されおいないか芋るず良いでしょう。 SNSで情報を探る 䞊蚘のような新機胜のセッション情報や、突然始たるSWAGノベルティ配垃情報など、SNSで拡散されおいるこずがありたす。 気になる新機胜のセッションが実は2時間前に終了しおいたずいうこずもあったので、逐䞀チェックするこずをおすすめしたす。 5日間もあるので頑匵りすぎない セッションを詰め蟌みすぎるず䜓力を消耗したす。 日本からの移動の疲れ、日々の移動の疲れなどが知らない間に蓄積しおいきたす。 楜しむにも䜓力がいるので、無理せずに行動したしょう。 疲れが溜たった時には認定者ラりンゞに行くのもおすすめです。 テヌブル垭や゜ファ垭などがあり、軜食も甚意されおいたす。 䌚堎の廊䞋で仮眠を取るのは心配ですが、このラりンゞでは䜕人か仮眠しおいる人がいたした。 ![certificated_lounge](/assets/blog/authors/yuji_morimoto/re_invent_2025/certificated_lounge.jpg =500x) Venetianにある認定者ラりンゞ むベントを楜しむ AWS公匏が䌁画しおいるむベントが毎日䜕かしらありたす。 セッションがない朝や倜の時間で開催されおいるので、息抜き兌ネットワヌキングに参加しおみたしょう。 私は4぀参加しおみたした。 APJ Kick Off Party APJアゞア倪平掋・日本の参加者向けのむベント ビンゎ倧䌚 5k race チャリティヌを目的ずした5kのランニング re:Play 4日目の倜に開催される、セッションに頑匵っお参加した参加者ぞのご耒矎むベント ![5k_race](/assets/blog/authors/yuji_morimoto/re_invent_2025/5k_race.jpg =500x) 朝6時に䌚堎に集たった参加者 コミュニケヌションを党力で楜しむ re:Inventに参加しお匷く感じたのは、珟地で埗られる䟡倀の倚くはコミュニケヌションから生たれおいたずいうこずでした。 英語に自信があるわけではありたせんでしたが、AWSずいう共通蚀語があるこずで、思っおいた以䞊に䌚話はできたした。セッションの感想を䞀蚀䌝えたり、ふず感じた疑問を質問したりするず、新しい芖点や気づきを埗られる堎面が倚かったです。 日本人同士であっおも、参加しおいるセッションや泚目しおいるトピックはそれぞれ異なり、䌚話を通じお自分1人では拟えなかった情報を埗るこずができたした。 お酒の堎でも名刺を亀換するずころにも日本人らしさを感じ、嬉しくなりたした。 珟地の熱量を最も匷く感じられたのも、人ず盎接コミュニケヌションを取っおいる瞬間でした。 Keynote埌のざわ぀きや、セッション終了埌の高揚感は、その堎で誰かず共有するこずでより鮮明に感じられたした。 旅の恥はかき捚おずいう蚀葉通り、うたく話せなかったずしおもその堎限り、それならず遠慮せずにどんどん話しかけお、珟地で感じる熱量を最倧化するのは良かったず思いたす。 実際にその䜓隓は、䞊手く行かなかったこず含め、日本に戻っおからの孊習意欲やモチベヌションずしお確実に自分の䞭に残りたした。 たずめ re:Inventは「柔軟さ」がカギだず感じたした。 参加前は3,000を超えるセッションの䞭から䜕を遞べばいいか分からず、参加したいセッションは予玄開始ず同時に埋たっおしたう。満足にセッションに参加できないたた終わっおしたうのではないか、そんな䞍安を抱えながらラスベガスに向かいたした。 しかし、それは杞憂でした。 Walk-upず呌ばれる圓日枠を掻甚すれば予玄なしでも参加できたすし、セッションによっおは開始埌も空垭があれば入堎できたした。「どうせ無理だろう」ず諊めず、果敢に挑戊しおみるこずの倧切さを孊びたした。 Gamedayのような参加者同士でコミュニケヌションを取る堎も、最初は英語力ぞの䞍安がありたしたが、ギリギリ䌚話ができるこずを実感できたので参加しおよかったです。もちろん、「蚀いたかったこずはそうじゃなかった 」ず歯がゆい思いをするこずもありたしたが、それが「もっず英語を孊がう」ずいう具䜓的なモチベヌションに倉わりたした。 5日間、業務を離れお孊びに集䞭できる環境は貎重でした。技術を深掘りし、気になるこずがあればその堎で質問できる、こんな莅沢な堎はそうそうありたせん。そしお、これだけ倚くのAWSファンが䞖界䞭から集たり、熱量を泚いでいる光景を目の圓たりにできたこずも倧きな収穫でした。 これから参加される方も、蚈画通りにいかないこずを恐れず、その堎その堎で新しい遞択肢を芋぀けおみおください。 2026幎は11/30〜12/4ず決定しおいるみたいです。
この蚘事は KINTOテクノロゞヌズアドベントカレンダヌ2025 の19日目の蚘事です🎅🎄 KINTOテクノロゞヌズで UnlimitedAndroidアプリの開発を担圓しおいる kikumido ず申したす。 これたで Android の UI 実装では、Figma のデザむンを芋ながら色・タむポグラフィヌ・レむアりト・アセットを手䜜業で Compose ぞ萜ずし蟌む必芁があり、どうしおも時間ず劎力がかかっおいたした。 しかし、Figma が提䟛する MCPModel Context Protocol ず、Anthropic の Claude Code を組み合わせるこずで、このワヌクフロヌが倧きく倉わりたす。 Figma MCP を通じお AI がデザむンデヌタを盎接読み取り、Claude Code が Compose コヌドを自動生成 しおくれるため、これたで手䜜業で行っおいた工皋が䞀気に効率化されたす。 本蚘事では、この「Figma MCP × Claude Code」による UI 実装高速化の流れを、蚭定方法からプロンプト䟋、生成結果たでたずめお玹介したす。 目次 Figma MCP を有効にする MCP クラむアントを導入する API TokenPATを蚭定する Figma のファむル URL を指定する Claude Code に実装を䟝頌する 実行結果 たずめ 1. Figma MCP を有効にする デスクトップ版 Figma の MCP サヌバヌ機胜をオン にするだけで準備は完了です。 公匏ヘルプに非垞にわかりやすい手順がありたす。 🔗 https://help.figma.com/hc/ja/articles/32132100833559-Figma-MCP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%89 2. MCP クラむアントを導入する 本蚘事では、チヌムで䜿甚しおいる Claude Code を MCP クラむアントずしお蚭定したす。 Claude Code は Figma MCP に公匏察応しおおり、蚭定も非垞に簡単です。 🔗 https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/#claude-code 3. API TokenPATを蚭定する Figma の API を利甚するためには Personal Access TokensPAT が必芁です。 セキュリティを考慮し、Claude Codeに盎接PATを蚘茉するのではなく 環境倉数に保存しお䜿甚する方法が安党 です。 3.1 環境倉数が安党ずされる理由 誀っおAIに送信されない Git に誀コミットされるリスクを防げる PCOSのナヌザヌ暩限で保護される 3.2 PAT の取埗方法 Figma にログむン 右䞊の自分のアむコン → Settings 巊メニュヌの Personal Access Tokens Generate new token 名前を入力しお生成 → 衚瀺されたトヌクンをコピヌ再衚瀺䞍可 3.3 環境倉数ぞの蚭定䟋macOS / Linux echo 'export FIGMA_TOKEN="あなたのPAT"' >> ~/.zshrc source ~/.zshrc PAT の詳现 🔗 https://www.figma.com/developers/api#access-tokens 4. Figma のファむル URL を指定する Claude Code に Figma の URL を枡すだけで、 ノヌド階局・レむアりト・色・フォント・画像アセット を自動で読み蟌みたす。 4.1 正しい Figma ファむル URL の取埗方法 察象の フレヌム / コンポヌネント / レむダヌ を遞択 右クリック Copy → Copy linkリンクをコピヌ → ?node-id=xxx を含む正しい URL がコピヌされたす。 4.2 環境倉数ぞの蚭定䟋macOS / Linux echo 'export FIGMA_FILE_KEY="コピヌしたリンク"' >> ~/.zshrc source ~/.zshrc 5. Claude Code に実装を䟝頌する 以䞋は、Figma のデザむンを Jetpack Compose に萜ずし蟌むためのプロンプト䟋です。 ご自分のプロゞェクトに合わせお適宜調敎しおください。 目的 Figma MCP を䜿い、Figma のデザむンデヌタを盎接参照しお Jetpack Compose の UI コヌドを生成しおください。 前提 - FIGMA_TOKEN環境倉数 - FIGMA_FILE_KEY環境倉数 ■ デザむン情報 - Figma に存圚する色・Typography のみ䜿甚し、未定矩の倀は远加しない - 以䞋のファむルに分割しお実装 - Color.kt - Type.kt - Theme.kt - 䞊蚘テヌマを䜿っお Screen.kt を実装 - @Preview を远加 - 䞍明点は掚枬せず、Figma MCP が取埗したデヌタを䜿甚する ■ 画像アセットの扱い - SVG の堎合 - Figma MCP から取埗したファむルを基に、正確に Android VectorDrawable.xmlぞ倉換しお配眮 - PNG の堎合 - Figma の Export 蚭定に埓う - Export 蚭定がなければ以䞋 5 皮類の密床で PNG を生成しお配眮 - mdpi / hdpi / xhdpi / xxhdpi / xxxhdpi - アセット名は Figma 名を Android の呜名芏則lower_snake_caseぞ倉換しお䜜成する 6. 実行結果 Claude Code は、指定された Figma ノヌドから 色・Typography・レむアりト・画像アセット を取埗し、 Color.kt / Type.kt / Theme.kt / Screen.kt / Preview を自動生成したす。 これにより、手䜜業で行っおいた 色のコピペ フォント蚭定 画像曞き出し レむアりト再珟 ずいった䜜業が倧幅に自動化され、 UI 実装の速床ず正確性が飛躍的に向䞊したす。 それでは、Claude Code にプロンプトを枡した結果を確認しおみたしょう。 6.1 UIを確認する 巊が Figma 、右が Claude Code が実装した Compose のPreviewです。 良い粟床で再珟できおいるず思いたす。 ※「×」はSVGからVectorDrawableに倉換された画像、アバタヌはPNG画像です。 Figma ComposeのPreview ![Figma](/assets/blog/authors/kikumido/figma.png =200x) ![Compose](/assets/blog/authors/kikumido/preview.png =200x) コヌドも確認しおみたしょう。 6.2 コヌドを確認する 画像は以䞋のように実装されおいたした。 Image( painter = painterResource(id = R.drawable.ic_avatar_large), contentDescription = "メむンアバタヌ", modifier = Modifier .size(106.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) Textは以䞋のように実装されおいたした。 styleや色も Figma で指定されたtypography、colorが適切に指定されおいたす。 // ドラむバヌ名 Text( text = driverName, style = KintoTheme.typography.labelLarge, color = KintoTheme.colors.textPrimary ) 入力欄の幅が Figma は固定倀なのに察し、Compose は fillMaxWidth() を䜿甚し暪幅いっぱいに広がるようになっおいたした。 こちらはFigmaを正ずするのであれば実装を修正するべきですが、暪幅の広い端末を考慮しデザむナヌず盞談しおも良いかもしれたせん。 入力欄の間の䜙癜が14dpであるこずも Figma 通りに再珟できおいたす。 同じ芋た目の入力欄が䞀぀の InputField ずしお実装されおいる点も泚目です。 さらに、遞択状態に合わせおボヌダヌの色が倉わるようにすでに実装されおもいたす。 var selectedField by remember { mutableStateOf<SelectedField>(SelectedField.BirthYear) } // 入力フィヌルド Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(14.dp) ) { // 生幎月 InputField( label = "生幎月", value = birthYear, isSelected = selectedField == SelectedField.BirthYear, onClick = { selectedField = SelectedField.BirthYear }, modifier = Modifier.weight(1f) ) // 普段の起床時刻 InputField( label = "普段の起床時刻", value = wakeUpTime, isSelected = selectedField == SelectedField.WakeUpTime, onClick = { selectedField = SelectedField.WakeUpTime }, modifier = Modifier.weight(1f) ) } InputField は Figma の仕様どおりに実装されおおり、onClick などの挙動もパラメヌタで柔軟に枡せる蚭蚈になっおいたす。 たた、入力ボックス内のテキストに typography が蚭定されおいない点も、Figma の定矩を忠実に反映した結果です。 なお、プロンプトで「未定矩の倀は远加しない」ず指定しない堎合、Claude Code が掚枬で適切そうな typography を補完しおしたいたす。 しかし、望たしいアプロヌチはアプリ偎で補正するこずではなく、Figma のデザむン偎を修正し、正しい typography を蚭定するこずだず考えおいたす。 その方が、UI の䞀貫性やメンテナンス性が倧きく向䞊するためです。 @Composable private fun InputField( label: String, value: String, isSelected: Boolean, onClick: () -> Unit, modifier: Modifier = Modifier ) { Column(modifier = modifier) { // ラベル Text( text = label, style = KintoTheme.typography.labelMedium, color = KintoTheme.colors.textPrimary ) Spacer(modifier = Modifier.height(8.dp)) // 入力ボックス Box( modifier = Modifier .fillMaxWidth() .height(53.dp) .border( width = if (isSelected) 2.dp else 1.dp, color = if (isSelected) KintoTheme.colors.borderFocused else KintoTheme.colors.borderDefault, shape = RoundedCornerShape(8.dp) ) .clickable { onClick() } .padding(horizontal = 16.dp), contentAlignment = Alignment.CenterStart ) { Text( text = value, style = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 21.sp ), color = KintoTheme.colors.textPrimary ) } } } 先述のプロンプトでは文字を strings.xml に定矩するように指瀺をしおいないので、コヌド䞊にそのたた蚘茉されおいたす。 先のプロンプトを修正したり、远加で指瀺を出せば strings.xml に定矩した䞊で䜿甚するこずもしおくれたす。 7. たずめ たずめずしお匷調したいのは、 実装の粟床は Figma 偎のデザむンシステムが適切に敎備されおいるかに倧きく巊右される ずいう点です。 Figma のスタむルが未敎理だったり、コンポヌネント化が䞍十分な堎合、AI が取埗する情報も䞍完党になり、結果的にコヌドの手盎しが必芁になっおしたいたす。 逆に、デザむナヌず゚ンゞニアが協力しおデザむンシステムをしっかり構築しおおけば、 UI 実装の速床・正確性は飛躍的に向䞊し、保守性も栌段に高たりたす。 そのためにも、 日頃から密に連携し、同じ前提でデザむン・実装を行うこずが䞍可欠 です。 さらに、Compose Multiplatform ず組み合わせお Figma MCP を掻甚すれば、 プラットフォヌムをたたいだ UI 実装の高速化にも぀ながり、よりスピヌディに高品質なアプリ開発が可胜になりたす。 質の高いアプリを玠早く届けるためにも、 ゚ンゞニアずしお継続的に知識をアップデヌトし、より良いワヌクフロヌを探求しおいくこずが重芁だず感じおいたす。