ブログ

Senseiでドキュメントリンクを活用する

November 9, 2020
アラン・リチャードソン
ノートパソコンのキーボードを打つ手元。画面には緑色のコードと「Master Secure Coding with Sensei」の文字。

新しいライブラリの学習や、チーム内でベストプラクティスを共有する際、ドキュメントの作成やサンプルコードの準備が大きな課題となります。

多くの場合、小さなサンプルプロジェクトを作成しても、実際のコードを書いている最中にそれを参照することはほとんどありません。

サンプルコードやオンラインの解説ページに直接リンクを貼り、必要に応じてURLから詳細な説明を確認できれば非常に便利だと常々感じていました。

JavaにはJavaDocコメントがあり、@seeアノテーションを使用できます:

/**
 * @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Junit 5 Annotation docs</a>
 */

サードパーティ製ライブラリでこのようなJavaDocが提供されていると、IntelliJのクイックドキュメント機能から詳細な例にアクセスできるため、非常に役立ちます。

しかし、コメントはコードほど頻繁に更新されないのが現実です。また、Web上のドキュメントはライブラリのメンテナンスとは切り離されており、別のチームが管理していることも珍しくありません。

Senseiの活用方法

Senseiを使えば、ライブラリのアノテーションやメソッドを検出し、Wikiや外部のチュートリアルサイトにある詳細なドキュメントへのリンクを表示させることができます。

例として、JUnitの @Test アノテーションを使用してみます。

JavaDocは非常に詳細で、クイックドキュメントビューでもアノテーションの使い方が説明されています。

しかし、公式サイトのドキュメントの方が読みやすく、より多くのサンプルが掲載されていることも少なくありません。

チームで新しいライブラリを学習し始める際、推奨されるチュートリアル集があると非常に便利です。

Senseiには goto アクションがあり、これを使ってURLを開くことができます。チームにとって有益な外部サイトやサンプルコードへのリンクを直接提供できるのです。

Goto URLの実装

これを実装するには、まずJUnitの@Testアノテーションに一致する検索条件を作成します。

search:
   annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.api.Test"


次に、役立つURLごとにgotoアクションを追加します。

例:

以下の例では、1つのアクションを作成します JUnitアノテーション(学習) 。これにより、両方のURLが同時にブラウザで開かれます。

availableFixes:
- name: "JUnitアノテーションについて学ぶ"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"

IntelliJで Alt+Enter を押して有効化すると、コンテキストメニューが表示され、そこからドキュメントへジャンプできます。


Code editor context menu showing options related to Parameterized Annotations in Java code.

複数のアクション

複数のアクションを設定すれば、各URLやチュートリアルを alt+enter のクイックフィックス・ポップアップメニュー内で個別の選択肢として表示できます。

例えば、@Parameterizedアノテーションの場合、公式ドキュメントとオンラインのサンプルコード集の両方にリンクさせたいと考えるかもしれません。

その場合は、アノテーションを検索するレシピを作成するだけです:

search:
  annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.params.ParameterizedTest"


そして、有用だと判断したサイトへのリンクを追加します:

availableFixes:
- name: "JUnitアノテーション(学習)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "JUnitテストとは?(学習)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"


これで、両方のリンクがポップアップダイアログに表示されるようになります。

どのようなメリットがあるのでしょうか?

私自身、ライブラリの使用や学習の際、特にチームを率いて新しいライブラリの導入を支援する際に、これが役立つと感じていました。

また、ライブラリを作成するチームにとっても、標準的なドキュメントレシピを作成することで、ユーザーがライブラリや新機能を導入する際のガイドとして活用できます。

コードの保守とドキュメントの保守を異なるチームが行っている場合には、特に有用です。

SenseiはIntelliJ内の「preferences > plugins」からインストールできます(「sensei secure code」で検索してください)。

このブログ記事で使用したすべてのコードは、Githubのjunitexamplesモジュールにあります:https://github.com/SecureCodeWarrior/sensei-blog-examples


タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。