Index
本ガイドは、ナレッジ管理ツールの使用方法について説明したドキュメントです。
本ツールは、マイグレーションナレッジをGUI 上で容易に作成、管理することができるツールです。 マイグレーションナレッジは、マイグレーションに関するノウハウとして、移植箇所を抽出するための検索条件、移植難易度、移植工数 (移植概算ライン) 等が設定可能です。
本ツールでは大きく以下の情報を扱うことが可能です。
Table 1. 本ツールで扱う情報
項目 | 説明 |
---|---|
マイグレ―ションに関するノウハウガイド(HTML) | マイグレーションに関するノウハウをドキュメント形式(HTML)で作成、保存できます。 保存したHTMLファイルをナレッジベース検索ツールから参照することにより、検索実行結果から直接リンク参照することができます。 |
修正箇所の検索情報(XML) | 修正箇所の検索情報をナレッジアイテムとしてXML 形式で作成、保存できます。 保存したXMLファイルをナレッジベース検索ツールの入力情報とすることにより、検索ロジックとして利用することができます。 |
編集対象のマイグレーションナレッジを準備します。
新規にマイグレーションナレッジファイルを作成する場合と、既存のマイグレーションナレッジファイルを編集する場合の手順について以下で説明します。
Note | |
---|---|
以降の処理は「ナレッジ管理ツール」パースペクティブを表示して実行してください。 → → → |
マイグレーションナレッジを新規に作成する手順は以下です。
Eclipse 上で適当なプロジェクトを生成します。
→ →
プロジェクトを選択して、「New」ウィザードを表示します。
→ →
Newウィザードで「ナレッジXMLファイル」を選択します。
→
ナレッジXMLファイルウィザードが表示されるので、ガイドのサブジェクトや出力先を指定してください。
本例ではマイグレーションナレッジファイルをプロジェクト直下に作成しています。
Finish をクリックするとプロジェクト直下にマイグレーションナレッジファイル(XML)が生成されます。
既存のマイグレーションナレッジファイルを更新する場合も適当なEclipse プロジェクト内にファイルを置いてください。
Note | |
---|---|
GitHub 上に公開されている migration-knowledge リポジトリ をインポートすることで現在公開中のナレッジを編集することが可能です。 Gitプロジェクトのインポート方法については、Gitドキュメントを参照ください。 |
ナレッジに関するアイテムの作成・編集手順は以下です。
マイグレーションナレッジファイルのオープン
準備したマイグレーションナレッジファイルを開きます。
→ →
ナレッジエントリービューの操作
個々のアイテムはナレッジエントリービュー上で追加・参照・更新・削除します。 作成したアイテムはドキュメント作成等に活用できます。
ナレッジに関するアイテムの作成
アイテムの作成は以下の手順で実施します。最初はアイテムが1つもないため、必ずカテゴリを作成することになります。
カテゴリ作成
→
ナレッジ作成
→
アイテムは、以下の種類があります。
Table 1. アイテムの種類
項目 | 説明 |
---|---|
カテゴリ | ドキュメント構成の章・節のタイトルに相当するアイテムです。タイトル情報のみ保持します。 |
ナレッジ | ドキュメント構成の章・節に記述されるナレッジコンテンツに相当するアイテムです。
DocBook#Artile 形式のコンテンツ情報のみ保持します。
|
チェックアイテム | 該当ナレッジの移植判断情報を保持するアイテムです。検索手順、移植要因、難易度などの情報を保持します。 |
検索情報 | ナレッジベース検索ツールが検索の際に使用する検索ロジックとなるアイテムです。 |
ナレッジ管理エディタの操作
登録されたアイテムの編集やドキュメント構成の作成を行います。 ナレッジ管理エディタには以下の種類のタブがあります。
Table 2. タブの種類
項目 | 説明 | |||
---|---|---|---|---|
ドキュメンテーション | 作成するHTML ドキュメントの章構成を編集することができます。 見出しを作成後、ナレッジエントリービューからカテゴリをドラッグ&ドロップすることでドキュメントを構成していきます。 | |||
ナレッジ詳細 | ナレッジのコンテンツをDocBook#Article 形式で編集するエディタです。 エディタ上で右クリックを行い、タグのテンプレートを挿入することもできます。
|
|||
チェックアイテム | ナレッジエントリービューで選択しているチェックアイテム情報および検索情報を編集することができます。 |
以下にチェックアイテムタブで編集するチェックアイテム情報および検索情報の各入力項目の説明をします。
Table 3. チェックアイテム情報
項目 | 説明 | |||
---|---|---|---|---|
検索手順 | 登録するナレッジとしてどのような移植箇所をどのように検索するのかの概要を文章で入力します。 | |||
検索実施 | ナレッジベース検索ツールで検索する際に、実際に検索対象とする場合はチェックを有効にします。 | |||
移植要因 | 移植が必要となる理由として該当する項目を選択します。 | |||
難易度 | 移植作業の難易度を選択します。
|
|||
難易度詳細 | 移植作業の詳細な難易度を選択します。
|
|||
目視確認 | 設定したロジカルな検索条件だけでは移植項目が特定できない場合の目視による調査方法または、判定基準等を入力します。 | |||
ヒアリング確認 | 開発元に確認しなければ移植の必要性が判断できない項目の場合の開発元への確認内容を入力します。 |
Table 4. 検索情報
項目 | 説明 | |||
---|---|---|---|---|
検索対象ファイル | 検索対象とするファイル名を入力します。正規表現での入力が可能です。 | |||
検索キーワード 1 | 検索モジュールに渡すパラメータを入力します。正規表現や XPath での入力も可能です。
|
|||
検索キーワード 2 | 検索モジュールに渡すパラメータを入力します。正規表現や XPath での入力も可能です。
|
|||
検索モジュール | 検索モジュール概要を参考に検索したいモジュールを選択します。
|
|||
検索モジュール概要 | 検索モジュールの概要説明が表示されます。 | |||
ライン数算出 | 検索にヒットした場合にライン数に入力した値を移植工数として加算する場合はチェックを有効にします。 | |||
非算出理由 | ライン数算出を無効にする場合は、その理由を入力します。 | |||
不明 / TODO | ライン数が不確定な場合に、該当する項目を選択します。 | |||
ライン数 | 移植に要するおおよその修正ライン数を入力します。 | |||
ライン数根拠 | 入力したライン数の根拠を入力します。 | |||
調査内容 | 修正ライン数を算出するための調査方法等を入力します。 |
編集したマイグレーションナレッジファイルを確認、保存します。
HTML プレビュー
ツールバー上の「HTML プレビュー」ボタンをクリックすると、ドキュメンテーションタブにて構成したドキュメントを確認することができます。
XML 保存
ツールバー上の「XML 保存」ボタンをクリックすると、マイグレーションナレッジファイルをXML 形式で保存することができます。
Note | |
---|---|
保存したXMLファイルは、ナレッジ管理ツールで再度編集することができます。 |
Note | |
---|---|
保存したXMLファイルは、ナレッジベース検索ツールの入力情報として利用できます。 |
HTML 保存
ツールバー上の「HTML 保存」ボタンをクリックすると、マイグレーションナレッジファイルに含まれるドキュメント情報をHTML 形式で保存することができます。
Important | |
---|---|
保存したHTMLファイルは、ナレッジ管理ツールで再度編集することはできません。マイグレーションナレッジXMLファイルを編集し、再度HTML 保存する必要があります。 |
Note | |
---|---|
保存したHTMLファイルは、ナレッジベース検索ツールのガイド参照として利用できます。 |
ここでは実際にナレッジを作成する際に注意すべき事や工夫すべき事について記述します。
現行のTUBAMEでは複数行にまたがる検索が行えません。
Figure 1. 複数行検索例
getServlet().log (resources.getMessage(locale, "users.error.invoke", operation), e);
正規表現としては「log[\s]*\(」とすることで上記のlogメソッドを検索することが出来ますが、 現行のTUBAMEでは複数行にまたがる検索が行えないため、このような正規表現を用いて検索することは出来ません。
Eclipseのフォーマット機能を利用することで「log」の後ろに「(」が来るようにすることもできますが、 「log」の後ろにコメントが入っている場合はフォーマット処理は行われません。 したがって、事前にCheckstyleなどの静的解析ツールを利用して、このようなコードが無いかチェックをし、 そのうえでフォーマット機能を利用するようにした方が良いと考えられます。
検索条件として、検索キーワード1にFQCN、検索キーワード2にメソッドや定数を指定した場合に、 前方一致してしまう別クラスを検出してしまう問題があります。
例えば、javax.servlet.http.HttpSessionクラスのgetValue()メソッドを検索する場合、 検索キーワード1に「javax\.servlet\.http\.HttpSession」、 検索キーワード2に「getValue\(」を設定していると、 javax.servlet.http.HttpSessionBindingEventクラスのgetValue()メソッドを利用してい る場合に検出されてしまうと問題があります。本問題については、「HttpSession」の後ろに英数字が入らないような形での キーワード指定「javax\.servlet\.http\.HttpSession[^0-9a-zA-Z]」と指定するなどが考えられます。
検索条件として検索キーワード1にFQCN、検索キーワード2にメソッドや定数を指定した場合に、 検索対象ではないクラスの同名メソッドを検出してしまう問題があります。
例えば、javax.servlet.ServletContextクラスのlog(Exception, String)メソッドを検索す る場合、 検索キーワード1に「javax\.servlet\.ServletContext」、検索キーワード2に「log\(」を設定していると、クラス内で定義された同名のメソッドが検出されたり、log(Exception, String)メソッドではなく、 log(String, Throwable)メソッドが検出されてしまう問題があります。 なお、本問題については現在キーワードでの防止策は確認できていないため、目視によるチェックで対応する必要があります。