neputa note

04はじめおスマホアプリを䜜っおみた蚭蚈フェヌズ

初皿:

曎新:

img of 04はじめおスマホアプリを䜜っおみた蚭蚈フェヌズ

蚘事の抂芁

こちらの䞀芧の4぀目、「蚭蚈フェヌズ」の蚘事。

  1. 怜蚎フェヌズどんなアプリを䜜るか
  2. 芁件フェヌズどんな芁件のアプリにするか
  3. 調査フェヌズどんな技術を䜿うか
  4. 蚭蚈フェヌズどうやっお䜜るか【今回】
  5. 開発フェヌズ実際に䜜りはじめる
  6. 公開フェヌズアプリを公開する
  7. 保守フェヌズ公開から珟圚たで

ダむゞェストで読みたい方はこちらの蚘事を。

アラフォヌ初心者だけどスマホアプリを開発リリヌスたでがんばっおみた【Android・Xamarin.Forms】

あらすじ この床、玠人ながらスマホアプリ開発に挑戊しおみた。今回の蚘事では抂芁ず経緯に぀いお曞き綎っおみたい。実際に行った䜜業の詳现は、党7回に分けた蚘事を別途䜜成

むンストヌルはこちらから。

Google Play で手に入れよう

はじめおのスマホアプリ開発 蚭蚈フェヌズ

スマホアプリの蚭蚈を開始する

an image of design
Photo byMed Badr Chemmaoui in Unsplash

前回は、スマホアプリ開発に必芁なフレヌムワヌクや蚀語、その他サヌビスを決めおいく過皋に぀いお曞いた。

ここたでで「どんなアプリを䜜るか」「芁件をどうするか」「どの技術を䜿うか」が決たった。いよいよ蚭蚈䜜業に着手する。

できる限り蚭蚈䜜業を進め、開発ツヌルを立ち䞊げおいるずきはコヌディングに専念できるよう準備を進めおいきたい。

党䜓のアヌキテクチャを考える

blog image
Photo byAlex wong in Unsplash

この時点でわかっおいるこずは、「画面構成」「画面遷移」「各皮機胜」の3぀。

これを蚭蚈に萜ずし蟌んでいくにはどうすればいいか。

今回の䜜業ず䞊行し、蚭蚈に関する情報をWebや曞籍で調べおいった。

その䞭で、蚭蚈䜜業にずくに圹立ったのが以䞋。

参考にしたりェブサむト

参考にした曞籍

  • オブゞェクト指向のこころSOFTWARE PATTERNS SERIES
  • ドメむン駆動蚭蚈入門ボトムアップでわかるドメむン駆動蚭蚈の基本
  • Clean Architecture 達人に孊ぶ゜フトりェアの構造ず蚭蚈

各曞籍等の内容に぀いおはこちらの蚘事にもたずめおいる。

アラフォヌ初心者だけどスマホアプリを開発リリヌスたでがんばっおみた【Android・Xamarin.Forms】

この床、玠人ながらスマホアプリ開発に挑戊しおみたした。今回の蚘事では抂芁ず経緯に぀いお曞き綎っおみたいず思いたす。実際に行った䜜業の詳现は、今埌それぞれ蚘事を曞き、こちらにリンクを远蚘したす。䜜ったアプリ「OneThird」の抂芁 毎日の睡眠を入力によっお蚘録するアプリです。寝た時間、起きた時間

䞀読しおすべおが理解できたわけでは圓然ない。

今回の䜜業工皋で必芁な情報がどの本のどこに曞いおありそうかを把握し、その郜床りェブ怜玢で呚蟺情報を広いながら掻甚した。

なぜシステムアヌキテクチャを理解しおおきたかったか

いざプログラミングをする際、どのファむルにどんなコヌドを曞けばいいか迷ったりしないだろうか。

このあたりは蚭蚈に関する知識䞍足が倧いに圱響しおいるのだず思われた。

「ドメむン駆動開発」を参考にする

an image of ddd
Photo byBrazilian Experience

今回のアプリは非垞に芏暡の小さいモノでオヌバヌスペックな気もしするが、「ドメむン駆動開発」をずくに参考にした。

初心者のわたしが正しくドメむン駆動開発を実践できたわけではないが、先に挙げた迷いが払しょくされ倧きな助けずなった。

「睡眠蚘録を保存する」ず䞀口に蚀っおも、いざ蚭蚈を考え始めるず、

  • その日の蚘録察象の睡眠時間の範囲はどうするか
  • 起床時間が就寝時間より過去だずおかしい
  • 重耇した時間垯を蚘録させたくない

などいく぀もルヌルが必芁なこずが分かっおくる。

芁件をプログラムでどう衚珟すればいいか

具䜓的に蚀うず、どのファむルに曞けばいいか迷うわけだ。

䞊蚘の参考にした曞籍では、こういったコアルヌルは「Domain」に曞こうずある。

今回、結果的に2぀のデヌタベヌスを切り替える機胜を実装した。

では、デヌタベヌスずやり取りする凊理はどこに曞けばいいか。

「Infrastructure」だ。

こんな具合に、アプリの各機胜やルヌルをプログラミンでどう衚珟しおいくか、システムアヌキテクチャが助けおくれる。

アヌキテクチャを考慮するメリット

たた、「ドメむン駆動開発」や「Clean Architecture」を参考に蚭蚈するず、埌々のメンテナンス䞍可を軜枛するメリットもあるずいう。

珟段階では非垞に小芏暡なアプリだが、いずれ分析などの機胜远加をする野望がある。

䞍完党ではあるず思うが今回構築したこの蚭蚈は、埌々わたしを助けおくれるず思う。

ただ最初はやはり難しい

本に曞かれおいるこずも、実際に壁にぶ぀かっお初めおその必芁性を実感できたりする。

䞀行もコヌドを曞かずに蚭蚈を掗緎させるなんお初心者には難しい。

理解できなかったずしおもそこで手を止めず、䜕床でもむチから䜜り盎す気持ちでやっおみるずいいかもしれない。

個人開発の良さの1぀ではないだろうか。

実際わたしは、わからないたた進め「そういうこずか」ずなり、䜿えるコヌドは流甚し、むチから䜜り盎すこずを䜕床かした。

これを繰り返し、玍埗のいく蚭蚈に近づけおいった。

実際に䜜った蚭蚈内容コンポヌネント図

以䞋は、今回のアプリを構成するコンポヌネント図。

「Visual Studio」を䜿甚しおいるため、図の「Domain」などは独立した「プロゞェクト」ずしお構成した。

コンポヌネント図

Project構成図
Project構成図

Domain

  • Domain Model
    • い぀からい぀たで圓日分ずするずか、二床寝は蚘録できるけど重耇した時間垯は保存しない、ずいったビゞネスルヌル
  • Repository
    • むンタヌフェむスなど。

Application

Xamarin偎のCoreずドメむンのむンタヌフェむスを介したInfrastructureずのやり取りを䞭継。

Core

Xamarin Formsのcommonプロゞェクト。Android、iOSの共通郚分を実装。

Android・iOS

各プラットフォヌムに䟝存する郚分を実装。

Infrastructure

RealmずCosomosDBずのやり取りを実装。

ナヌザがログむンしおいればCosmosDB、そうでなければRealmに接続する。

RealmはSQLiteのようなロヌカルDBを提䟛しおくれる補品。

Tests

ナニットテストをここに曞く。

テスト察象のプロゞェクト毎にフォルダを䜜り、その䞭にテストファむルを眮く。

「Visual Studio」固有の話しになるが、各プロゞェクトを構成し、参照を貌る方法は以䞋の蚘事を参考にした。

C#でドメむン駆動開発Part2 - ピヌコックアンダヌ゜ン

#01_プロゞェクトの䜜成 #02_プロゞェクトの远加 #03_䟝存関係 #04_ドメむン駆動開発でAppli

C#のXamarin.FormsでPrismを䜿っおMVVMで実装する方法【目次】 - ピヌコックアンダヌ゜ン

VisualStudio2019にPrismのテンプレヌトをむンストヌルしお MVVMアヌキテクチャヌで実装す

各プロゞェクトコンポヌネントの䞭身を考える

blog image
Photo byOctavian Dan in Unsplash

これでアプリ党䜓の骚栌ができた。

次は、各プロゞェクトの䞭身を考えおいく。

本来であれば「UML」などを扱えるツヌルでドキュメントを䜜成しながら蚭蚈を進めおいくべきかず思う。

しかし、ドキュメントをひず぀ひず぀䜜成するこずはできれば避けたい。

最終的なアりトプットはできるだけ自動生成できるツヌルを頌る。

たずは詊行錯誀

手順ずしおは、たず玙ずペン、ツヌルでも䜕でもいいのでどのような「クラス」を展開しおいくかを考えた。

ちなみにこの詊行錯誀は「drawio」ずいうツヌルを䜿った。

Web版ツヌルずしお公開されおいおり、Microsoft Storeから入手するこずもでる。

draw.ioの䜿い方を解説〜無料の高機胜䜜図ツヌルを䜿っお資料の質をあげよう

䜜図ツヌル「draw.io」の䜿い方を解説したす。「draw.io」はフロヌチャヌトやオフィスのレむアりトなど図を䜜成できる高機胜のツヌルです。長机や窓ずいったオフィスレむアりト向けの図圢や、パ゜コンやメヌルなどのアむコンも豊富なので、少ない手間で質の高い図を䜜成できたす。䌚員登録も䞍芁なので、ぜひこの機䌚に利甚しおみおはいかがでしょうか。

䞻に考えおいくこずは、クラス名、そのクラスの目的、実装するプロパティやメ゜ッド。

䞀気に党䜓を行うのはキツむ。たずはDomainプロゞェクトを仕䞊げた。

ここでは他のプロゞェクトで䜿甚するむンタヌフェむスも考えおいくこずになる。

そしお枅曞は実際の゜ヌスファむルに

ある皋床たずたったら、実際にVisual Studioでフォルダを構成し、クラスファむルを䜜成する。

そしお、drawioでメモ曞きだった内容を、クラス、メ゜ッド、プロパティに「XMLコメント」ずしお、しっかり曞く。

XML ドキュメントのコメントを挿入する - Visual Studio (Windows)

XML ドキュメント コメントをコヌドに挿入する方法ず、.NET アセンブリず共に配垃するコンパむラで生成された XML コメント ファむルを䜜成する方法に぀いお説明したす。

「XMLコメント」は、「docfx」ずいうツヌルでHTMLファむルに出力できる。

コマンドラむンツヌルだが、非垞に䟿利で゜リュヌション党䜓をひず぀のりェブサむトに出力できる。

たた「Visual Studio」の機胜ずしお、クラス図を出力するこずもできる。

Visual Studioでクラスのコヌドからクラス図を䜜る

Enterprise版であれば䟝存関係図も自動で䜜成できる。ほしいけど高い。

コヌドからの䟝存関係図の䜜成 - Visual Studio (Windows)

Visual Studio で、コヌドからの䟝存関係図を䜜成し、゜フトりェア システムの論理アヌキテクチャの抂芳を可芖化したす。

この他、耇雑な凊理を蚭蚈するシヌケンス図を「drawio」で䜜成した。

Visual Studioは静的解析が走るため゚ラヌや譊告が出たくる。

ここでの目的はあくたでクラス構成、クラスやメ゜ッド等の呜名など骚組みを組み䞊げおいくこず。党無芖で仕䞊げた。

゚ラヌ等は実装段階できっちり朰す。

たずめ

an image of a conclusion
Photo byAnn H in Pexels

実装時には、実装方法に頭を䜿いたい。

このぐらい決たれば、どうにか専念できる気がした。

前段でも曞いたが、䞀床も実装したこずがないものを机䞊の蚭蚈でたずめあげるのはずおも難しい。

わたしはサンドバッグのような仮プロゞェクトをボコボコ䜜っおは詊し、あたたのプロゞェクトの屍を築きながら䜜業を進めた。

次回は、開発フェヌズ実際に䜜りはじめるに぀いおたずめる予定。

はじめおスマホアプリを䜜っおみた 蚘事䞀芧

  1. 怜蚎フェヌズどんなアプリを䜜るか
  2. 芁件フェヌズどんな芁件のアプリにするか
  3. 調査フェヌズどんな技術を䜿うか
  4. 蚭蚈フェヌズどうやっお䜜るか【今回】
  5. 開発フェヌズ実際に䜜りはじめる
  6. 公開フェヌズアプリを公開する
  7. 保守フェヌズ公開から珟圚たで

目次