ninjacatjapanの日記

開発したアプリの詳細

開発中のアプリをUIテストフレームワークのAppiumで制御してみました

前回の投稿で表明した通り、アプリの製品版をWPFで開発を続けています。

一か月ほど作業を進めてようやくWPF版のアプリが動き始めました(まだ投稿機能は実装していません)。WPFに初挑戦のため、課題が沢山あって作業が思うように進まなかったときが多かったです(XAML、データバインディング、MVVM、Blendなど)。

WPFで開発を始めてからMVVM(Model-View-ViewModel)という用語を初めて知りました。MVVMはソフトウェア単体テストをするために必要という事で今回の開発に取り入れました。結論を言うとMVVMを理解して設計に取り入れるのに苦戦したわけです。ですが、XAMLとMVVMを習得すればXamarin.FormsでスマホMacOsを含めたマルチプラットフォームに参入できると分かったので、諦めずになんとか独学で実装してみました(まだ途中です)。

 

UIの実装が固まってきたので、区切りの良いところで気分転換にUIテストフレームワークのAppiumで制御してみました。

アプリ自動テストツールを使ってみました(開発中画面2)

 

アプリはC#で実装していますが、Appiumでアプリを制御する部分はPythonで記述しました(C#では対応していない機能があったためPythonにしました)。

 

 

現状はMVVMで実装して動作し始めたばかりの段階です。これからMVVMの単体テストについて調査をして、単体テスト可能な形に設計を移行していきます。当然、AppiumでUI自動テストもするつもりです。

 

 

また、何かご紹介できるような資料ができたら投稿させていただきます。

先月公開したアプリの製品版を開発中です

先月公開した「5chスレ立て支援V1(サンプル版)」の製品版を開発中です。

 

公開中のサンプル版はWindowsアプリ初挑戦という事もあり、難易度の低いWindowsFormsで開発しました。しかし、WindowsFormsしか経験がないとソフト開発の仕事を探してOJTで腕を磨きたいと思っていても、良い職場に入れそうもありません。そこで、製品版はWPFで開発する事にしました。5chスレ立て支援V1はMDIアプリケーションになっていますが、WPFではMDIアプリケーションがサポートされいないため、代わりにAvalonDockを使う事にしました。試しにXAMLでUIを作ってAvalonDockの動作確認を行ってみたところ、動作は良好で予想以上に優れた代替え案になりました!

開発中画面1(AvalonDock動作確認) - YouTube

UIはなるべくシンプルに実装する方向にして、それよりもUMLを用いてオブジェクト指向で設計する事とソフトウェアテスト(自動テストをなるべく導入)のスキルを磨く事に集中します。

開発中のアプリに需要があるのかは全く分りませんが、少なくとも自分のスキルアップとスキルのアピールには役に立ちます。

 

P.S.

C#で求人を探すとデスクトップアプリではなくてASP.NETの方が多く出てきます。WEBアプリの方が需要があるようなので、今回の開発が終わったらもう一つだけデスクトップアプリを作って、その後はWEBアプリ開発に移行しようと考えています。WEBアプリはRuby on Railsの需要が多いようですが、せっかくVisual StudioC#に慣れてきたので、ASP.NETで実装するつもりです(Ruby on Railsは何か縁があれば習得します)。その次はPython機械学習を実装してみたいです。

 

・参考記事

WPFでドッキングウィンドウ(AvalonDock) 使い方 その1 - 導入

http://lriki.hatenablog.com/entry/2014/12/01/235751

WPFでドッキングウィンドウ(AvalonDock) 使い方 その2 - AvalonDockのアーキテクチャ

http://lriki.hatenablog.com/entry/2014/12/23/215723

AvalonDockを使ってみる(非MVVM)

https://qiita.com/ousttrue/items/823f2d3d756c1c433ce8

 

上流工程から習得するのは無理があるかもしれない

 ここ2週間ほど入門書を読んで、ソフトウェア開発の基本から学びなおしてました。

現在、「5chスレ立て支援」というアプリを公開していますが、これは専門用語で言うとアジャイル開発のプロトタイプという位置づけになるようです。

仕様書、設計書もなく自己流でコーディングして手作業のみでテストしたので、製品版とは言えないようです。

 そこで、入門書に沿って要求定義書要件定義書を書いてみようとしたのですが、書式だけは整える事ができても、本質的に内容が正しいのかは自分では判断ができません。基本設計は内容がより具体的になるので、極端に間違ったものにはなりにくいとは思いますが、それでも独学で書くのは無理があります。入門書を読んで概念を理解しておいてOJT(On Job Training)で習得する方が効率が良いと思いました(OJTの機会を探しています)。

そのため、独学ではUMLを用いた設計図作成までに留めるように軌道修正します。上流工程から習得しようとしたのは時間の無駄でした。

 また、オブジェクト指向について理解が足りないので、C#の入門書を熟読して「5chスレ立て支援」の設計やり直しに活かします。

自己紹介

忍者猫と申します(匿名で申し訳ありません)。

初めまして。

ブログを開設させてもらいました。

 

Windows10で5chに連投する(コメント数が20以下のスレッドのみ)ソフトウェアを作ってみたのですが、公開しても驚くほど反響がないです。逆に言えばトラブルに巻き込まれる心配も全くないという事ですが。

 

一応ソフトウェアの紹介WEBページと動画のURLを下記に示します。

ソフトウェア紹介WEBページ
http://ameblo.jp/ninja-cat-japan/
http://ninjacatjapan.blogspot.com

 

ソフトウェア紹介動画
http://www.nicovideo.jp/mylist/64982534
http://www.youtube.com/channel/UCT2NnAdOrcAUmNdvcwZ67nA/playlists

 

今回、初めてWindows10用ソフトウェアを公開しました。

以前、組み込みソフトウェア開発を自己流で続けていただけで、要求仕様や基本設計などの文書を作成したことがありません(訂正します。SoCやFPGAのドライバソフト用なら要求仕様を書いた事がありました)

今回作ったソフトウェアについて、要求仕様や基本設計などの文書を現状の動作に合わせて作成するつもりです(本来は順序が逆ですが、文書作成の練習には丁度良いと思います)。

コーディングも自己流なので、同じ動作のものをシンプルで合理的な記述に書き直すつもりです(変数名のルールも慣例に合わせます)。

それに単体テストも一部の関数にしか行っていないので、なるべくすべてチェックする方向で作業を進めたいです。

 

要求仕様や基本設計などの文書およびソースコードの一部を公開する事も検討しています(通信部分は非公開にしますが)。

 

他にもいろいろ考えている事はありますが、今日はここまでにしておきます。