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によるIntelliJ Plugin開発で、道具箱に磨きをかけよう!
Search
Hiroshi Ito
December 13, 2022
1
1.3k
KotlinによるIntelliJ Plugin開発で、道具箱に磨きをかけよう!
Kotlin Fest Reject Conference 2022 [非公式]
発表資料
https://henry.connpass.com/event/267081/
Hiroshi Ito
December 13, 2022
Tweet
Share
More Decks by Hiroshi Ito
See All by Hiroshi Ito
Exploring Java OSS with LLMs - A New Way to Approach Open-Source Code Reading
itohiro73
0
300
Cursorを全エンジニアに配布 その先に見据えるAI駆動開発の未来 / 2025-05-13-forkwell-ai-study-1-cursor-at-loglass
itohiro73
2
2.3k
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy / dev productivity con 2024
itohiro73
1
1.7k
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy
itohiro73
16
30k
一緒にスクラム開発___GPT-4と人間が共創するプロダクトの進化.pdf
itohiro73
11
9.5k
エンジニアリングが組織に広がる「乳化」を目指すための取り組み #devsumi #devsumiC
itohiro73
3
4.9k
READYFORにおける複雑なドメインとレガシーシステムとの戦い方
itohiro73
6
5.2k
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Building an army of robots
kneath
306
45k
Thoughts on Productivity
jonyablonski
69
4.7k
Done Done
chrislema
184
16k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
For a Future-Friendly Web
brad_frost
178
9.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
123
52k
Transcript
KotlinによるIntelliJ Plugin開発 で、道具箱に磨きをかけよう! Kotlin Fest Reject Conference 2022 いとひろ(@itohiro73)
本日のアジェンダ • 自己紹介 • IntelliJ IDEAのプラグイン開発の概要 • 実際にプラグインを作る手順を説明する(Hello World) •
プラグインデモ • 実はこんなこともできます
自己紹介 いとひろ@itohiro73 ソフトウェアエンジニア @ ログラス株式会社 外資系証券会社で12年間エンジニアとして従事したのち、 FinTech系スタートアップ3社を経て現職。前職ではクラウドファンディングの会社で 執行役員VP of Engineeringとしてエンジニア組織の統括
Eclipse Collections (旧GS Collections)元プロジェクトリード
本セッションの目的
道具箱に磨きをかけよう! Kotlinで開発をしている皆さんは、IntelliJ IDEAあるいはAndroid StudioをIDEとして 利用している方が多いのではないでしょうか。 これらのIDEのベースとなっているThe IntelliJ Platformは、実はKotlinを用いて Plugin開発をすることができます。 本セッションでは、聴いてくださった皆さんが、IntelliJのプラグイン開発を始めてみよ
うかな、試してみようかなと思えるような知見やモチベーションを持ち帰っていただけ ると良いなと考えています
IntelliJ IDEAのプラグイン開発の概要
IntelliJ Pluginのタイプ 典型的なIntelliJ Pluginとしては、以下のようなタイプに分類できます • カスタム言語サポート • フレームワークの統合 • ツールの統合
• UIのアドオン • テーマ
タイプ1: カスタム言語サポート カスタム言語サポートPluginは、特定のプログラミング言語に対してのサポートを提 供するプラグインです • ファイル操作 • 字句解析 • シンタックスハイライト
• フォーマット • インサイトとコード補完 • 静的検査とクイックフィックス
タイプ2: フレームワークの統合 フレームワークの統合をサポートするプラグインでは、フレームワーク特有の機能を サポートや、DSLの提供といった拡張を行います プラグイン例: • Spring Framework • Ktor
• Jakarta EE
タイプ3: ツールの統合 ツールの統合をサポートするプラグインでは、開発者が日常業務で活用するツール をIDE上で扱えるような拡張を行います プラグイン例 • Gradle • Maven •
Git • Docker
タイプ4: UIのアドオン このカテゴリーのプラグインは、標準のユーザーインターフェースに様々な変更を加 えます プラグイン例 • Random Background
タイプ5: テーマ 「テーマ」では、IntelliJ系のIDEの見た目をさ まざま変更することができます。
Kotlinで実装されたIntelliJ Pluginの例 既存のIntelliJ Pluginにも、Kotlinで実装されたものは多く存在します。オープンソー スとして開発されているものも多いので、自作のPlugin実装においても参考になりま す • IntelliJ Presentation Assistant
• Rust plugin for the IntelliJ Platform • TeXiFy-IDEA • Deno plugin
まずはなんと言ってもHello World
どうやって始めれば良い? Plugin開発を始めるには、JetBrainsが提供しているPlugin Templateで始めると良 いです。このテンプレートがすでにKotlin対応されています。 • IntelliJ Platform Plugin Template
まずはテンプレートからリポジトリを作成
まずはテンプレートからリポジトリを作成
IntelliJ Plugin Templateのディレクトリ構造
このテンプレートはかなり親切にできてる
このテンプレートはかなり親切にできてる
このテンプレートはかなり親切にできてる
このテンプレートはかなり親切にできてる
このテンプレートはかなり親切にできてる
このテンプレートはかなり親切にできてる
しかし、クローンしてすぐ動かないので注意
ここからようやくHello World
Hello World: ①plugin.xmlにtoolWindow拡張ポイントを追加
Hello World: ②パネルにHello World表示するMyToolWindowFactoryを作成
Hello World: ③Run/Debugを走らせてみよう
Hello World: ④初回はIntelliJ Community Editionの同意が必要です
Hello World: ⑤新たなIntellJ IDEAインスタンスが立ち上がります
Hello World: ⑥プラグインがインストールされていることが確認できます
Hello World: ⑦任意のプロジェクトを開いて、Tool Windowを確認!!
IntelliJ Plugin Hello World ここまででTool Windowに”Hello World”を表示する簡単なプラグインを作成すること ができました。 Hello Worldのサンプルコードはこちらに
• https://github.com/itohiro73/intellij-plugin-kotlin-sample/tree/0.1.0
もう少し発展的なプラグインつくりたい
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ) せっかくIntelliJ Pluginのテンプレートがあるので、このテンプレートをプロジェクトウィ ザードから作成するようなPluginを作ってみましょう。
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ) JavaModuleBuilderという、Javaモジュールを作成するための既存ビルダーがある ので、こちらを活用します。JavaModuleBuilderが含まれるIntelliJ Platform Plugin であるcom.intellij.javaをgradle.properties(ビルド用)と、plugin.xmlの依存(ランタ イム用)に追加しておきます。
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)
IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)
なんか面白いプラグイン作りたい
最近バズったChat GPTさん みなさん、ご存じですか?
最近バズったChat GPTさん 注目具合がハンパじゃない
開発中もAIに手伝ってほしい...
そうだ、プラグインをつくろう
デモ
もし時間があればパート
実は、もっと簡単なプラグイン開発の方法があります
LivePlugin: プラグインを書いてすぐその場で実行で きるプラグイン
LivePlugin: たとえばこんな要望
LivePlugin: こんな感じでサクッと実装できちゃいます (これはGroovyですが... Kotlinも可)
発展的なおすすめ資料集
カスタム言語Plugin作成チュートリアル 公式ページには、カスタム言語のPlugin作成のチュートリアルがあります。
カスタム言語Plugin作成チュートリアル こちらのチュートリアルでは、架空の言語「Simple」を用いて以下のようなステップを 実装します。言語実装とIDEの全体概要を掴むのにおすすめ!
公式ドキュメント 足りない情報も多くあるものの、何はともあれ公式ドキュメントは幅広く充実している ので、ぜひ一度目を通してみてください • https://plugins.jetbrains.com/docs/intellij/welcome.html
最後に
いかがでしたでしょうか? IntelliJ IDEA/Kotlinでのプラグイン開発へのモチベーションは上がりましたでしょう か? 聴いてくださった皆さんが、IntelliJのプラグイン開発を始めてみようかな、試してみよ うかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです! ご静聴ありがとうございました!!