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.1k
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
330
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy
itohiro73
14
20k
一緒にスクラム開発___GPT-4と人間が共創するプロダクトの進化.pdf
itohiro73
11
9k
エンジニアリングが組織に広がる「乳化」を目指すための取り組み #devsumi #devsumiC
itohiro73
3
4.6k
READYFORにおける複雑なドメインとレガシーシステムとの戦い方
itohiro73
6
5.1k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Designing the Hi-DPI Web
ddemaree
280
34k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Why Our Code Smells
bkeepers
PRO
334
57k
The World Runs on Bad Software
bkeepers
PRO
65
11k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
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のプラグイン開発を始めてみようかな、試してみよ うかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです! ご静聴ありがとうございました!!