投稿者「the-takeo」のアーカイブ

Amazon KendraのWebCrawlerでRedmineのサイトを学習させる

社内の問い合わせをAIチャットボットにやらせるプロジェクトを行うことになった。
最初はChatGPT連携を謳っているクラウドサービスを契約して使っていたんだけど、精度や運用面での課題が多く、あまり活かせていない状況だった。
そこで、乗り換えを検討していたところ、AWSで割と簡単にAIチャットが構築できることが分かった。
https://catalog.workshops.aws/generative-ai-use-cases-jp/ja-JP/overview

本当に、これに書いていることをそのまんまやればAIチャットボットが作成できる。
ただし、AWSは従量課金なので要注意。利用状況にもよるが、試算すると月額15~20万円ぐらいになった。
計算方法は忘れた。

で、さらにこれは学習データを用意して読み込ませることができる(RAGチャット)。
なので、社内の各種情報を読み込ませればそれで社内用AIチャットボットが完成する。

データの読み込みはAmazon Kendraというドキュメント検索エンジンを用いる。
最初は各種ドキュメントファイルをAmazon S3にアップロードし、それをKendraに読み込ませることを想定していたのだが、以下の二点の問題点が生まれた。

そこで、ナレッジ共有サイト(Redmine)を直接読み込ませることにした。
KendraではWebCrawlerをデータソースに出来るので、それで行ける筈だった。

結論としては、問題なくいけた。
ただ、認証面に関してうっかりしてドツボにはまったので、同じことが起こらないようにメモを残す。

【認証情報の設定方法】
(Webcrawlerv2を用いる。基本的な部分は省略する)

  1. Source URLsにRedmineのサイトURLを入力する。
  2. AuthenticationでForm authenticationを選択する。
  3. AWS Secrets Manager secretでCreate and add new secretをクリックする。
  4. 下記の様に各種情報を入力する。
    XPathは下記サイトを参考にしてログインしたRedmineの情報を確認する。
    (多分、デフォルトならこの画像と同じと思われる。)
    https://dietwork.net/winactor-xpath/
  5. 後はダイアログに従って設定する。

恥ずかしい話なんだけど、何故かBasic認証で通そうとして悪戦苦闘してしまった。
しかも、上手くいかなかったのでRedmineのapiキーを使うという斜め下の取り組みをしてしまい、結局1日無駄にしてしまった。。。

とりあえずこれで形は出来た。
ただ、微妙に回答の的がズレていたり、回答とソースが整合しなかったりで、もう少し調整が必要そう。
どう調整するかは全く分からないので、トライアンドエラーの年末年始になりそう。

ビジネス書とかいう大人向け児童書

去年ぐらいから、ビジネス書をちょくちょく読むようになった。

元々、所謂「意識が高い」ことが大嫌いで、仕事論のような本、記事、動画等は一切避けていた。
多分、胡散臭いとか、抽象的(⇒嘘が紛れ込みやすい)だとか、サンプル数1の参考にならない感想をさも真理のように語ることへの嫌悪感だとか、その辺りが理由なんだと思う。だから、本だと技術書とか具体的で基本的に真実(実行すれば真偽が分かる)が書いているものぐらいしか読んでいなかった。

然し、さっき「その辺りが理由なんだと『思う』」と書いた通り、よくよく考えるとそれは根拠のない思想だった。実際に読んだことも無いのに、どうしてそうだと判断できようか。
あと、YouTubeで「ビジネス書100冊読む」というライブ動画を見てビジネス書を茶化している内に逆に興味を持ってしまったというのもある。いや、正直に言おう。それが9割だ。

ライブの再生リスト:

上記の切り抜きの再生リスト:

正直、大半が
・当たり前のこと
・過言なこと
だというのが今のところの正直な感想だ。
あと、この界隈全般で「外資系」「コンサル」が持て囃されているのって何でなんだろう。彼らの仕事術が他業界でも幅広く使えるというデータとかあるのかね。まぁ、あるなしに関わらず、使える部分だけ使えば良いとは思うけど、それにしても偏っているなぁとは思う。

そんな中にも自分の未熟故に「当たり前」ではないことを知ったりするとそれは確かに自分の仕事の助けになる。それは間違いない。
なので、小説のように通読するんじゃなくて、流し読みして宝探しするような感覚で読むのが最も有効なんだろうなと今のところ思っている。

そして、何かの本で「読んだことをアウトプットすることが重要」と書いてあったので、実際にやってみようと思う。
とりあえず、今回は所信表明として今まで読んだ本を覚えている範囲でリストアップだけする。
次回以降で役に立った部分の紹介をしてアウトプットする。きっとする。多分、恐らく。


・ロジカルシンキング系

コンサル一年目が学ぶこと

3分でわかるロジカル・シンキングの基本

グロービスMBA集中講義 [実況]ロジカルシンキング教室

グロービスMBAキーワード 図解 基本フレームワーク50

マンガで身につくフレームワークの使い方がわかる本 生産性が劇的に高まる最強の仕事術

マンガでわかる! マッキンゼー式ロジカルシンキング


・マネジメント系

新1分間マネジャー

マネジャーの最も大切な仕事――95%の人が見過ごす「小さな進捗」の力

管理職1年目の教科書―外資系マネジャーが絶対にやらない36のルール

図解&事例で学ぶ課長・部長マネジメントの教科書

プレイングマネジャーの教科書

コーチングよりも大切な カウンセリングの技術

マンガでやさしくわかるチームの生産性

最高の結果を出すKPI実践ノート

もしかしてブラック上司?


・業務遂行系

自分を劇的に成長させる!PDCAノート

なぜ、あなたの仕事は終わらないのか スピードは最強の武器である

アイデアのつくり方

その仕事、生産性ゼロです

顧客をつくり 利益が上がる コールセンターの上手な運営法

良いFAQの書き方──ユーザーの「わからない」を解決するための文章術


あと、ビジネス書全般で「仕事ではとくかく分かりやすく説明しろ」という教えが多く、そのせいか、殆どの本は字も大きく、キャッチーな表現で非常に読みやすくなっている。
そういう特徴をまとめると、ビジネス書とは「大人向け児童書」と言えるかも知れない。
(半分いい意味で、半分茶化しながら。)

【ビジネス書感化シリーズ】PDCA

最近、仕事をがむしゃらにやるのを少し止めて、先人たちの知恵を借りることにした。
理由は色々あるけど、一番大きいのは「今いる会社でしか使えない働き方をしている」と強く自覚したからである。
大学時代から「意識高い系かよwww」と揶揄していた事柄を学ぶのは若干の抵抗があったが、いざやってみると意外と面白かったりする。
しかし、いざやってみると(自分にとっては)机上の空論だったり、無意味な教えもあった。取捨選択はどんな取り組みでも必要である。

自分用メモとして、以下の内容でまとめてみる。
・実際に役に立ったフレームワークだけ取り上げる。
・具体的な自分のやり方を記載する。

ちなみに自分の現在の業務内容、プロフィールは以下の通りである。

・自社開発製品の製品サポート
・マネージャー
・30代前半

多分三日坊主になるシリーズ、やってみる。


【フレームワーク名】PDCA
【対象】全業務
【効果】業務の改善。業務の洗い出し。

【概要】
業務を以下のフェーズに分類して改善を続けていくというもの。

Plan(計画立案)
Do(計画実行)
Check(実績確認)
Action(計画改善)

これを1サイクルとし、次サイクルではActionで出た改善策を盛り込んだ上でPlanを行う。
繰り返し実施することで、業務が改善していく。
サイクルを繰り返すので「PDCAを回す」なんてよく表現される。

【実際に取り入れて感じた課題と解決方法】
「PDCAを回せ」とは簡単に言うが、実際やってみるとうまく行かなかったり、ほぼ無意味(改善しない)な場合が多い。
考えた結果、次の原因、施策に行き当たった。

・そもそも何を改善すれば良いのか分からない。(何をCheckすれば良いのか分からない)
PDCAの期間を明確に決める。また、その期間は短く取る。(長くても1Q)
・そもそもPlanが作れない。
Goal(目標)を設定する。そこから、ロジックツリー的に考えればPlanが立案できる。(G-PDCAなんて呼ばれていたりもする。)

後は「堅苦しく考えず、とりあえず形だけやってみる」ことも大事だと感じた。しっかりしたアクションを出そうと悩んでPDCAやらなくなるぐらいなら、適当なActionを出したほうがまだマシである。

【現在の具体的な取り組み方】
現状は個人用業務改善策兼タスク管理として使っている。

・ExcelでG-PDCAブックを作成する。
・期間は1週間
・Goalは特に何かない限り「今Quarterの目標達成」とする。(現在の会社では人事評価が1Q毎にあり、そこで次Qの目標が設定される)

  1. 週の始まりにPlanを作成する。
  2. 日々の業務終わりにPlanの横に実際に行ったDoを記載する。
    その際、総括として「OK」「微妙」「NG」でざっくり評価している。(Checkでやっても良いかもしれない。)
  3. 週の終わりにPlanとDoを比較し、何が出来ていなかったか、そしてその理由は何かをCheckする。
  4. Checkの内容から、それを解決する方法をActionとして記載する。

【サンプル】
PCCABook

【今後やろうと思っていること】
やってみれば小学生でも出来る単純なことだが、仕事をただ適当にやってきた自分はここからスタートする。
今後の発展としては以下を考えている。

・個人用でしばらく使った後、チームメンバー全員に運用してもらう。
・目標と項目がバラバラの表記になっているので、関連付けをより強調したい。
ただし、関連付けられないものも現実的にはあるので、チームで運用する前にそこは決めておきたい。
・Excelではなくてシステム化したい。

【現状わかっている課題】
また、これ1つで万能なフレームワークでは全く無いので注意が必要である。
特に注意しないとと感じた具体的な点には以下が挙げられる。

・Planが現実的に(工数的に)達成可能なものか。
→別途工数表を用意し、それと照らし合わせることが必要。
まだ試行錯誤中だが、PDCAブックはあくまで業務改善の為のフレームワークであり、
タスクについては工数管理表をベースとし、PDCAはあくまで補助的なものだと考えている。

中小企業で「後は任せた」でしか働いたことがないから、他社がどういう仕事の進め方しているか全く分からん。
大企業の人々にとっては、10年以上前に過ぎた道を今更歩んでいるのだろう。きっと。

Windowsのサインイン(RDP)が異常に遅い場合の対処方法

昔から運用しているHyper-Vで仮想化されたWindows Server 2019環境で、突然RDPが出来なくなる事象が発生した。
正確には、ID/PASSの入力は通り、画面は開くのだが、ずっとWindowsのサインイン時の背景画面のまま何も動かず、数分するとそのままRDPのウィンドウが閉じてしまう。
Hyper-V Managerからなら接続できるが、それでも数十分は上記の背景画面のまま待たないといけない状態である。

ログにも何も出ておらず、Microsoft社に問い合わせても原因不明だったので、しばらく運用回避していたが、先日ようやく対処方法が分かったので、備忘としてここに記載する。

【対処法】
1. Hyper-V Manager等で何とかサーバーに入る。
2. ローカルグループポリシーを開く。(スタートメニューを開き「gpedit.msc」と入力してEnter)
3. [コンピューターの構成]-[Windowsの設定]-[セキュリティの設定]-[ローカルポリシー]-[セキュリティオプション]を開く。
4. [対話型ログオン:最後にサインインしたユーザーを表示しない]を有効にする。

どうもユーザー数が多い環境で生じやすい傾向にあるようだ。
推測だが、ユーザーの検索か何かで時間が掛かってしまっていると思われる。

試用版Windowsを自動延長しながら使う

仕事柄、動作確認用に試用版Windowsを使うことが多い。
試用版はその利用期間が制限されているが、下記のように「slmgr -rearm」コマンドを実行すれば期間の延長が可能である。
(勿論、その延長にも上限回数がある。)
https://www.atmarkit.co.jp/ait/articles/1005/28/news108.html

長期間使う場合は延長が必要になるが、ついついうっかり忘れてしまうことがある。
期限が切れて一定時間経つとシャットダウンされてしまうので、お叱りを受けながら起動、延長、再起動の操作をする羽目になる。
そこで、自動で延長を行うScriptを作成した。

ちょっと強引だが、有効期限状態を取得し、期限切れを検知したら延長と再起動を行う。
期限が切れていなければ何もしない。

これをタスクスケジューラで5分毎ぐらいで実行させれば良い。
ただし、日本語版でしか動作しないのでご注意を。

別に認められた延長期間内で使うことを便利にするだけのScriptなので問題は無い・・・筈・・・

Google Chromeで他アプリケーションを開くときにポップアップを表示しないようにする

Google Chromeから.xlsxファイルなどを開く際、デスクトップ版Excelで開こうとすると以下のようなポップアップが出る。

業務上頻繁にこれを使う必要があるので表示しないようにしてほしいという問い合わせがあった。
調べてみたところ、以下の手順で対応が出来た。

  1. Chromeを閉じる。
  2. 下記のコマンドを管理者として実行する。
  3. Chromeを起動し、ファイルを開く。
  4. ポップアップに「このタイプのリンクは~」というチェックボックスが表示されるので、これにチェックを入れて開く。
  5. 以後、ポップアップが表示されなくなる。

参考:http://windowsbulletin.com/ja/fixing-always-open-links-of-this-type-in-the-associated-app-missing-in-chrome/

なお、ポップアップを再度表示させたい場合はレジストリを戻すのに加えて手順が必要になる。具体的には以下の通り。

  1. Chromeを閉じる。
  2. エクスプローラで[%HOMEPATH%\AppData\Local\Google\Chrome\User Data\Default]を開く。
  3. [Preferences]をテキストエディタで開く。
  4. 以下のような記述部分があるので、この[false]を[true]に変更し、上書き保存する。(ここでは許可したアプリケーションをExcelとする。)
    修正前:”protocol_handler”:{“excluded_schemes”:{“ms-excel”:false}}
    修正後:”protocol_handler”:{“excluded_schemes”:{“ms-excel”:true}}
  5. レジストリを戻す。
  6. 元に戻っているか確認する。

プロジェクトマネージャーって仕事の難しさと面白さが漸く分かってきた気がする。
そして、そもそもプロジェクト自体を定義できていないことに気付いた。
自分には足りないものだらけだ。30歳にして本格的に勉強しないと行けないと気付いた。
この一ヶ月で結果を出そう。そうしよう。

タスクスケジューラを日本時間午前9:00に設定してはいけない

サーバーのディスク使用量などの情報を月次でメール配信するタスクを設定しているのだが、去年後半辺りから挙動がおかしくなってきた。
月末に起動するように設定しているのに、何故か月末の一日前にも起動してしまう・・・

結論から言うと、これはWindowsのバグである。
以下、引用だが、以下の条件が揃っている場合、起動すべき日の前日にもタスクが起動してしまう。
(起動すべき日にも起動する。つまり、二回起動する。)


以下の 4 つの条件がすべて該当する場合に本事象は発生いたします。
● Windows のバージョンが以下であること。
– Windows 8.1 / Windows Server 2012 R2
– Windows 10 Enterprise 2016 LTSB / Windows Server 2016
– Windows 10 Version 1903
● 2019 年 3 月 第 3 週以降の更新プログラムが適用されていること。
※ Windows 10 Version 1903 はリリース段階から該当します。
● 毎週や毎月の指定された曜日に実行するタスクであること。
● タスクの実行時間が日本時間 AM 9:00 (協定世界時 0:00) であること。

引用元: 曜日指定のタスクが前の曜日に実行されてしまう問題について


多分、世界標準時で0:00に実行することで前日と当日の区別がうまくできていないのだと思う。しらんけど。


マネージャーになって工数を意識するようになると、仕事って根性でやってはいけないんだなぁと今更思うようになった。
今までお世話になったマネージャーの方には頭が上がらない。

Windows Update KB4475591で凄く困った

タイトルは4年ぐらい前に書いた記事のオマージュだったりする。

2019/10頃から、Excelでネットワーク上の同じファイルに対し、複数回保存を行うと、
「別のユーザーがサーバー側のコピーを更新したため、今の状態では変更した内容をアップロードすることができません。」
というメッセージが表示される事象が頻発するようになった。

結論から言うと、これはKB4475591の影響である。
Microsoft社に問い合わせたところ、KB4484198をインストールすると解決する模様。
参考: https://support.microsoft.com/ja-jp/help/4484198/november-18-2019-update-for-office-2016-kb4484198

直ぐに適用が難しい場合、アップロードセンターの設定画面を開き、「ファイルを閉じたときに Officeドキュメントキャッシュから削除する」のオプションにチェックを入れると回避できるようになる。
エラーの原因は、クライアントのキャッシュとサーバー上のファイルとの不整合のようだ。
参考: https://social.msdn.microsoft.com/Forums/en-US/2bb8613d-5580-441c-9049-1a43825cedbf/upload-failed-your-file-was-not-uploaded-because-your-changes-can-not-be-merged-with-changes-made?forum=officegeneral

ちなみに、「クイック実行」でインストールしたOfficeではWindows UpdateによってOfficeに更新が入らないので、この問題は発生しない。
MSI形式でダウンロードしたOfficeにだけ発生する。
つまり、ボリュームライセンスを買っているような大企業とかでしか発生しない。イジメなのだろうか。


色々あって、仕事で昇格し、マネージャーという立場になった。
技術者では完全に無くなっているけど、一般人として、だれもがなんちゃって技術者になれるように整備するのが自分の役目だと考えるようにしている。

IISにおけるSSL証明書更新の半自動化

仕事で、Windows ServerのIIS(Internet Information Service)上で稼働しているWebサービスを運用している。
当然HTTPSの為、SSL証明書を定期的に更新しなければならない。
更新はIISマネージャ上で簡単に実行できるのだが、運用しているサーバーが多くなってくると、煩わしい上に作業ミスや漏れが発生しやすくなる。

そこで、証明書差し変えbatを作成した。
内容自体は簡単なのだけど、思った以上にネット上で情報が見つからなかったので、ここにメモする。

【前提】
・pfxファイルは既に持っており、batと同じディレクトリに格納されている。
・証明書ストアは[Webホスティング]にする。
・古い証明書がバインドされているサイトはすべて新しい証明書にバインドしなおす。

IISマネージャ上でできることは全てappcmdでも実行できると思っていたのだけど、どうもそうでもないらしい。


技術の勉強、全然していないなぁ。
30歳になり、脳が固まっているのを感じる。

LINE Notifyでメッセージを送信する方法(C#)

LINEで特定のグループに通知を飛ばす、いわゆるbotのようなやつは、実は簡単に実装できる。

  1. まず、下記ページからLINEにログインする。
    https://notify-bot.line.me/ja/
  2. マイページに移動すると「トークンを発行する」というボタンがあるので、これをクリックする。
  3. 通知したいグループを選択し、トークンを発行する。
  4. トークンを用いて、HTTPリクエストを送る。詳細な仕様はAPIドキュメント参照。
    https://notify-bot.line.me/doc/ja/

例えば、C#では以下のようにしてメッセージ通知ができる。


結婚してから、お金の管理がクレジットカードだと若干面倒になってきた。
割と本気でLINE Payに移行しようか検討中。