見出し画像

自作アプリ開発についての振り返り

個人でiPhoneのアプリを開発しています。本記事ではアプリ開発の経緯やコンセプトに加え、アプリ開発の苦しみや楽しさなどについても記載してみました。


個人でアプリを開発することの楽しみは、なんと言っても自由に作れるということだと思います。私は30年以上システムエンジニアとして企業で働いた経験がありますが、自由に開発できる機会というのはなかなかなかったです。

特に大きな企業や組織での開発は、製品の初期段階から参加できるのは本当に運が良いのだと思います。多くは途中からの参加となり機能追加や維持管理といった形態での参加が多いのではと思います。

個人でのアプリの開発は大変なこともありますが、自由に好きなように作れるというのは本当に個人で自作アプリを開発することの醍醐味だと思います。

私の場合は、開発するアプリの機能について最初はボヤ〜とした感じから作り始めます。最初は、こんな機能を持ったアプリを作りたいな〜という構想から始まるのですが、最初はノートや紙に、数枚の画面案とボタンを押した時の画面繊維などを描いて頭の中のイメージを少し具体化します。このときは核となる機能のほんの数枚の画面でしかないです。

で、次に実際にiPhoneの開発環境(xcode)で画面を作り始めます。で作りながら試行錯誤で画面を作っていきます。...と同時に機能を実現するためのデータ構造も同時に設計して、実際にコーディングしていきます。

これを繰り返しながら、機能の拡張を行いつつ、自分で使ってみながらこんな機能もあったらいいな〜、これ作ってみたけどいらないや〜みたいな感じで追加したり、削ったりしながら作っていきます。

私は既に60才を超えていて、プログラムの開発についてはC言語,Javaなどをかじった経験があるのですが本当にコーディングしていたな〜というのは20才代の頃で、iPhone の開発言語である swift については本当に初学者なので、壁にぶつかりながら、調べながらの試行錯誤の連続でした。(今も思考錯誤です...でも少しずつ早くなっていると思います。)

でも、この試行錯誤しながらこんな機能あったらいいな〜、この部分はもう少しこんなふうにしたら使い勝手が良くなるな〜と妄想しながら修正を繰り返している時が本当に楽しいです。

ここからは、これまでに開発したアプリについて、コンセプトや苦労した事などを紹介していきます。

誰だっけかな?

このアプリは、一番最初に開発したアプリです。このアプリは、自分のために開発したアプリです。私は人の名前がなかなか覚えられなくて、顔と名前が一致しない人です。そんな私のために開発したアプリです。ゲーム感覚で人の顔をランダムに表示して名前や誕生日などを確認するというもの。
作っていくうちに、こんな機能もあったらいいかなっていう感じで誕生日が直近な人の検索ができたらいいかな〜みたいな感じで好きに機能を追加ました。
実は、実際には機能していませんが(その画面が呼ばれていない)課金処理もののアプリの開発時に実装して、iPhoneの試験環境では動作するのを確認しました。当時は一番最初のアプリ開発ということもあり、これで大儲けなど妄想が膨らんでいたのです。という感じで、実際には組み込んんでいない機能もあれこれ試しながら作りました。
一応課金処理について補足しておくとアプリ内課金は以下の4種類があります。

  • 消耗型(ゲームなどでよく使われています)

  • 非消耗型(無料のアプリで広告を非表示にするのによく使われています)

  • 自動更新サブスクリプション (個人的に一番難易度が高いかな〜)

  • 非自動更新サブスクリプション

上の機能のうち、非自動更新サブスクリプション 以外の動作は一通り作成してみました。(自動更新サブスクリプション については、ituneからの通知を受ける方式ではなく、iPhone 単体で有効期限切などを行う方式で確認しました)

アプリの画面は以下のような画面で、「名前は?」をクリックすると隠れていた名前が表示されるという単純なものです。

誰だっけかな?

 モバイルアプリのデータベースに適したRealm(レルム)についても述べておかねば!
Realm については、オンラインスクールで、その存在を知り基礎を勉強しましたが、今開発している全てのアプリで使用してるベースとなるデータベースです。使いやすいですよ。速いし!

このアプリで一番苦労したのは、なんと言ってもアプリを公開する時です。
公開するためにはappleの審査があるのですが、通常は数日で長くても1週間みたいなのですが私の場合一月以上かかりました。否認の理由はメタデータ(ユーザへの説明)が不十分とのことすが、そもそも指摘している理由を私が理解できない部分もあり審査を通すのに本当に苦労しました。コロナ過の影響もあったのだと思いますが本当にもうダメかと思いました。

 まだあります。アプリを作って公開するためには、「特定商取引法に基づく表記」の必要性があります。つまり販売する人や企業の連絡先などを明記する必要がるということです。個人開発者にとっては少しハードルが高い面でもありますが、開発したアプリを責任持ってメンテナンスしていくという自身の決意も含めて個人名の開示と本ホームページを作成して公開しました。
(App Store でアプリを公開するためには、プライバシーポリシーなども開示する必要があるので必然的にホームページも作成する必要があるのです。)

お薬カレンダー

これは、お薬の飲み忘れ防止のために作ったアプリです。なぜこんなアプリを作り始めたかというと90才を超えるおばーちゃんがいるのですが、そのおばーちゃんのためにと思い作成したアプリです。

結論からするとこのアプリは、以下の理由で、今は公開していません。

このアプリは、クラウドサービスを利用してサイレント通知という機能を使用しているのですが、サイレント通知の送信が手動なのでメンテナンスが大変!(サーバ側でスクリプトを作成すれば自動化できると思うのですが、手が回っていない。)

アプリがバックグラウンド に入ったときに、たまに勝手に終了させられる時があり原因が特定できていない。(一週間以上元気で動いている時もあるけど、数時間後に停止している時もある。なぜかまだわかっていない。時間もなくて追求できていない)


Day Recorder

これも自分のために作成したアプリです。私は少し前まで英語の勉強をしていてTOEICとかにチャレンジしていました。(今はやることがありすぎて中断していますが)
TOEICは 例えば100点 点数を伸ばすためには平均何時間勉強する必要があるみたいなのがネット上に出ています。私はもう十分に歳をとっているので多分若い方よりもいっぱい勉強する必要があると思うのですが、実際どれくらい勉強したのかな〜というのが見えるようにしたいというのが 発想の原点です。
これも作りながら機能を追加しました。(最初の構想にはなかった機能)
例えば、2時間勉強していても集中していない時もあるよな〜。通勤時に単語帳を片手にぶつぶつ言いながらの時間がどうカウントすればいいのかな〜みたいな。......と言うわけで集中の度合いを%で入力できる機能を追加。
また、ゲームとかテレビとか勉強を邪魔する時間もあるよな〜。だから例えばゲームは1日2時間までなんてことが管理できたらいいな〜と言う感じでそんな機能も追加しました。
作っていたら、お風呂に入ったり、食事をしたりした時間も記録できたらいいんじゃないかな〜と思い。1日の行動の記録ができるような機能も追加しました。
ついでに、その時々でのメモを残すことができれば、もっと便利かな〜みたいな感じでメモ機能を追加しました。


Day Recoderの画面はこんな感じです。

DayRecoder  1日の成果


DayRecoder 1日の記録

Self Tweet737

これは、簡単に言うとTwitterのクライアント機能を持ったアプリです。

開発の発端は、自作アプリのDL(ダウンロード)数を増やすために、Twitterを初めてみたのですが、Titterに投稿するときは、緊張してどうしても建前的なツイートになってしまう自分に気がつきました。(公開されるのですから当然ですよね。誰かを傷つけたりしないかな〜とか思っていしまい)

そこで、Twitterに投稿する感覚で、Twitterに投稿しない自分だけの今の正直な気持ちを記録できるツールを作ってみよう。で公開してもいいな〜と言うつぶやきはTwitterにも投稿できるアプリを作ってみようと言うのが発端です。

で、これも作っていくうちにフォローしている人やフォローされているユーザの管理が楽にできたらいいな〜と言うことでそんな機能も後から追加していきました。(ブロックやミュート、フォローの機能を実装しました。)

また、おまけで登録したユーザのツイートをフォローしないで見るだけ機能も追加してみました。

このアプリで苦労したのは、Twitter社が提供しているAPIを使用しているのですが、Twitterから送信されてくるJSON形式のデータの解析についてです。まだ、完全にわかっていない部分もありますが、時間があればわかった部分をまとめてみたいな〜とも思ってます。(このアプリについては、今後も色々と機能を追加して自分が使いやすいように改善したいと思っています。既にこんな機能があったらといいな〜といった妄想はいっぱいあります。)

と、1年前には色々改善していきたい妄想で一杯だったのですが 2023年3月 Twitter APIが有料化されたため開発の継続は断念しました。


toDo日記

Self Tweet737を開発して一年ほどアプリ開発を中断していました。理由は開発するテーマが思いつかないから。その間 HTMLなどの勉強をしていました。で、1年経過した頃 何か作らねば折角学習したプログラミング言語のSwiftも忘れて使えなくなってしまう。という自身への強迫観念からとりあえず何でもかんでも良いから簡単なアプリを作ろう。
 ということで 日記とTodo(やる事の管理)が一つになったシンプルなアプリを開発しました。
 単純なアプリですが使ってみるとなかなか使い勝手が良く、やる事の忘れ防止など便利に使ってます。

E-交換日記2

最近開発したアプリです。これは、toDo日記を開発していた時から思いついたのですが、日記を家族やグループで共有できればいいなと思い開発しました。
 仕組みとしては、登録した日記を一時的にクラウド上のサーバに保存します。同時に共有する相手に通知で知らせます。共有する相手がアプリを開くとクラウド上のサーバからダウンロードして共有相手のiPhone内に保存されます。ダウンロードされるとクラウド上のサーバからデータは削除されます。つまり、クラウド上のサーバを経由して日記のデータを送受信することにより日記を共有します。日記のデータは基本的に自身のiPhone内に保存されるためセキュリティ的にも安心かと思います。

このアプリの主な特徴は以下です。

  • 友人、家族、サークル仲間で日記を共有できます。

  • 日記のデータは自身のiPhoneに保存されます。

  • 既読の機能があり、誰が既読で誰が未読か判ります。

  • LINEのような使い方もできます。

  • カレンダーと関連して投稿できます。

  • 検索機能があるので過去のイベントややり取りを探せます。

 LINEみたいに動画の共有はできませんが、会話や写真などはLINEと同じような感じで共有することができます。また、カレンダーと関連付や検索機能により過去の会話や日記を見つけることが容易になります。

画面は以下のような感じです。

Eー交換

最後に


 最後まで読んでいただいてありがとうございます。もし、気になるアプリがあればダウンロードしてみてください。使用した感想や改善要望などをいただけると開発の励みになります。
 定年を過ぎて、サラリーマンエンジニアとして働いていた時と比べるとほんの少しだけ時間に余裕ができた気がします。これからも老後のボケ防止のためにも自作アプリの開発を続けていきたいと思っています。

この記事が気に入ったらサポートをしてみませんか?