Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin Notebookを プラグイン開発に活用する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
k-tomoyasu
February 19, 2026
0
30
Kotlin Notebookを プラグイン開発に活用する
2026/02/12開催のpixiv App Talkの発表資料です。
https://pixiv.connpass.com/event/382298/
k-tomoyasu
February 19, 2026
Tweet
Share
More Decks by k-tomoyasu
See All by k-tomoyasu
MRAID広告の実装から見るWebViewとアプリ間のインタラクション実装
fusuma0325
0
77
Coroutinesを中心としたAndroidアプリでの並行数制限・排他制御
fusuma0325
0
230
Android Studioプラグインを作ってみよう 〜Compose for Desktopで始めるプラグイン開発〜
fusuma0325
1
760
Kotlin Multiplatform Projectで社内用APIクライアントを作る
fusuma0325
0
2.1k
Kotlin/Nativeで作ってみるCLI, iOSアプリ
fusuma0325
1
140
Redashアラートの最近 - カスタマイズ機能を作った話
fusuma0325
0
850
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Tell your own story through comics
letsgokoyo
1
830
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Faster Mobile Websites
deanohume
310
31k
[SF Ruby Conf 2025] Rails X
palkan
2
800
Color Theory Basics | Prateek | Gurzu
gurzu
0
220
Mind Mapping
helmedeiros
PRO
1
110
Building Adaptive Systems
keathley
44
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
270
Making Projects Easy
brettharned
120
6.6k
Transcript
Kotlin Notebookを プラグイン開発に活用する @fusuma
自己紹介 • fusuma(ふすま) • 2021年中途入社 • pixivコミックのAndroidアプリ開発 2
Kotlin Notebook 3
Kotlin Notebookとは • データ分析などに広く使われるJupyter NotebookのKotlin版 • コードセルとドキュメントセル(Markdown)で構成されるインタラクティブな開発 環境 ◦ ドキュメントとコード、実行結果(図表などを含む)が一体になった実行可能なドキュメント
◦ 依存ライブラリの記述やプロジェクト内のコードの実行も可能 • IntelliJプラグインのプロトタイピングへの活用が今回のメイントピック ◦ プラグイン開発に使うIntelliJプラットフォームAPIをNotebook上で実行可能 4
5
プロジェクト内のコードの実行 • プロジェクトのモジュールを依存先に指定することで、プロジェクト内のコードを Notebookで実行できる ◦ Notebook上でのアプリの実装の試行錯誤や、プロジェクト特有のAPIクライアントの実行環境としての利 用などに活用できる 6
導入 • Kotlin Notebookプラグインをインストール • File > New > Kotlin
Notebookでファイル作成 ◦ プロジェクトを新規作成せずに既存プロジェクトに追加できるのでサクッと始められる 7
プラグイン開発 8
そのプラグイン、オーバーキルかも? • 公式のプラグイン開発スタートガイドで複数の代替手段が提示されている ◦ SSR(Structural search and replace)で ◦ IDEスクリプトコンソールでIDEの機能にアクセスする軽量なスクリプトを作成
• 更に今ならAgent Skillsなども有力な候補になる https://plugins.jetbrains.com/docs/intellij/plugin-alternatives.html 9
プラグインの出番 • 即時性が求められる • IDEに統合されたUI • IntelliJプラットフォームAPIの高度・正確な利用 ◦ 後述のPSIの利用など 10
Kotlin NotebookでIntelliJプラグイン開発 11
Kotlin Notebookでプラグインのプロトタイピング • プラグインの開発で利用するIntellijプラットフォームAPIがNotebook上で動作する ◦ ウィジェットの登録やPSI(Program Structure Interface)の利用 • プラグインのUIがNotebook上で動作する
• これまでよりプラグイン開発のハードルが下がる ◦ 開発環境のセットアップが爆速 ◦ 試行錯誤の高速化 12
今回つくるプラグイン • デザインシステムに則ったカラーパレットの可視化 ◦ ピクシブのデザインシステム「Charcoal」 ▪ サービスのブランドカラーを示す brand などのトークンにライト/ダークテーマごとに具 体的な色を割り当てている
▪ OSSとして実装が公開されている • トークンと色の対応表を表示するUIをプラグインとして実装 ◦ トークンと色の組み合わせを開発中にすぐに確認できるようにする 13
トークンと色の対応表出力イメージ 14 トークン ライトテーマ ダークテーマ brand #FFFFC400 #FFEFB800 brandDark …
… … … …
開発環境 • Android Studio Panda 2 | 2025.3.2 Canary 3
◦ 今回紹介する範囲では問題なく利用できたが、一部IDEAでは動くがAndroid Studioで動かない機能があっ たので、IDEAの方が安定しそう ▪ 実行結果の出力タイプがhtmlだと表示されなかった 15
準備 • Run in IDE Process を選択 • %use intellij-platform
をコードセルで実行 ◦ プラグイン開発に必要なものがインポートされる 16
UI構築 17
トークンと色をマッピングする • 一旦アプリ側のコードを実行して データを取得することにする ◦ コードの静的解析から取得したいが後回し • 各テーマのトークン・色の組み合わせを 示すdata classを返す関数を呼ぶ
18 アプリ側のコード
19 Notebook
20 トークンと色をマッピング
プラグインのUI実装の選択肢 • Swing ◦ IntelliJプラットフォームの基盤になっているJava製のUIライブラリ。汎用性は最も高い ◦ 手続き的な記述 • Kotlin UI
DSL ◦ 宣言的に記述できるDSL • Compose / Jewel ◦ Jewel: IntelliJプラットフォーム用のUIをComposeで提供するライブラリ ▪ プラグイン開発での利用は公式にサポートされていないが、Android Studioの実装でも使われている https://github.com/JetBrains/intellij-community/tree/master/platform/jewel ◦ Kotlin Notebook上での利用は2026/2時点では開発中 ▪ Kotlin Conf 2025のセッションでデモを交えて紹介された https://www.youtube.com/watch?v=bkd6EAPIVe0 21
プラグインのUI実装の選択肢 • Swing ◦ IntelliJプラットフォームの基盤になっているJava製のUIライブラリ。汎用性は最も高い ◦ 手続き的な記述 • Kotlin UI
DSL ◦ 宣言的に記述できるDSL • Compose / Jewel ◦ Jewel: IntelliJプラットフォーム用のUIをComposeで提供するライブラリ ▪ プラグイン開発での利用は公式にサポートされていないが、Android Studioの実装でも使われている https://github.com/JetBrains/intellij-community/tree/master/platform/jewel ◦ Kotlin Notebook上での利用は2026/2時点では開発中 ▪ Kotlin Conf 2025のセッションでデモを交えて紹介された https://www.youtube.com/watch?v=bkd6EAPIVe0 22
トークン・色の対応表をUIで表示 • 23
Kotlin UI DSLで対応表のUIを構築 24
UIをIDEに統合する 25
UIをIDEに統合する 26 • UIをIDE上で表示できるようにする • 先ほどの対応表をTool Windowとして登録する(枠線部分に追加)
Tool Windowの登録 27 • Tool Windowのコンテンツ部分を提供するインタフェースを実装
28
29
30
31
32
PSIの利用 33
PSIからトークン・色の組み合わせを取得 34 • アプリのコードに依存せずに、コードの静的解析で取得する ◦ アプリ側のコードを実行してトークン・色の組み合わせを取得していた箇所を置き換える • PSI (Program Structure
Interface) ◦ ソースコードを解析してIDEが扱うためのデータ構造にしたもの・その仕組み • PSIを利用してコードの静的解析を行う ◦ PSIからトークン・色の組み合わせを抽出する
Notebook上でPSIを扱う準備 35 • loadPluginsでNotebook上で他のプラグインの実装を利用できる • PSIを扱うのに必要なプラグインをロードする
PSIからトークン・色の組み合わせを取得 36 • トークンと色の組み合わせを返す関数にアノテーションを付与して目印にする ◦ (アノテーションは一旦アプリ側に定義した)
37
38
39
プロタイプ完成 • 色の対応表をKotlin UI DSLで構築 ◦ トークン・色のマッピングはアプリのコードを実行して取得 • Tool WindowとしてIDEに統合
• アプリのコード実行によるマッピング取得から、 静的解析を用いた方法に変更 40
所感 • IntelliJプラグインのインストールでKotlin Notebookが利用できる • Notebookはプラグイン開発のプロトタイピングに活用できる ◦ IntellijプラットフォームのAPIやUIをサクッと試せる ◦ 詳細なデバッグが難しい・通常のプラグイン開発の方が情報が多いため、ハマったら通常の
プラグイン開発にスイッチしながら進めると良い • Compose対応が進行中なので期待 41
参考 • IntelliJ Platform SDK ◦ https://plugins.jetbrains.com/docs/intellij/welcome.html • intellij-community ◦
https://github.com/JetBrains/intellij-community/tree/master • Kotlin Notebook Meets IntelliJ Platform | PluginDevConf2025 ◦ https://www.youtube.com/watch?v=OC5u7_c3m9w • Compose Prototyping in Kotlin Notebooks | Kotlin Conf 2025 ◦ https://www.youtube.com/watch?v=bkd6EAPIVe0 42