iPhone用のアラームアプリを作った【iOS】

初の個人アプリをリリースしました!
そのアプリがこちらです。

簡単に言うとアラームアプリです。 アラームアプリは App Store にたくさんあるのですが、自分が欲しかった

  • 秒まで指定できる
  • 通知はバイブレーションのみ(音が鳴らない)

の2つの機能が備わっているものが見つからなかったので作ってみました(よく探せばあるかもですが) 。

作るに至った経緯

毎日、通勤で約1時間電車に乗っていたのですが、座れる時にはアラームをセットして寝ていました。
その際には、寝過ごさないように、他の方が作ったアラームを使って目的駅に到着する1分前に時間をセットしていました。
そのため、1分前になったらアラームが鳴って起きてはいたのですが、めちゃくちゃ眠い状態だと判断が鈍ってしまうようで、1分あればもう一度寝られると考えて二度寝してしまい、危うく乗り過ごしそうになることが何度もありました。
幸い乗り過ごしたことは一度もなかったのですが、これはいつかやらかすと思い、そもそも二度寝したくてもできないぎりぎりの時間(30秒前とか)をセットできれば良いのではと思いました。
ですが、この時使っていたアプリは1分単位でしか時間をセットできなかったので、秒まで指定できるアラームを探したところ、自分の欲しいようなアプリがなかなかなかったので、今回のアプリを作るに至りました。

技術的な話

このアプリを作った目的の一つとしては、新しいことを学ぶということもありました。
業務では、結構大きなサービスの iOS 開発をしているのですが、普段触るものとは違う技術を触ってみたい、また、一からアプリを作ることで、いつもであれば学ぶことのできない新しい学びがあるのではないかというように思っていました。

RxSwift + MVVM

iOS 開発のアーキテクチャについて学びたいと思っていたので、流行りの RxSwift を使い、結果的に MVVM について学ぼうということで RxSwift を使いました。

とりあえず Rx の雰囲気は掴めたような気がしているのですが、 RxSwift でコードちゃんと書いていますと言えるほどには身につかなかったなあという気がしています。
ですが、 RxSwift の学習コストの高さや、データバインドの良さや、関数型言語のように記述できることの便利さ等は実感できたので、ひとまずよかったかなあと思います。

ライブラリ公開

ライブラリを作ったことがなかったので、アプリを作っていく中で、ある程度抽象化できそうな部分があったらライブラリを作って公開してみたいなと思いました。

結果的に、 LabelPicker という UIPickerView 関連のライブラリを公開することができました。

komaji504.hateblo.jp

アプリ内では、時刻、時間を指定する UI に使用しています。
標準の UIDatePicker でも時刻、時間はもちろん指定できるのですが、秒指定と単位の表示ができなかったので、これらを解決するためのものとして作りました。
これでライブラリの作り方を知れたので、また何か抽象化できそうなことがあればやってみようと思います。


他にも学べることはたくさんあったので、やって満足しています!
残念だった点としては、今はもう引っ越してしまい、長い電車通勤ではなくなってしまったため、ドッグフーディングができなくなってしまったということがありました。
でもまあ、日常生活の中で利用する機会はあるかと思うのでその際には使っていきます。

アプリに関して何かあればコメントください〜