1. はじめに
今から数年前、転職をしたばかりのころのことです。
新しい職場に入ってわずか3日目で「もう辞めたい」と思ってしまいました。
理由は明確でした。
上司のパワハラ発言、自分や同僚を傷つける言葉。
その上司の思い通りに事が進まないと、「部下の能力不足」や「部下の怠慢」として、全社員が見ているチャットで"公開説教"。
さらにその上司が決めた理不尽なルールも数多くありました。
- 勤務開始30分前には出勤(ただしタイムカードは定時打刻)
- 勤務終了後30分は残業(こちらも定時打刻)
契約上は15分単位で残業代が発生するはずでした。 - 上司からのメッセージには「何があっても1分以内に必ず返信(“私の時間は貴重だから”とのこと)」
今思い返してもため息が出るような職場環境でした。
同僚の中には3か月で辞めた人もいました。
また、体調を崩して休んでしまった人もいました。
自分も辞めたかった。
でも「短期間で辞めてしまったら自分のキャリアに傷がつくのではないか」と思って、「せめて1年は続けよう」と決意しました。
「あと〇日」が支えになった
それからの毎日は、正直つらいものでした。
毎朝、満員電車に揺られながら「あと何日だろう」と数える日々。
1日減るごとに、ほんの少しだけ気持ちが軽くなりました。
3か月たったとき、「4分の1は乗り切った」
半年経ったとき、「折り返しに入った」
この積み重ねで、なんとか1年をやりきることができました。
退職届を提出した瞬間、肩の荷がスッと下りたように感じました。
そして最終日を迎えたときには、開放感と「よく頑張った」という達成感がありました。
2. この経験から生まれたアプリ
当時はiPhoneのカレンダーを使い、毎日「あと〇日」と数えていました。
もし「退職日までをカウントしてくれるようなアプリ」があって、だんだんと日数が減っていることが可視化できればいいなと思いました。
さらに、ただ日数を数えるだけでなく、
- ユーモアのある「退職あるある」
- 前向きになれるような言葉
- 誰にも言えない愚痴を吐き出せる
そんな機能があれば、自分と同じような思いをしている人のちょっとした息抜きになるのでは。
そういった思いから、今回「退職日カウンター」というアプリを開発しました。
アプリの概要
「退職日カウンター」は、退職日を設定するとリアルタイムで残り日数や時間をカウントダウンしてくれるアプリで、以下のような機能があります。
- 進捗リング:ゴール(退職日)までの進捗度をビジュアルで表示
- 退職あるある:クスっと笑えるフレーズをランダム表示
- 励ましや退職Tips:上記のフレーズに加えて、前向きな一言やTipsなどもランダムで表示
- つぶやき入力:誰にも見られない、自分だけの愚痴や思いを記録
- 退職準備チェックリスト:退職にあたってしておいた方がよいことをチェックリストで表示
- 通知機能:通知をONにすると、「あと◯日」を定期的にお知らせ
技術スタック
- UI:SwiftUI
- データ保存:UserDefaults(ローカルのみ)
- メッセージ管理:JSONファイル
- デザイン:フラット&明るめカラー
「シンプルに。でも毎日開きたくなるもの」を意識しました。
学んだこと
今回の個人開発を通して感じたのは、自分の経験からヒントを得てアプリ開発できるということです。
- どんなに小さなアイデアでも役立つならアプリにできる
- リリースして初めて「世の中に出せた」という実感が湧く
- シンプルなアプリは、4.2 Minimum Functionalityとの戦い
- 収益化してなくても、DL数は気になるw
工夫した点
-
ちょっとしたUIの気持ちよさ
今回のアプリで一番のポイントはキャラと吹き出しのレイアウトです。
「退職あるある」や「励ましメッセージ」は1行のときもあれば2行になることもあります。
吹き出しが下方向に広がるとキャラとの位置関係が崩れるので、上方向にだけ伸びるようにしました。- 吹き出しの高さを GeometryReader+PreferenceKey で動的に計測
- 初期高さ(1行分)を基準に「増えた分だけ上にオフセット」
- キャラは常に下端固定なので、自然に「キャラ+バブル」のペアが維持される
これにより自然な見た目を維持できました。
-
進捗リング
struct ProgressRing: View { var progress: Double var body: some View { ZStack { Circle().stroke(Color.gray.opacity(0.3), lineWidth: 20) Circle() .trim(from: 0, to: progress) .stroke(Color.orange, style: StrokeStyle(lineWidth: 20, lineCap: .round)) .rotationEffect(.degrees(-90)) // 12時起点 .animation(.easeInOut(duration: 0.6), value: progress) } } }
実装はシンプルで、Circle().trim と rotationEffect を使えば、12時を起点にした円グラフ風の進捗リングを簡単に作れます。
おわりに
退職日までの日数を数えることは、一見ネガティブで気持ちが落ち込みそうと思えるかもしれません。
でも「あと〇日」があるから頑張れることもあります。
「退職日カウンター」
もし気になった方は、ぜひ試してみてください。