Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. 生成AI利用対話型アプリ「NICMA/ニックマ」を活用して、業務効率化してみた!

生成AI利用対話型アプリ「NICMA/ニックマ」を活用して、業務効率化してみた!

投稿者:向出・久松

NICMA

こんにちは!
日本情報通信株式会社 EDI事業本部 システム開発部の向出と久松です。
弊社のEDIサービス製品であるEDIPACKの開発を担当しております。

日々の開発業務の中では、EDIPACKの機能開発や動作検証時のエビデンスとして画面コピーを取得したり
不具合が発生した際にログを調査したりすることが度々あります。
そんな日々の業務をもっと効率的にするために、NICMA/ニックマを相棒にして業務改善活動に取り組みましたので、その結果をご報告いたします!

1.実施内容

改善活動のテーマを「標準化された情報管理による業務効率の最適化」とし、以下に取り組みました。

  • ログ関連情報のガイド化
  • エビデンス取得自動化

1-1.ログ関連情報のガイド化

EDIはサプライチェーンの根幹であり、様々な業界や企業のデータ流通をグローバルに支えているため、その責任はとても大きいと考えています。
そのため、エラーや不具合の発生時には迅速な対応が求められますが、ログ調査において以下の課題を抱えていました。

本課題を解決するために、各種ガイドラインを作成し、そのナレッジを共有することで、
誰でも、素早く、正確にログの調査・解析を行えること
を目指した取り組みが「ログ関連情報のガイド化」です!

ガイドライン作成にあたり、NICMA/ニックマに以下の点で協力してもらいました。

  • OS/MWのログの一般的な見方を解説
  • OS/MWの正常時・異常時の詳細な内容解説

(EDIPACKのログは学習させる時間がなく解説してもらうことはできなかったため、今後の改善点の一つと考えています。)

まずはこのような大まかな質問から始め、回答の精度を確認しました。
その後、実際のログの内容に基づいた解説や、不明点の深掘りなどを行い、NICMA/ニックマを相棒に対話を重ねて、ログ関連情報のガイドラインを作成しました!

Q:cataline.outのログの見方を教えて→A:Catalina.outは、Apache Tomcatのログファイルの一つで、Tomcatサーバーの標準出力および標準エラー出力に送られたメッセージが格納されています。

1-2.エビデンス取得自動化

作業を実施する際には、必ず実施内容をエビデンスとして残しておく必要があります。
しかし、エビデンス作成を全て手作業で行うと、以下のような課題が生じます。

そこで、今回はGoogleアカウントをお持ちであれば無料で使用できるGASと、フリーソフトのAutoHotkey を利用して、エビデンス取得作業の一部を自動化してみます!
(今回は画面のキャプチャ取得についてご紹介いたします。)

作業内容

  1. AutoHotkeyスクリプト作成
  2. GASスクリプト作成
  3. 検証

今回のメインポイントは①と②の自動化処理の作成です!
知識がない状態だと何を書いたら思い通りの処理が実現できるのか全く分からず、途方に暮れてしまいますよね。

しかしNICMA/ニックマを利用することで、対話しながら必要な処理を作成することができました!

以下は実現したい処理のイメージをざっくりとNICMA/ニックマに伝えている画面です。
ここで伝える内容が詳細であればあるほど、思い通りの処理をスクリプトに落とし込んでくれます。

Q:GAS機能を使用してスプレッドシートに張り付けた画像サイズを調整したいです。→A:Google App Script(GAS)を使用してスプレッドシートの画像サイズを調整するためのスクリプトをいかに例示します。

このように、対話形式でコミュニケーションを取りながらNICMA/ニックマと共同開発したのがエビデンス取得自動化ツールなんです。
回答してもらったスクリプトは、もちろん実際に読み込んで使用することができるものになっているので以下にサンプルコードを記載します。

① AutoHotkeyスクリプト

キー入力操作をサポートしてくれるこのツールを使用することで、スクリーンショットの取得や貼り付け、画面の移動といった操作を一度に自動化しました!

; スクリーンショット張り付け先のスプレッドシートのウィンドウタイトルを指定
SpreadSheetTitle := "スプレッドシートタイトル" ; 随時変更

^DOWN::
{
; 現在アクティブなウィンドウの情報を保存
WinGet, ActiveHwnd, ID, A
WinGetTitle, ActiveTitle, ahk_id %ActiveHwnd%

; スクリーンショットを取得
Send, !{PrintScreen}
Sleep, 100 ; スクリーンショットの処理待機

; 指定したスプレッドシートのウィンドウをアクティブにする
WinActivate, %SpreadSheetTitle%
Sleep, 200 ; ウィンドウがアクティブになるのを待機

; スプレッドシートのセルにフォーカス
Send, ^f
Sleep, 50
Send, {Esc} ; 検索ボックス閉じる

; スクリーンショットを貼り付け
Send, ^v
Sleep, 300 ; 貼り付け待機
Send, {Esc} ; 画像選択解除

; 下方向にセルを移動し画像と画像の間隔を確保
Send, {Down 53}

; 最初にアクティブだったウィンドウを再度アクティブにする
WinActivate, ahk_id %ActiveHwnd%
}

② GASスクリプト

①で取得した画像のサイズ調整や、シート全体の調整を一括で行う処理を作成しました。

function resizeImages() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// 実行時に横幅(右端)を何列までに調整するかアルファベットを入力して指定する
var colLetter = Browser.inputBox('右端の列をアルファベットで入力してください(例:G)');
var targetColumn = columnToIndex(colLetter);
// 画像一覧を取得
var images = sheet.getImages();
// 調整後、画像と画像の間隔を3行確保するために行インデックスを初期化
var rowIndex = 1;
images.forEach(function(image) {
var position = image.getAnchorCell();
var row = position.getRow();
var col = position.getColumn();
// 画像の元のサイズを取得
var originalWidth = image.getWidth();
var originalHeight = image.getHeight();
// アスペクト比を保持して横幅を指定された列まで調整
var targetWidth = sheet.getColumnWidth(col) * (targetColumn - col + 1);
if (originalWidth > targetWidth) {
var aspectRatio = originalWidth / originalHeight;
var newHeight = targetWidth / aspectRatio;
image.setWidth(targetWidth);
image.setHeight(newHeight);
}
// 調整後、新しい位置に画像を配置し直し、画像と画像の間隔を3行確保
image.setAnchorCell(sheet.getRange(rowIndex, col));
rowIndex += Math.ceil(image.getHeight() / sheet.getRowHeight(rowIndex)) + 3;
});
}

// 列アルファベットを列インデックスに変換するヘルパー関数
function columnToIndex(col) {
var colStr = col.toUpperCase();
var column = 0;
var length = colStr.length;
for (var i = 0; i < length; i++) {
column += (colStr.charCodeAt(i) - 64) * Math.pow(26, length - i - 1);
}
return column;

③ 検証

①と②で作成したスクリプトを使用することで、以下のような結果を得ることができました。

作業工程Before/After

  • Before:

    スクリーンショット取得⇒貼り付け先のウィンドウに切替⇒スクリーンショット貼り付け⇒画像サイズ調整⇒元のウィンドウに切替⇒スクリーンショット取得・・・

  • After:

    スクリーンショット取得のみ

エビデンス作成の一部を自動化するだけでも、手作業の煩わしさが解消しました!

2.業務改善活動の期待効果

各改善活動の直接的な効果として、各作業にかかる時間が以前より短縮されることが計測できました。(体感だと1割減です!)

加えて、以下の間接的な効果も期待しています。

  • ログ関連情報のガイド化
    1.ガイド資料作成によりナレッジ共有 ⇒ 2.有識者任せであった属人化解消・業務標準化 ⇒ 3.スキル平準化により迅速な対応が可能に
  • エビデンス取得自動化
    1.ツール活用により利便性向上⇒ 2.面倒な作業からの解放によりストレッサー低減・エンゲージメント向上⇒ 3.気持ちの余裕から顧客へのサービスレベル向上へ
ナレッジ共有、利便性向上→属人化解消、業務標準化、ストレッサー低減、エンゲージメント向上→スキル平準化、迅速な対応、顧客へのサービスレベル向上→顧客ロイヤリティ向上

提供するサービスで不具合を発生させないことがもちろん一番目指すべきところですが、発生してしまった場合は、誰でも素早く正確に対応し、お客様のサービス停止時間を短縮することも大切だと考えます。

今回の業務改善活動では、私たちの日々の業務の効率化という観点だけでなく、効率化することで短縮できる時間を通じて、お客様へ還元できるような効果が期待できるものとなりました!

3.最後に

NICMA/ニックマを利用することで、本来知識が必要となるスクリプトの作成やログ内容の解析も、なんと0ベースから実現できるようになります!

今回ご紹介した通り、弊社EDI事業本部では、誰でも・簡単に・品質の高い作業が実施できることを目指して取り組みを行っています。
これからもお客様の日常業務を支援し、より効率的で生産性の高い環境を提供するために、技術の進化とサービスの向上を追求していきます!

本記事をお読みいただき「NICMA/ニックマ」について気になった方がいらっしゃいましたら、こちら(https://nicma.jp/#toiawase)是非お問い合わせください。

ページのトップへ