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

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

Hiroshi Ito
December 13, 2022
340

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 Slide

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

    View Slide

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

    View Slide

  4. 本セッションの目的

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. デモ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  58. 最後に

    View Slide

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

    View Slide