Kotlin Fest Reject Conference 2022 [非公式] 発表資料 https://henry.connpass.com/event/267081/
KotlinによるIntelliJ Plugin開発で、道具箱に磨きをかけよう!Kotlin Fest Reject Conference 2022いとひろ(@itohiro73)
View Slide
本日のアジェンダ● 自己紹介● 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プロジェクト作成ウィザード(入口だけ)
なんか面白いプラグイン作りたい
最近バズった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のプラグイン開発を始めてみようかな、試してみようかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです!ご静聴ありがとうございました!!