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.2k
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
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy / dev productivity con 2024
itohiro73
1
580
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy
itohiro73
15
25k
一緒にスクラム開発___GPT-4と人間が共創するプロダクトの進化.pdf
itohiro73
11
9.2k
エンジニアリングが組織に広がる「乳化」を目指すための取り組み #devsumi #devsumiC
itohiro73
3
4.7k
READYFORにおける複雑なドメインとレガシーシステムとの戦い方
itohiro73
6
5.1k
Featured
See All Featured
Building Applications with DynamoDB
mza
93
6.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
210
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
260
Automating Front-end Workflow
addyosmani
1367
200k
Done Done
chrislema
182
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
The Invisible Side of Design
smashingmag
299
50k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
20
2.4k
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のプラグイン開発を始めてみようかな、試してみよ うかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです! ご静聴ありがとうございました!!