Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KotlinによるIntelliJ Plugin開発で、道具箱に磨きをかけよう!

Hiroshi Ito
December 13, 2022
700

KotlinによるIntelliJ Plugin開発で、道具箱に磨きをかけよう!

Kotlin Fest Reject Conference 2022 [非公式]
発表資料
https://henry.connpass.com/event/267081/

Hiroshi Ito

December 13, 2022
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. 本セッションの目的

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. Kotlinで実装されたIntelliJ Pluginの例
    既存のIntelliJ Pluginにも、Kotlinで実装されたものは多く存在します。オープンソー
    スとして開発されているものも多いので、自作のPlugin実装においても参考になりま

    ● IntelliJ Presentation Assistant
    ● Rust plugin for the IntelliJ Platform
    ● TeXiFy-IDEA
    ● Deno plugin

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. ここからようやくHello World

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  48. もし時間があればパート

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  51. LivePlugin: たとえばこんな要望

    View full-size slide

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

    View full-size slide

  53. 発展的なおすすめ資料集

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide