Slide 1

Slide 1 text

KotlinによるIntelliJ Plugin開発 で、道具箱に磨きをかけよう! Kotlin Fest Reject Conference 2022 いとひろ(@itohiro73)

Slide 2

Slide 2 text

本日のアジェンダ ● 自己紹介 ● IntelliJ IDEAのプラグイン開発の概要 ● 実際にプラグインを作る手順を説明する(Hello World) ● プラグインデモ ● 実はこんなこともできます

Slide 3

Slide 3 text

自己紹介 いとひろ@itohiro73 ソフトウェアエンジニア @ ログラス株式会社 外資系証券会社で12年間エンジニアとして従事したのち、 FinTech系スタートアップ3社を経て現職。前職ではクラウドファンディングの会社で 執行役員VP of Engineeringとしてエンジニア組織の統括 Eclipse Collections (旧GS Collections)元プロジェクトリード

Slide 4

Slide 4 text

本セッションの目的

Slide 5

Slide 5 text

道具箱に磨きをかけよう! Kotlinで開発をしている皆さんは、IntelliJ IDEAあるいはAndroid StudioをIDEとして 利用している方が多いのではないでしょうか。 これらのIDEのベースとなっているThe IntelliJ Platformは、実はKotlinを用いて Plugin開発をすることができます。 本セッションでは、聴いてくださった皆さんが、IntelliJのプラグイン開発を始めてみよ うかな、試してみようかなと思えるような知見やモチベーションを持ち帰っていただけ ると良いなと考えています

Slide 6

Slide 6 text

IntelliJ IDEAのプラグイン開発の概要

Slide 7

Slide 7 text

IntelliJ Pluginのタイプ 典型的なIntelliJ Pluginとしては、以下のようなタイプに分類できます ● カスタム言語サポート ● フレームワークの統合 ● ツールの統合 ● UIのアドオン ● テーマ

Slide 8

Slide 8 text

タイプ1: カスタム言語サポート カスタム言語サポートPluginは、特定のプログラミング言語に対してのサポートを提 供するプラグインです ● ファイル操作 ● 字句解析 ● シンタックスハイライト ● フォーマット ● インサイトとコード補完 ● 静的検査とクイックフィックス

Slide 9

Slide 9 text

タイプ2: フレームワークの統合 フレームワークの統合をサポートするプラグインでは、フレームワーク特有の機能を サポートや、DSLの提供といった拡張を行います プラグイン例: ● Spring Framework ● Ktor ● Jakarta EE

Slide 10

Slide 10 text

タイプ3: ツールの統合 ツールの統合をサポートするプラグインでは、開発者が日常業務で活用するツール をIDE上で扱えるような拡張を行います プラグイン例 ● Gradle ● Maven ● Git ● Docker

Slide 11

Slide 11 text

タイプ4: UIのアドオン このカテゴリーのプラグインは、標準のユーザーインターフェースに様々な変更を加 えます プラグイン例 ● Random Background

Slide 12

Slide 12 text

タイプ5: テーマ 「テーマ」では、IntelliJ系のIDEの見た目をさ まざま変更することができます。

Slide 13

Slide 13 text

Kotlinで実装されたIntelliJ Pluginの例 既存のIntelliJ Pluginにも、Kotlinで実装されたものは多く存在します。オープンソー スとして開発されているものも多いので、自作のPlugin実装においても参考になりま す ● IntelliJ Presentation Assistant ● Rust plugin for the IntelliJ Platform ● TeXiFy-IDEA ● Deno plugin

Slide 14

Slide 14 text

まずはなんと言ってもHello World

Slide 15

Slide 15 text

どうやって始めれば良い? Plugin開発を始めるには、JetBrainsが提供しているPlugin Templateで始めると良 いです。このテンプレートがすでにKotlin対応されています。 ● IntelliJ Platform Plugin Template

Slide 16

Slide 16 text

まずはテンプレートからリポジトリを作成

Slide 17

Slide 17 text

まずはテンプレートからリポジトリを作成

Slide 18

Slide 18 text

IntelliJ Plugin Templateのディレクトリ構造

Slide 19

Slide 19 text

このテンプレートはかなり親切にできてる

Slide 20

Slide 20 text

このテンプレートはかなり親切にできてる

Slide 21

Slide 21 text

このテンプレートはかなり親切にできてる

Slide 22

Slide 22 text

このテンプレートはかなり親切にできてる

Slide 23

Slide 23 text

このテンプレートはかなり親切にできてる

Slide 24

Slide 24 text

このテンプレートはかなり親切にできてる

Slide 25

Slide 25 text

しかし、クローンしてすぐ動かないので注意

Slide 26

Slide 26 text

ここからようやくHello World

Slide 27

Slide 27 text

Hello World: ①plugin.xmlにtoolWindow拡張ポイントを追加

Slide 28

Slide 28 text

Hello World: ②パネルにHello World表示するMyToolWindowFactoryを作成

Slide 29

Slide 29 text

Hello World: ③Run/Debugを走らせてみよう

Slide 30

Slide 30 text

Hello World: ④初回はIntelliJ Community Editionの同意が必要です

Slide 31

Slide 31 text

Hello World: ⑤新たなIntellJ IDEAインスタンスが立ち上がります

Slide 32

Slide 32 text

Hello World: ⑥プラグインがインストールされていることが確認できます

Slide 33

Slide 33 text

Hello World: ⑦任意のプロジェクトを開いて、Tool Windowを確認!!

Slide 34

Slide 34 text

IntelliJ Plugin Hello World ここまででTool Windowに”Hello World”を表示する簡単なプラグインを作成すること ができました。 Hello Worldのサンプルコードはこちらに ● https://github.com/itohiro73/intellij-plugin-kotlin-sample/tree/0.1.0

Slide 35

Slide 35 text

もう少し発展的なプラグインつくりたい

Slide 36

Slide 36 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ) せっかくIntelliJ Pluginのテンプレートがあるので、このテンプレートをプロジェクトウィ ザードから作成するようなPluginを作ってみましょう。

Slide 37

Slide 37 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ) JavaModuleBuilderという、Javaモジュールを作成するための既存ビルダーがある ので、こちらを活用します。JavaModuleBuilderが含まれるIntelliJ Platform Plugin であるcom.intellij.javaをgradle.properties(ビルド用)と、plugin.xmlの依存(ランタ イム用)に追加しておきます。

Slide 38

Slide 38 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)

Slide 39

Slide 39 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)

Slide 40

Slide 40 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)

Slide 41

Slide 41 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)

Slide 42

Slide 42 text

IntelliJ Pluginプロジェクト作成ウィザード (入口だけ)

Slide 43

Slide 43 text

なんか面白いプラグイン作りたい

Slide 44

Slide 44 text

最近バズったChat GPTさん みなさん、ご存じですか?

Slide 45

Slide 45 text

最近バズったChat GPTさん 注目具合がハンパじゃない

Slide 46

Slide 46 text

開発中もAIに手伝ってほしい...

Slide 47

Slide 47 text

そうだ、プラグインをつくろう

Slide 48

Slide 48 text

デモ

Slide 49

Slide 49 text

もし時間があればパート

Slide 50

Slide 50 text

実は、もっと簡単なプラグイン開発の方法があります

Slide 51

Slide 51 text

LivePlugin: プラグインを書いてすぐその場で実行で きるプラグイン

Slide 52

Slide 52 text

LivePlugin: たとえばこんな要望

Slide 53

Slide 53 text

LivePlugin: こんな感じでサクッと実装できちゃいます (これはGroovyですが... Kotlinも可)

Slide 54

Slide 54 text

発展的なおすすめ資料集

Slide 55

Slide 55 text

カスタム言語Plugin作成チュートリアル 公式ページには、カスタム言語のPlugin作成のチュートリアルがあります。

Slide 56

Slide 56 text

カスタム言語Plugin作成チュートリアル こちらのチュートリアルでは、架空の言語「Simple」を用いて以下のようなステップを 実装します。言語実装とIDEの全体概要を掴むのにおすすめ!

Slide 57

Slide 57 text

公式ドキュメント 足りない情報も多くあるものの、何はともあれ公式ドキュメントは幅広く充実している ので、ぜひ一度目を通してみてください ● https://plugins.jetbrains.com/docs/intellij/welcome.html

Slide 58

Slide 58 text

最後に

Slide 59

Slide 59 text

いかがでしたでしょうか? IntelliJ IDEA/Kotlinでのプラグイン開発へのモチベーションは上がりましたでしょう か? 聴いてくださった皆さんが、IntelliJのプラグイン開発を始めてみようかな、試してみよ うかなと思えるような知見やモチベーションを持ち帰っていただけると幸いです! ご静聴ありがとうございました!!