AutoItやってみた。

AutoItてのがあります。

何をするのかはググればすぐ見つかることですが、ざっくりいうとマウスやらキー操作の手順(スクリプト)を書いたら手順どおりにマウスやらキー操作をしてくださるありがたいものです。

www.autoitscript.com

 

弊現場にて開発中のソフトの動作確認を要求されているのですが、これが結構めんどくさいし同じことの繰り返しでイラッとするので自動化してみようと思って導入した次第です。

 

まずはAutoItをインストロールしないことには始まりません。

あ、以下、PCの環境は以下

・OS:Windows10 日本語のやつ。

・VisualStudioCodeインストール済

 

ではAutoItのインストール開始。

www.autoitscript.com

 

↑の

"AutoIt Full Installation. Includes x86 and x64 components, and:"

をDownloadして馬鹿インストール(インストールウィザードにひたすら[OK])

 

 

 

 

インストールしたらば、AutoItに付属のエディタでスクリプトを入力・・・と思ったのですが、こいつが日本語対応できてない。

しかたなくスクリプトの入力にはVisualStudioCodeを使う。AutoIt用の拡張があるのでインストールよろしくです。で、スクリプトを入力。

f:id:turkey_pc:20190607145926p:plain

 

スクリプトを入力したら即実行[F5]・・・

f:id:turkey_pc:20190607150140p:plain

あら動かないわ。なんかメッセージ書いてあるけど気にしない。AutoItに付属のエディタで開きなおす。

 

f:id:turkey_pc:20190607150343p:plain

で、ここから[F5]で無事にスクリプトを起動することができました\(^o^)/

VisualStudioCodeで編集&保存→AutoIt付属のエディタで[F5]という見事(?)な連携である。

ちなみに上のスクリプト

「メモ帳を起動してHello,Worldと入力しマイドキュメントのHello,World.txtに保存する」

というものです(※マイドキュメントにHello,World.txtがすでにある場合は上書確認で止まってしまいます)

 

本来の目的である開発中のソフトの動作確認の自動化はもうちょっとマシなスクリプトを書き上げれば達成・・・ということになります(※実物はモロにソフトの名称が入っているので公開できまへん)。

 

VisualStudioCodeで編集・gitで管理という環境にしておけばスクリプト改善が安心して行えます。頑張って自動化をめざすぞい・・・

 

<顛末>

スクリプト書くよりも、自分の手で動作確認したほうが早かった。

AutoItに慣れてないもんね。仕方ないか。また次回チャレンジだわ。

 

 

 

 

Visual Studio 2010 to Visual Studio 2019(続き)

turkey-pc.hatenablog.com

 

の、続き。

 

VS2010で識別子(変数名・プロパティ名・メソッド名など)に’・'(カタカナ中点)を使ってるとそのままではVS2019ではビルドエラーになるので、エラーになる箇所を一つずつ変更していくか。かったりーなー・・・・とツイッタランドで呟いてたら

などという啓示が。ツイッタランドには神がいた。

ブログ主が理解浅きゆえに

 などと呟こうものなら、

さっさと神自ら解決の道具までおつくり下さいました(かんしゃー

 

神の作りし道具に弊現場で使われているアセンブリを全部投げ込めばカタカナ中点を使っている識別子を網羅してくれるので、ソースコード中の該当箇所を文字列置換してしまえばOK・・・と。

 

ちょっと見えてきた。

 

 

 

 

Visual Studio 2010 to Visual Studio 2019

弊現場(ブログ主が働いているところ)ではVisual Studio 2010(以下VS2010)を使ってC#でWinFormsのアプリ(以下弊アプリ)を開発しています。

f:id:turkey_pc:20190520225505p:plain

弊現場のソリューション(嘘んこ)

 

ある日、天(弊アプリの販売元)より「VS2010ってのも古いんやろ。元号変わったことやさかいにVisual Studio 2019(以下VS2019)にしよか?」という啓示を頂きました。

 

はいはーい。VS2019をインストールしてslnファイルをダブルクリックしてビルドしたらおk・・・ありり??

f:id:turkey_pc:20190520230951p:plain

 

過去の資産を継承は難しいのかとガッカリしたが、とりあえずエラーをなんとかできないかと考えてみた。どうやら一番最初の「予期しない文字'・'」ってのが諸悪の根源のようなので、該当箇所を見た。

f:id:turkey_pc:20190520231450p:plain

 

ここである。たしかに'・'である。VS2019はこれを予期できないというのか?なぜだ?わからないときはGoogleの出番である。

[C# ユニコード][検索]

 

ktkr

 

ufcpp.net

 

 

'・'は「カタカナ中点」っていうのか・・・じゃなくて!識別子に使えないってか!!

 

じゃ、しかたね。VS2019でエラーになってる識別子をVS2010で変数名の変更しておくかー・・・・

 

以下、眠いので明日に続く(はず)。

 

 

 あ、わすれてた。

VS2010ではビルドできるけどVS2019ではビルドできない状態のを

github.com

に乗せてみた。もちろんエラー再現用に作ったサンプルでありんす。実際のコード上げたらえらいことになる(法律的にも倫理的にもサイズ的にも)

 

 

Head Firstオブジェクト指向分析設計 ――頭とからだで覚えるオブジェクト指向の基本を読み始めた

芸事を学ぶのは「守破離」と申しますが、プログラミングという大いなる芸事におきまして「守」の段階が終わりませぬ。

というわけで、↓を読み始めました。

 

www.oreilly.co.jp

 

まずは手を動かそうとサンプルコードを読み・・・おっとJavaだ。

読めるけど自分がメインとしているC#に引き込んでみよう。

というわけで、まずはギター在庫検索システム<Rickが顧客を失い始めたバージョン>のコードをGitHubに上げてみました。

github.com

 

ここからバグ取りとコード改善が始まるのですが、さてどこまでできることやら。

 

<追記 C#に移植してみて>

JavaからC#ですからほぼまるまるコピーして少々編集で済みそうなものですが、余計な気持ちだしてC#らしくなるよういじっています。

①Guitar.cs

 getter,setterはプロパティにしました。

②Inventory.cs

 getGuitarメソッドの中身はLINQのFirstOrDefaultメソッドにしました。

 文字列の空文字判定はstring.IsNullOrEmptyメソッドにしました。

 searchメソッドのループ処理をforからforeachにしました。

  ※判定部分をFuncに切り出したらLINQのFirstOrDefaultになりそうですが、どうせ後の展開でGuitarメソッドに移すのでここは放置しました。

③FindGuitarTester.cs

 Mainメソッドの文字列生成に書式指定項目({0}~{5})とやらを使っています。この部分はGuitarクラスに移すべきものか否かわかりません。

 

<追記 文字列比較の放棄 の実装>

stringをenumに置き換えるというだけ。C#ではenumにメソッドを配置できないんでそこは除外しているがToStringしたら勝手にenumの文字にしてくれるのでとりあえずはそれでOKにしておく。本では全大文字から先頭大文字に変換しているがめんどくさいので省略(どうしてもというならenumのほうを先頭大文字にすればOK)。

 

 

 

Visual Studio Codeでコード書いてGitHubに上げてみた。

当記事は

www.micknabewata.com

を読み、私自身が手を動かして自分だけが読めるようにしたメモでつ

(いわば劣化バージョン)。

運悪くググって当記事(劣化バージョン)に当たった人は、本家本元↑の方のを読むべきです。

 

 

 

 

ざっくりな手順

思い出しながら書いているので抜けや順序の入れ違いあるかも。

 

 

GitHubリポジトリ作る
VSCodeを立ち上げてTerminalで
 git clone [リポジトリのURL]
 ↑でできたフォルダ(以下開発フォルダ)に移動
 dotnet new console

開発フォルダに.gitignoreファイルを作成

 <内容>

  bin/
  obj/

 </内容>

以下、ずっとVSCodeのターン。

 開発フォルダを開く。

 (ここでめくるめくコーディングの世界があるが省略)

 キリのいいとこでコミットしてプッシュ

 

 

ということで、上記の練習でコーディングしたのはというと・・・

(続きはWebで)

 

 

ああ、わすれてた。

Visual Studio Codeつこてみた。

Hello worldまで動いたあとで手順を思い出してるので抜けや順序入れ替わりあるかも。

 

Visual Studio Code(以下VSCode)をインストール
VSCodeを立ち上げてExtention C# for Visual Studio Code (powered by OmniSharp).を追加
③.NET Core SDKをインストール

VSCodeでFile→Open Folderで適当なフォルダを作成し、作成したフォルダを選択

VSCodeでView→Terminal

⑥TERMINAL(ウインドウの右下ペイン)にてdotnet new console

⑦Program.cs(ウインドウの左ペイン)をクリック

⑧コードを見る

TERMINAL(ウインドウの右下ペイン)にてdotnet run

Hello World!と表示される。

おしまひ。

 

 

・・・って、そのまんま↓なんでまともな読解力がある人は↓を見ませう。

docs.microsoft.com

 

 

 

個人メモ

<出力ファイル(テキストファイル)の要求仕様書(以下仕様書)>

 ・元号は"平成"もしくは新元号のみと明記

 

<アプリケーションの動作> 
 ・入力画面にて日付を入力(入力部品にて平成1年1月8日より前の日付については再入力を求めていて昭和以前の元号は入力できない
 ・入力した日付の元号を和暦の文字列に変換してテキストファイル出力

 

・・・

 

としたコードを書いたところ、テキストファイル出力部分のコードレビューでケチが。仕様書以外の出力をしないようにコードで制限しろと。

 

つまりは

if (元号=="平成" || 元号=="新元号"){

 //出力ロジック

 (以下略)

}else{

 //出力しないお

 (以下略)

}

 

と書けと。

書くのはいいがelseブロックに入るテストはできないやん。?

例外投げちゃうぞ。それでもいいのか?