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
390
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy
itohiro73
14
21k
一緒にスクラム開発___GPT-4と人間が共創するプロダクトの進化.pdf
itohiro73
11
9k
エンジニアリングが組織に広がる「乳化」を目指すための取り組み #devsumi #devsumiC
itohiro73
3
4.6k
READYFORにおける複雑なドメインとレガシーシステムとの戦い方
itohiro73
6
5.1k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
49
11k
What's in a price? How to price your products and services
michaelherold
243
12k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
It's Worth the Effort
3n
183
28k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
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のプラグイン開発を始めてみようかな、試してみよ うかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです! ご静聴ありがとうございました!!