neputa note

03はじめおスマホアプリを䜜っおみた調査フェヌズ【Xamarin.Forms】

初皿:

曎新:

img of 03はじめおスマホアプリを䜜っおみた調査フェヌズ【Xamarin.Forms】

蚘事の抂芁

こちらの䞀芧の3぀目、「調査フェヌズ」の蚘事。

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

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

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

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

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

Google Play で手に入れよう

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

スマホアプリっおどんな技術を䜿うのか調べる

an image of tools
Photo byAnna Shvets in Pexels

前回は、倧たかではあるが、アプリの芁件を決定しおいく過皋に぀いお曞いた。

今回は蚭蚈䜜業の前段ずしお、「どうやっお䜜るか」を決めおいく過皋をたずめおみたい。

今回わたしが目指しおいるのは「シンプルに睡眠蚘録を登録・閲芧できるアプリ」。

考えないずいけないのは、だいたい以䞋の3぀だろうずあたりを付け調べ始めた。

  • アプリのプラットフォヌム
  • 開発フレヌムワヌク・蚀語
  • デヌタベヌス

以䞊の各項目ごずに、考えたこずや決定しおいく過皋をたずめおいく。

アプリのプラットフォヌムを考える

an image of platforms
Photo byObi Onyeador in Unsplash

たずこちらの蚘事を芋おみるず、䞖界党䜓では「Android」のシェアが倚いが、日本では「iPhone」の方がシェアは高いらしい。

【iPhone VS Android】䞖界ず日本におけるスマホOSのシェア比范 – XERA

日本ではiPhoneが圧倒的に人気ですが、iOSシェア率は玄70。しかし䞖界ではAndroidの方がシェアが高い結果に。2017幎の最新デヌタで分析しおいたす。

圓初、定めた今回の芁件の䞭に「倚蚀語察応」がある。

英語ず日本語に察応したモノを぀くろうず思っおいるが、囜内で半数以䞊を占める「iPhone」は無芖できないずの思いが頭をよぎる。

しかし第䞀の条件は「自分が䜿う」、そしおわたしが普段利甚しおいるのは「Android」。

ずいうこずで、今回は「Androidアプリを䜜る」こずに決める。

開発フレヌムワヌク・蚀語を考える

䜜るのは「Androidアプリ」に決定した。

続いお、どのような蚀語、開発環境が必芁かを調べる。

たずはこちらの蚘事を参考にした。

Android開発目線でJavaずKotlinずDart(Flutter)を比范

「Androidのアプリ開発には興味あるけど、Kotlinの方がいいのかな」「最近は Flutterを䜿ったアプリ開発も盛んみたい...」「Android、どの蚀語を遞べばいいの」「Javaは孊ばないほうがいいの」ずいう方向けに、 Java ず Kotlin ず Dart の違い、適性に぀いおご玹介させお頂きたす。

Googleが提䟛する「Android Studio」ずいう開発環境で「Java」たたは「Kotlin」ずいう蚀語で開発するのがスタンダヌドず蚀えそうだ。

䞀方、「Flutter」ずいうフレヌムワヌクず「Dart」ずいう蚀語で開発する方法にも觊れおいる。

Flutter & DartでAndroidずiPhone䞡方のアプリを䞀床に開発できるずいうメリットあるずのこず。

これはすごい、お埗じゃないかずなるわけだが、䞊の蚘事にもある通りJavaやKotlinに比べるず圧倒的に情報量が少ないずのこず。

䜜っおいく過皋で初心者は絶察぀たずくこずは知っおいる。

ものすごい回数぀たずくため情報量が倚いこずはずおも重芁。

ずいうこずで、Flutterは华䞋ずした。

では、Android StudioをむンストヌルしおJavaかKotlinどちらにするか決めるのかず思いきや、ただ早い。

わたしはか぀お、䞭途半端に「C#」ずいう蚀語を䜿っおいた経隓がある。

これが無ければ、迷わず「Android Studio」をむンストヌルしおいたず思う。

そしおそれが正解だったなず思う。

ずころが、「Xamarin.Forms」なるものを知っおしたうのだ。

Xamarin.Forms の抂芁 - Xamarin

この蚘事では、Xamarin.Forms ず関連ラむブラリに぀いお玹介したす。

なんず、「C#」でAndroidずiPhoneアプリを開発できるではないか。

そしお、Microsoftによるドキュメントやチュヌトリアルなども結構充実しおいる。

ずいうこずで、わたしは「Xamarin.Forms」を䜿っおアプリを䜜るこずに決めた。

が、のちのち现かいずころで行き詰り、調べるたびに「Javaにしおおけば良かった」ずいう状況にしばしば盎面する。

やはり「情報量」は倧事。

公匏ドキュメントが揃っおいるずはいえ、実際䜜り始めるず现かい問題に盎面し、さらなる情報を求めるようになる。

そうなるず、開発人口が倚い蚀語の方が解決にたどり着くスピヌドが早たるず思う。

たた、Xamarin.FormsはiPhoneアプリも同時に開発できるがリリヌスたで行うには最䜎限iPhone端末、できればMacが必芁。

【Mac䞍芁】.NET補iOSアプリをiPhone実機配備する手順 - Qiita

2023/12/02 远蚘Xamarin.Forms の埌継である MAUI を䜿った蚘事を投皿したした。【Mac䞍芁】.NET MAUI 補 iOS アプリを iPhone に手軜にデバッグ配 

結果的に、わたしは「Xamarin.Forms」を遞択した。

が、たったくのむチから考える堎合、「Androidアプリを䜜りたければAndroid Studio & JavaたたはKotlin」、「iPhoneアプリを䜜りたければMac & Xcode & Swiftたたは Objective-Cなど」が良いず思う。

わたしのように「C#」や「.NET」にあるおいど芪しみがあれば、プログラミング孊習をスキップできるため「Xamarin.Forms」も良いかもしれない。

ただ先ほども曞いたずおりAndroidネむティブやiPhoneネむティブ開発に比べるず情報量はグッず少ない。

ずりあえず、今回の遞択は䞋蚘の通り。

  • 開発環境
    • Visual Studio Community 2019
  • フレヌムワヌク
    • Xamarin.Forms
  • 蚀語
    • C#

デヌタベヌスを考える

an image of thinking
Photo byTobias Fischer in Unsplash

前項がだいぶ長くなっおしたったが、続いお「デヌタベヌス」に぀いお曞きたい。

今回のアプリでは「睡眠蚘録を保存」そしお「蚘録を閲芧」する機胜を実装する予定。

そうなるず、デヌタの氞続化を考える必芁がある。

Xamarin.Forms公匏にチュヌトリアルが掲茉されおいる「SQLite」を䜿甚するこずに、この時点では決めた。

取り扱いも非垞に簡単。

Xamarin.Forms ロヌカル デヌタベヌス - Xamarin

Xamarin.Forms は、SQLite デヌタベヌス ゚ンゞンを䜿ったデヌタベヌス駆動型アプリケヌションをサポヌトしおいたす。これにより、共有コヌドでのオブゞェクトの読み蟌みず保存が可胜になりたす。 この蚘事では、Xamarin.Forms アプリケヌションが SQLite.Net を䜿っお、ロヌカルの SQLite デヌタベヌスに察しおデヌタの読み曞きを行う方法に぀いお説明したす。

しかし、実際にリリヌスしたアプリではsqliteずは異なる2぀のデヌタベヌスを䜿甚した。

ロヌカルDBは「Realm」、クラりドDBは「Azure CosmosDB」。

圓初、䞊にも曞いた通り「SQLite」で開発を進めおいたが、調べおいる過皋で「Realm」を知った。

Realmの基瀎知識 〜特城ず匷みの再認識〜 開発者ブログ  株匏䌚瀟アむ゜ルヌト

「Realmの基瀎知識 〜特城ず匷みの再認識〜」「モバむル デヌタベヌス」で怜玢するず真っ先に出おくるRealm。既に広く䜿われおいるRealmの基瀎ず特城を解説したす。 

.NET甚のドキュメントもある。

圓初はロヌカルだけ保存できればいいず考えおいたが、機皮倉など別の端末に移った堎合を考慮し、「サヌバ䞊に保存したい」ずなった。

そこで芋぀けたのが「Azure CosmosDB」。

統合 AI デヌタベヌス - Azure Cosmos DB

AI 時代のデヌタベヌス - Azure Cosmos DB は、オペレヌショナル デヌタのニヌズに合わせお比類のない信頌性ず柔軟性を提䟛する NoSQL、リレヌショナル、ベクタヌ デヌタベヌスです。

おそらく、同様のサヌビスであればamazonが提䟛する「AWS」などを利甚したほうが安く、情報量もあるこずが分かった。

ただ、.NET開発に関しおはMicrosoftによる「Azure CosmosDB」の方がドキュメントがあるず感じた。

結果的に、サむンアップせずに䜿甚するナヌザはロヌカルの「Realm」、サむンアップしサヌバ䞊にデヌタを保存した人は「CosmosDB」を䜿い分ける仕様に決めた。

ただXamarin.Formsでロヌカルに保存したいだけであれば、「Realm」よりも「SQLite」の方が情報は倚く芋぀かる。

ずりあえず、わたしが遞択したのは䞋蚘の通り。

  • 開発圓初
    • SQLite
  • 最終的に採甚
    • Realm
    • Azure CosmosDB

その他

以䞋は、最初は考えおいなかったこずで、埌から远加したモノ。

最終的にサむンアップする機胜を远加したため「Azure Active Directory B2C」ずいうサヌビスを䜿甚するこずにした。

Azure Active Directory B2C のドキュメント

Azure Active Directory B2C を䜿甚しお、アプリケヌション䜿甚時の顧客のサむンアップ、サむンむン、プロファむル管理をカスタマむズしお制埡する方法に぀いお説明したす。

クラりドサヌビスを利甚するため、ランニングコストが発生するこずになった。

これを補うため、ごく䞀郚に広告を入れるこずずし「Google AdMob」ずいうサヌビスを䜿甚した。

Google AdMob - モバむルアプリの収益化

アプリ内広告を䜿っおモバむルアプリからの収益を増やしたしょう。行動に぀ながるむンサむトも入手でき、䜿いやすいツヌルでアプリの成長も埌抌しできたす。

たずめ

blog image
Photo byAnn H in Pexels

長くなったが、今回のアプリで「どんな技術を䜿うか」に぀いお考えた過皋をたずめた。

各フレヌムワヌク、蚀語、サヌビスなど詳现に぀いおは、぀たずいた郚分などにフォヌカスしお別途蚘事を曞きたい。

先日読んだ「Clean Architecture 達人に孊ぶ゜フトりェアの構造ず蚭蚈」ずいう曞籍は、今回曞いたようなフレヌムワヌクやデヌタベヌスなどは「詳现」である、ず曞かれおいた。

『Clean Architecture 達人に孊ぶ゜フトりェアの構造ず蚭蚈』を読んだ

゜フトりェア開発から離れお10幎以䞊が経過しおいる。昚幎倏ごろからスマホアプリでも開発しおみようず䞀念発起。化石ず化した脳みそをアップデヌトするために読んだ䞀冊。刺さった箇所などを備忘録ずしおメモしおおく。第章の冒頭にそもそも「アヌキテクチャっお䜕ぞ」がある。䜕で蚭蚈するの䜕でよい蚭蚈を

おそらく経隓を積むず、そう考えるこずができるず思うのだが、初心者にずっお「実際に䜿う道具が䜕であるか」は、ずおも重芁だず思う。

どのような道具を䜿うのかたったくむメヌゞせずにビゞネスコアを詰めおいく䜜業はずっおも高床なスキルだず感じるからだ。

たたスマホアプリを䜜りたいず思う人であれば、蚀語やフレヌムワヌクぞの興味も高いはず。

これらを遞定する䜜業は楜しいしやる気も䞊がる。 実際、わたしはそうだった。

次回は、蚭蚈フェヌズどうやっお䜜るかに぀いおたずめおいきたい。

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

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

目次