今年もMicrosoft MVPアワードをいただきました。

 カテゴリーは引き続きDeveloper Technologiesです。

 

 MVPアワード受賞は自分にとっては1つの昨年を振り返る機会なのですが、だいぶアウトプットの形が変わってきました。

 一番大きな違いは文章から動画への転換です。

 

 計画では教室などで行う対面での講師スキルアップを行う予定でしたが、ビデオチャット越しにやり取りする形式が主になりました。

 

 SchooやLinkedInで動画を公開できたことも良い経験になりました。

 結果論ですが、このご時世に対応するためのスキルが養えたと思います。

 

 これから先、どうなっていくか不透明な世の中ですが、変化を恐れない1年を過ごしていこうと思います。

 


C#に関する10のTipsを紹介する動画です。

サクッと見れるので、ぜひ一見(一読の動画的表現?)ください。

 

https://www.linkedin.com/learning/ten-tips-for-the-c-sharp-developer-14043600


 .NETラボ 勉強会 2021年6月勉強会でマインクラフトでプログラミングを行う方法についてお話いたしました。

 半分以上マインクラフトのゲーム画面を表示していたので、自分にとっても新鮮なセッションになりました。

 

Minecraftでプログラミングを学べるって本当? from Makoto Nishimura

 3月はPower Automate Desktop単体のお話をしましたが、今回はクラウド上のPower Automateからフローを呼び出す方法についてお話させていただきました。

 

 .NETラボ5月度勉強会

 

 Power Automateから呼び出すことで、手動実行しかできなかったPower Automate Desktopのフローを定期実行または、その他トリガー(メールを受け取る、Teamsでメンションが来たなど)を引き金とした実行が可能になります。

 Power Automateのトリガーもフローで、Power Automate Desktopの方の処理もフローと呼ぶのは少し紛らわしいですよね。

 

Power Automateを使ってみた from Makoto Nishimura

 2021年3月度の.NETラボ勉強会でPower Automate Desktopについてお話しました。

 

.NETラボ 勉強会 2021年3月

 

 ちなみに.NETラボはコロナ禍の2020年初めから、いち早くオンラインでの開催を行い、ほぼ毎月開催している素晴らしい勉強会です。

 スタッフの皆様に感謝!!

 

 その時に使用したスライドが以下です。

Power Automate Desktop入門 from Makoto Nishimura
 
 時間が無くて話しきれなかった部分もありますので、主にデモ周りについてブログに補足しておきます。
 

使用したPower Automate Desktopのバージョン

 
 デモのサンプルはバージョン2.6.00158.21069で動作確認済みです。
 
 

フローはコピペできる

 
 フローの編集画面で、フローを選択してコピーすると、そのフローを文字のコードとしてコピーできます。
 そのままPower Automate Desktopのフロー編集画面に張り付けるとフローとして追加することができます。
 
 例えば「3秒待つ」というフローは以下のコードになります。
 
WAIT 3 
 
 このコードを張り付けると以下のようにフローが追加されます。
 デモ解説で掲載したコードはこのように使用してください。
 

デモ00:パワーポイントを起動してスライドを開始する

 
 デモという形ではありませんが、初めにパワポをPower Automate Desktopのフローで起動してセッションを始めました・・・始める予定でした。
 実際は、最後のF5キーの入力が上手くいかず、手動で開始することになりました。
 
 その際に作成したフローが以下。
 
 
・アプリケーションの実行
・Wait(2秒)
・キーの送信(F5)
 
 ノートPCの性能の問題でアプリケーションの起動に2秒以上かかったのが原因でF5キーの送信が早すぎたのだ予想。
 フローのコードは以下。
 
System.RunApplication ApplicationPath: $'''C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\POWERPNT.EXE''' CommandLineArguments: $'''/C \"C:\\Users\\macni\\Desktop\\202103251826_Power Automate Desktop入門.pptx\"''' WindowStyle: System.ProcessWindowStyle.Normal ProcessId=> AppProcessId
WAIT 2 
MouseAndKeyboard.SendKeys TextToSend: $'''{F5}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: True
 
 1行目はパワーポイントを/Cのオプション付きで起動しています。/Cはファイルを指定してパワーポイントを起動するオプションです。
 パワーポイントのパスや、実行するパワポのファイルパスは書き換えて使用してください、
 
 3行目はF5キーを送信しています。F5キーは特殊なキーなのでフローを作成する際には「マウスとキーボード > キーの送信」の設定で「特殊キーの挿入 > ファンクションキー」から選択してください、
 

DEMO : 03 変数を用意してプラグラミングっぽく扱う

 
 
 
 変数を作成して、foreachでリストを処理したり、テキストに書き込んだりします。
 
・変数の設定
・新しいリストの作成
・項目をリストに追加
・項目をリストに追加
・For each
・テキストをファイルに書き込みます
・For each(End)
 
  ファイルの書き込みがサクッとできるのは良いですね。
 
 コードは以下です。6行目のファイルの書き込み先は適宜書き換えてください。
SET StringValue TO $'''サンプル'''
Variables.CreateNewList List=> ListValue
Variables.AddItemToList Item: StringValue List: ListValue NewList=> ListValue
Variables.AddItemToList Item: $'''テスト''' List: ListValue NewList=> ListValue
LOOP FOREACH CurrentItem IN ListValue
    File.WriteText File: $'''C:\\Users\\macni\\Documents\\hoge-%CurrentItem%.txt''' TextToWrite: CurrentItem AppendNewLine: True IfFileExists: File.IfFileExists.Append Encoding: File.FileEncoding.Unicode
END
 5行目のLOOP FOREACHで取得したリストの要素を、6行目のファイル名で利用しています。

 このフローを実行するとhoge-サンプル.txtとhoge-テスト.txtというファイルがドキュメントフォルダーに作成されます。
 

DEMO04 : エラー処理

 
 開発する際にエラーの処理方法をまず把握するのが大事、ということでエラー処理について簡単なサンプルを作成しました。
 「エラーの補足」「エラー情報のファイル書き込み」「エラーをポップアップメッセージで表示」この辺の処理が試せるサンプルです。
 
 フローは以下の画像の通り。
 
 
 エラーは4行目で、1行1列から始まるExcelの存在しない0行0列に書き込みを行い、発生させています。
 
 3行目の「ブロック エラー発生時」はオプションでエラー発生時に「フロー実行を続行する」を指定しています。ブロック以降でエラー内容をファイルに書き込んだり、メッセージを表示するために処理を続行します。
 
 
 ちなみにブレークポイントを使って処理を途中で停止、変数の中身を確認することもできます。なかなか多機能。
 
 コードは以下。
 
# 操作できない行を操作してエラーを出す
Excel.Launch Visible: True LoadAddInsAndMacros: False Instance=> ExcelInstance
BLOCK sample
ON BLOCK ERROR
    NEXT ACTION
END
    Excel.WriteCell Instance: ExcelInstance Value: $'''throw error''' Column: 0 Row: 0
    ERROR => LastError
END
File.WriteText File: $'''C:\\Users\\macni\\Documents\\PowerAutomateDesktopErrorSample.txt''' TextToWrite: LastError AppendNewLine: True IfFileExists: File.IfFileExists.Append Encoding: File.FileEncoding.Unicode
Display.ShowMessage Title: $'''エラー発生''' Message: LastError Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
 

DEMO05 : Excelを操作

 
 業務ということでExcelファイルを操作してみました。
 
 
 Excelを起動し新規ワークシートに値を書き込み、別のExcelにその値をコピーするというサンプルです。
 フローを見てもらえれば処理は理解できると思います。
 「Excelワークシートから読み取り」でデータを変数に読み取る際には開始行列、終了行列を指定する必要がありますが、書き込みは開始行列だけでOKです。
 
Excel.Launch Visible: True LoadAddInsAndMacros: False Instance=> ExcelInstance1
SET i TO 0
LOOP WHILE (i) < (6)
    Excel.WriteCell Instance: ExcelInstance1 Value: i Column: 1 Row: i + 1
    Variables.IncreaseVariable Value: i IncrementValue: 1 IncreasedValue=> i
END
SET i TO 0
Excel.Launch Visible: True LoadAddInsAndMacros: False Instance=> ExcelInstance2
Excel.ReadCells Instance: ExcelInstance1 StartColumn: 1 StartRow: 1 EndColumn: 1 EndRow: 10 ReadAsText: False FirstLineIsHeader: False RangeValue=> ExcelData
Excel.WriteCell Instance: ExcelInstance2 Value: ExcelData Column: 2 Row: 1
 
DEMO06 : サブフローの実行
 
 Power Automate Desktopではメインのフロー以外にサブフローを作成してメインフローから呼び出すことができます。
 長いフローをサブフローに分けておけば可読性が良くなります。
 
 サブフローを呼び出すコードは以下。
 
CALL Subflow_1
 

次はPower Automateと連携させたい

 
 今回はそこまで解説できなかった&Power Automateのトライアルが1か月(延長でプラス1ヵ月)しかないので、別の機会を貰って.NETラボ勉強会で「Power AutomateからPower Automate Desktopのフローを呼び出してみた」というお話をしたいと思います。
 

 「改訂2版 基礎からわかるC#」ということで、おかげさまを持ちまして改定版を出すことができました。

 表紙も新しく青色中心のデザインに代わりました。ありがとうございます。

 

 C#9に対応ということで、色々書き直したのですが、その中で書き間違いが見つかったりと、恥ずかしい思いをしながら作業にあたりました。

 

 ページ数は増えましたが、もともとの、少ないページ数でサラッとC#の機能を一覧できるというコンセプトは保たれていると思います。

 C#は初版で扱った6以降のバージョンで、大きな機能追加は少ないながらも、痒いところに手が届く機能追加が多数行われています。nullチェックの書き方や、式の拡張などC#らしい書き方はドンドン進化しているので、楽しい半分、大変半分です。


 タイトルの通りですが、.NETラボ2月勉強会でお話をしました。

 

 色々紹介する予定でしたが、今年は.NET 5 and 6が大きく、そぼその話題になってしまいました。

 .NET Framework、.NET Core、monoと色々派生が生まれていたアプリケーション開発の下地にようやくOne .NETの光明が差し始めた気がします。

 .NET 6でXamarinなどが取り込まれて晴れて開発・実況環境が統一されれば、様子見していた人も手を出しやすくなるんじゃないでしょうか。


 8はちょっと待ってねというお話。

 以下のページに記載されているようにPHPの対応バージョンは7.1 〜 7.4です(2021/01/21現在)。

 

EC-CUBE 4.0 開発者向けドキュメントサイト::EC-CUBEについて

 

 XAMPPの最新版を落としてくるとPHP8がインストールされるので、ご注意ということで。