2021年3月度の.NETラボ勉強会でPower Automate Desktopについてお話しました。
ちなみに.NETラボはコロナ禍の2020年初めから、いち早くオンラインでの開催を行い、ほぼ毎月開催している素晴らしい勉強会です。
スタッフの皆様に感謝!!
その時に使用したスライドが以下です。
WAIT 3
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
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
# 操作できない行を操作してエラーを出す 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
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
CALL Subflow_1
「改訂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がインストールされるので、ご注意ということで。
久しぶりにXamarinを触ろうとしたが、Macのバージョンが古く(High Sierra)、iOS開発ができない・・・というわけで、Macをバージョンアップしようとしたところ、バージョンアップに失敗してしまった。
コマンド∔Rのメニューもセーブモードも起動せず、診断モードもダメ・・・何をやってもアップデートに失敗画面になってします。残すはUSBからインストールして復旧かなぁと思ったが、USBを作成するのにMacが必要・・・嫁のiMacがあるが手間をかけるのも忍びないのでM1 Mac miniを新調することにしました。
アップルストアが対応したので、Amazonを使って翌日配達。便利な世の中になったものだ。
新しいM1 Mac miniが到着したので接続テスト。Windows上のVisual Stduioからペアリングはできたが、デザイナーをプレビュー表示しようとしたらSystem.AggregateExceptionエラーが発生してしまった・・・。
Mac上のVisual Stduio for Macでも同じエラーが出るからWindows側の問題ではなさそうだが、Macは最新の状態(購入後一度アップデートがあり最新になった)だし、XCodeもVisual Stduio for Macも入れたてで最新・・・ちょっと解決の道は遠そう。
プレビューはあきらめて、Windows上でシミュレーターで表示できればOKとしよう。
というわけで、シミュレーターでデバッグしてみたら、画面が真っ黒で何も表示されない。
Windows側でシミュレーターの機能をオフにしてMac上でシミュレーターを起動したらちゃんと表示された・・・。
他にも必ず出るわけではないエラーが出たりクラッシュしたり・・・。
よし、他のことをしよう(諦観)。
サーバー移行が終わったのか、終わってないのかよくわからない(IPアドレスは変わった気がするけど、PHPのバージョンが上がっていない?)ので、ブログに凝った記事などを残すと痛い目を見そうなので、軽い備忘録を残しておく。
.NET Framework、.NET Core、.NET 5と実行環境が色々混在する過渡期の今「プロジェクトのC#のバージョンは何だっけ?」となることも多いと思うので確認する方法。
#error version
と記述するとプログラムはエラーになるけど、エラーメッセージでコンパイラのバージョンと言語バージョンが確認できる。
たまに確認したくなるんですよね。
追伸:Unityで試してみたらlatestと表示されて確認できないケースがあることを知った・・・latest指定でもその最新バージョンを表示すると思い込んでいました。
ちなみに普段使うことはあまりないと思うけど、バージョンを指定したい場合は.csprojに以下のようなタグを記述。どの辺に挿入するかなど仔細は省略。
<LangVersion>5.0</LangVersion>
このブログはhetemlというレンタルサーバー上で動いている。
もともとFlash Media Serverが遊べるレンタルサーバーとして選択したのだが、現在はFlash Media Serverの機能は無くなり、お値段据え置きという微妙なコスパになっている。
このhetemlが2020年から2021年にかけて、古いサーバーを強制的に新しいサーバーに移行させることになった。
PHPのバージョンは上がるし、古いサーバーだとセキュリティ上の問題もあるだろう、サーバーのスペックもたぶん上がるからメリットも大きいが、強制的に移行というのは中々にリスキーな気もする。
移行用のドキュメントを見た感じ、
・DBはそのまま
・ファイルはコピー
・DNSはムームーなら自動で変わるよ
・動作確認はhostsを変えてみてね
という感じだ。現状、アクティブなのはWordPressで動いているブログぐらいなので、放置していても問題なく移行が終わる気もする。
むしろトラブった際の訓練用に半分放置しておこうと思う。
というわけで、対応は以下のようにする予定。
・WordPressのuploadsフォルダーだけバックアップ
・DBは触らないみたいなので信じてノータッチ
・DNSはムームーなので自動で変わるのだろう
・hosts書き換えて一応見てみる
・あとはトラブったらその時対応。復旧不能でも、まぁ、いいや。
というわけで、FTP(厳密にはSFTP)でuploadsフォルダーだけバックアップしておいた。
あとは移行時にトラブルがあったらその備忘録を残そう。
追記:
2020年11月5日現在の状態を確認してみたら、新サーバーで10月12日以降にアップロードした画像が404になっていました。
旧サーバーから新サーバーへのファイルのバックアップは10月12日に取られて終わりってことかもしれません。DBは変わらないので記事がなくなることはないでしょうが、この辺をあまり考えずに旧サーバーにメディアファイルをアップロードしていると移行時に苦労するかもしれません。移行完了してもしばらくは旧サーバーからファイルを落とせるなら良いのですが、もし旧サーバーにアクセスできなくなってしまうと、復旧が面倒そう。
hostsを新サーバーに設定しても「PHPのバージョンが古い」という警告がWordPress側で消えないので、何か理解できてないポイントがある気もするけど、前にも書いたとおり、トラブルになったら対応方針で様子見。
「へぇ、Power Shellで操作できるんだ」と公式のドキュメントを見て、試しにやってみたら躓いてしまいました。
公式に以下のようなクイックスタートがあるので、これをそのまま実行すればOKだろう。と軽い気持ちでしたが、
Quickstart: Create an Azure Cognitive Search index in PowerShell using REST APIs
インデックスを作成する段で、
No HTTP resource was found that matches the request URI・・・
というエラーが出てしまった。
この際に実行したURIが以下、
https://<サーチサービス名>.search.windows.net/indexes/customer-index?api-version=2020-06-30
公式のクイックスタートを多少変えてあるが、ほぼ同じ。
前にもこんなことあったような・・・という朧気な記憶から動作したURIは以下。
https://<サーチサービス名>.search.windows.net/indexes?api-version=2020-06-30&$select=name
URIからインデックス名がなくなっているが、事前に定義しているインデックスの情報にインデックス名も指定しているので問題なく作成されました。
先のURLでどうしてダメだったのかの細かい検証はしません。あくまで備忘録ということで。