メインコンテンツまでスキップ

加美川 真由子

Lightning Review (以下、LR)開発チーム、入社4年目の加美川です。
少しずつ出社している人が周りに増えてきた気がします。
今までは出社しても誰もいなくて、しょんぼり仕事をしていることが多かったのですが、最近は他のチームの人と会話する機会もできて嬉しいです😆
仲良くなれた人も増えたかな……? 増えたはず。きっと。たぶん……。

さて話は変わり、この度 LR も弊社で開発している 『Next Design』 というツールと仲良くなることになりました。
現在、Next Design のプロジェクトファイルが LR でアウトライン解析可能になる新機能を開発しているので、ご紹介します!

Next Design (以下、ND)は、 弊社で開発・リリースしている、システムとソフトウェア開発のための次世代設計ツールです。
設計情報の構造と関連を定義した「メタモデル」と設計情報の見せ方を定義した「ビュー」を現場のプロセスに合わせてカスタマイズすることで、これまで Word / Excel や UML / SysML で表現していた仕様書・設計書など、開発現場固有の設計手法・プロセスを整理し、ツール化できます。
ND について、より詳しい情報は製品サイトをご覧ください。

LR では、Word、Excel、PowerPoint、PDF、ソースコード、Markdownのアウトライン解析が可能でした。
今回は、新たに ND のプロジェクトファイルをアウトライン解析できるようになります。
以下のGIF画像のように、ND のモデルのツリー構造がそのまま LR のアウトラインになるため、他のドキュメントに指摘するときと同様にモデルに対して指摘を追加したり、ワンクリックで指摘のあったモデルにジャンプして確認したりすることができます。
これにより、ND を利用して設計業務を行っているチームも、LR を使って直感的に日々のレビューを実施できるようになります。

NDのプロジェクトファイルをアウトライン解析し、アウトラインにジャンプする

今回は LR で ND の成果物がレビューできる新機能についてご紹介しました。
そして現在、LR を利用した ND の成果物のレビューを、もっと強力に支援する連携機能を開発中です。
今後のブログにてご紹介していきたいと思います。ご期待ください!

近藤 匠真

Lightning Review (以下、LR)開発チーム、入社2年目になりました近藤です!
WBC 大いに盛り上がりましたね!!! とても感動しました😭
栗山監督は村上選手へ、ずっと「最後はお前で勝つんだ」と言って最後まで信じていたと話していましたね。
自分も信頼し、信頼される人になれるよう邁進していきたいと思います!!

さて今回は、LR 2.5 に搭載された新機能「ScriptEditor」の便利な活用例の紹介、第二弾!
スクリプトのコマンドライン実行を使った LR の指摘情報の自動収集を紹介します!

前回は、スクリプトのコマンドライン実行により、簡単に LR の操作を自動化できるところを紹介しましたが、コマンドライン実行が可能になったことで、タスクスケジューラを用いた定期実行も可能となりました!
今回は、タスクスケジューラを活用して、LR の指摘データを収集して JSON ファイルに出力するスクリプトを定期実行します。
以下はその様子です。便宜上、タスクスケジューラから手動で実行した際の動きをお見せします。

スクリプトのコマンドライン実行のデモ画像

JSON ファイル形式で出力された指摘情報は、BIツールなどの分析用のツールで読み込み可能となります。
例えば、取得した指摘情報を、下図のように Excel の機能を利用して表形式に変換できます。

JSON ファイルを使用して分析に活用

上図のように Excel に出力先のデータを接続しておくことで、グラフの出力をする等、お好みの形に合わせて分析に活用していただけます。
つまり、タスクスケジューラで定期実行することで、手間なく最新の指摘情報を取得して、分析に利用できます!

今回も前回同様、 ScriptEditor を用いて LR の指摘データを収集して JSON ファイルに出力するスクリプトを実装しました。
完成したコードは以下になります。
※ 今回はサンプルのため、集計データの出力先と集計対象のフォルダはデスクトップとしています。

// 本スクリプトは、コマンドラインからスクリプトを実行する想定であり、// 任意のフォルダ以下のレビューファイルの指摘データを集計し、JSONファイルを出力する。// 出力したJSONファイルは、BIツールなどで読み込んで分析する対象とする。
// 結果を出力するファイルを指定(サンプルとしてデスクトップに Output.json を出力)var outputPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Output.json");
// 指摘のデータのうち、出力対象とするフィールドを定義したクラスclass IssueData{    // 指摘ID    public string Id {get; set;}    // ステータス    public string Status {get; set;}    // 重大度    public string Importance {get; set;}    // 検出工程    public string DetectionActivity {get; set;}    // 原因工程    public string InjectionActivity {get; set;}    // 修正者    public string AssignedTo {get; set;}}
// 指定フォルダ以下のレビューファイルの指摘データを集計する(サンプルとしてデスクトップ以下のレビューファイルを集計)var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);var reviewFilePaths = System.IO.Directory.GetFiles(folderPath, "*.revx", SearchOption.AllDirectories);var issueDataList = new List<IssueData>();var service = App.GetReviewFileService();foreach(var reviewFilePath in reviewFilePaths){    try    {        var review = service.OpenReview(reviewFilePath);        foreach(var issue in review.GetAllIssues())        {            issueDataList.Add(new IssueData()            {                Id = issue.Id,                Status = issue.Status,                Importance = issue.Importance,                DetectionActivity = issue.DetectionActivity,                InjectionActivity = issue.InjectionActivity,                AssignedTo = issue.AssignedTo,            });        }        service.CloseReview(review);    }    catch    {        // 例外が起きたファイルは何もしない    }}
// JSONにシリアライズしてファイル出力するvar serializer = new JsonSerializer(){    Formatting = Formatting.Indented,};
using(TextWriter writer = File.CreateText(outputPath)){    serializer.Serialize(writer, issueDataList);}
// レビューファイルを開いていない、かつ、ダーティ状態でない場合は、// スクリプトの実行のためにレビューウィンドウを起動したと判断してレビューウィンドウを閉じるvar window = App.ActiveReviewWindow;if(window != null && string.IsNullOrEmpty(window.Review.FilePath) && !window.Review.IsDirty){    App.Quit();}

次に、タスクスケジューラから[タスクの作成]-[操作]-[新規作成]を選択し、下図の赤枠内に以下のコマンドを設定します。

"C:\Program Files (x86)\Denso Create\Lightning Review\LightningReview.exe" --run "{作成したスクリプトのファイルパス}"

タスク7スケジューラの設定

任意の期間で定期実行することで、指定した集計対象フォルダ以下の指摘情報の自動収集が可能になります。

実際に実行した際の動作は冒頭の動画をご確認ください。

いかがでしたか? ScriptEditor を利用すれば、簡単に LR の操作を自動化できます!
今回は、スクリプトの定期実行によって、日々の LR を利用したレビューで貯まっていく指摘の情報を、自動で定期的に取得する方法を紹介しました!
上記の説明を参考に、ぜひ使ってみてください!

以下のリンク先にて、スクリプトのサンプルを公開しています。よろしければこちらもご確認ください。
https://docs.lightning-review.com/help/extensions/script-editor/sample-list

近藤 匠真

Lightning Review (以下、LR)開発チーム、入社1年目の近藤です!
新人です!!と言いたいところですが、気付けばもう次の新人が入社する季節となりました。あっという間です。
日々、 頼れる LR メンバーの先輩たちに囲まれ、楽しく開発しています。ほんと感謝しかないです。😭
自分もそんな先輩になれるように努めます!!!

さて今回は、LR 2.5 に搭載された新機能「 ScriptEditor 」の便利な活用例として、誰でも簡単にできるスクリプトのコマンドライン実行を紹介します!

とはいえ、何のことやら??と思う方もいらっしゃると思います。
以前のブログでは、 ScriptEditor で LR の操作を自動化できることをご紹介しました。  
実は、バッチファイルを用意することで、 ScriptEditor を起動しなくても、作成したスクリプトを実行できてしまうんです!  
今回は、「たった10行のコードを書くだけで、指摘を重大度"高"でフィルタする機能が作成できて、いつでも実行できる!」ところをお見せします。
実際に作成したスクリプトを、バッチファイルにより実行している様子がこちらです。

スクリプトのコマンドライン実行のデモ画像

では実際に、上記画像の重大度"高"でフィルタするスクリプトを ScriptEditor 上で作成していきましょう。

大まかな流れは以下のようになります。
1 レビューファイルに関連する指摘の一覧を取得
2 指摘情報から重大度が高の指摘IDを取得
3 取得した指摘でフィルタ

まずアクティブなレビューウインドウを取得して LR への操作を可能にします。
下記画像のようにインテリセンスが効いているので、わざわざ公開されている LR の API を見に行かなくとも必要な情報を取得できます。

スクリプトのインテリセンス

次に、フィルタするために指摘の一覧を取得します。
review.GetAllIssues() で指摘の一覧を取得できます。

そして、指摘の一覧から重大度高の指摘IDを取得します。
インテリセンスをみると「重大度 本プロパティの・・・ Low 低 Middle 中 High 高」と表示されています。
従って、issue.Importance が High に一致する指摘の ID を取得すればよいですね。
重大度の情報

もし、優先度高によるフィルタを作成したいなと考えれば、issue.Priority が High に一致する指摘の ID を取得すればよいです。
優先度の情報

このようにインテリセンスを活用することで、簡単にフィルタしたい指摘を選択できます。
優先度"高"かつ重大度"高"のフィルタなど、用途に合ったオリジナルフィルタも作成できますね!
最終的に完成したコードは以下。

// アクティブなウインドウのレビューを取得するvar review = App.ActiveReviewWindow.Review;
 // 重大度高の指摘のIDをカンマ区切りの文字列として設定するvar issueIds = string.Empty;foreach(var issue in review.GetAllIssues()){ if (issue.Importance == "High") {  issueIds += "," + issue.Id; }}
// フィルタを適用するApp.ActiveReviewWindow.ApplyIdFilter(issueIds);

たった10行のコードでフィルタ機能が作れるのです。ものすごく簡単ですよね。

では、作成したスクリプトを実行するバッチファイルを、作成しましょう。
以下のように、実行したいスクリプトのファイルパスをコマンドラインの引数に設定したバッチファイルを作成します。

set exePath="C:\Program Files (x86)\Denso Create\Lightning Review\LightningReview.exe"%exePath% --run "{作成したスクリプトのファイルパス}"

作成したバッチファイルを任意の場所に保存し、実行すると、冒頭の動画のようなフィルタが可能になります!

ScriptEditor を利用すれば、簡単に LR の操作を自動化できます!
上記の説明を参考に、ぜひ使ってみてください!

以下のリンク先にて、スクリプトのサンプルを公開しています。よろしければこちらもご確認ください。
https://docs.lightning-review.com/help/extensions/script-editor/sample-list

加美川 真由子

Lightning Review (以下、LR)開発チーム、入社3年目の加美川です。
世間はバレンタインデーですね!
美味しそうなチョコレートがたくさんお店に並ぶようになり、私もお昼休みに色々買ってしまいました。
もちろん、全部自分で食べました😋 美味しいから仕方ないですよね?

LR には、GitHub と SVN のリポジトリ内のフォルダとファイルの一覧や、ファイルのアウトライン解析など、構成管理システムで管理している成果物のレビューを簡単に開始する機能があります。
次のバージョンアップでリリース予定の LR2.5 では GitLab にも対応しますので、今回はその機能のご紹介です。
なお、GitLab の SaaS 版(GitLab をクラウドで利用している場合)・Self-managed 版(GitLab をオンプレミスで利用している場合)の両方でお使いいただけます。

GitHub や SVN を利用している場合と同様に、レビュー前にレビュー対象とする GitLab のリポジトリを登録しておきます。
RepositorySettingForGitLab

リポジトリを登録することで、リポジトリ内のフォルダやファイルを LR 上で一覧できるようになります。
レビュー対象のファイルまたはコミットをレビュー対象のドキュメントとして追加することもできます。
追加したドキュメントのリンクには、選択したコミット時点のファイルのURLが設定されており、そのURLのファイルをローカルにダウンロードしてアウトライン解析を自動で行うため、すぐにレビューを始められます。

AddDocumentFromRepositoryFileOrCommit

この機能の便利な使い方は、以前のブログでも紹介しています。ご興味があればこちらもチェックしてみてください。
Lightning ReviewでGitHubとSVNのファイルを選択してレビューを開始
GitHubとSVNのファイルの変更前後のコミットを選択してレビューを開始

今後は、GitHub や SVN に加えて GitLab の成果物も、LR から簡単にレビューを開始できるようになります。
LR 2.5 をリリースしたら、ぜひ使ってみてください!

箕浦 彩香

Lightning Review (以下、LR)開発チーム、入社4年目の箕浦です。
年末年始にしっかり食べて寝たら、2キロも体重が増えてしまいました😨
例年より皮下脂肪がしっかり付いた気がするので、ダイエット頑張らないとと毎日思っています…笑

さて今回は、次のバージョンアップでリリース予定の LR 2.5 に搭載される新機能「ScriptEditor」について紹介します!

新メンバ加入時にだけ行うレビューファイルのテンプレートへのメンバ追加、特定の案件でしか使わない特殊なフィルタや、品質分析のための一時的な指摘情報の集計といった、レビューファイルに対して年に数回あるだけの操作や一時的にしか使わない操作などで、手作業は面倒だから自動化したいと思ったことはありませんか?
自動化するための手段として、LRの拡張機能を自分で開発するという方法もありますが、頻繁に使わない機能を作成するにはハードルが高いかもしれません。

ScriptEditor では LR を操作するためのスクリプトの記述・実行ができるため、LRに関する面倒な手作業を、スクリプトを書くことでボタンひとつで実行できるようになり、業務を効率化できます。
LR の拡張機能で利用できるすべての API を ScriptEditor でも同様に利用でき、インテリセンスが効いて候補が表示されるため、APIに詳しくなくても、スクリプトの記述は簡単です。
さらに、スクリプトはテキストファイルであるため、作成したスクリプトをチームメンバと共有することも手軽にできます。

例として、プロジェクトで利用しているすべてのレビューファイルのテンプレートに、新しく業務配属されたメンバをメンバ一覧に一括で追加するスクリプトを実行する様子を示します。

ScriptEditorのデモのgif画像

上記の Gif 画像内で実行しているスクリプト("テンプレートファイルにメンバを一括追加.csx")を以下に示します。

// 以下に追加したいメンバ名を設定var memberNames = new [] {"近藤"};
// 以下にメンバを追加したいテンプレートファイルがあるフォルダを設定var templateFolder = @"C:\Git\XXX\Docs\エンジニアリング\Current\07_ピアレビュー\Templates";
var directoryInfo = new DirectoryInfo(templateFolder);var files = directoryInfo.GetFiles("*.revx");var service = App.GetReviewFileService();foreach(var file in files){    var review = service.OpenReview(file.FullName);
    foreach(var memberName in memberNames)    {        // メンバ追加        var newMember = review.ReviewSetting.AddMember(memberName);        newMember.Reviewee = true;        newMember.Reviewer = true;        newMember.Moderator = true;    }
    // 保存して閉じる    service.SaveReview(file.FullName, review);    service.CloseReview(review);}

ScriptEditor を利用すれば、お手軽に LR の操作を自動化できます!
LR 2.5 をリリースしたら、ぜひ使ってみてください!