見出し画像

オリジナルアプリ進捗状況

お疲れ様です。プログラミング勉強中サラリーマンです。

今日は1週間ほど前からつくりはじめた自作アプリの進捗記録です。

基本的な機能

今つくっている「ほしいものアプリ」の基本的な機能は以下。

ほしいもの管理機能

  • ほしいものを登録できる。項目は以下

    • 画像(NEW!)

    • アイテムの名称

    • 価格

    • 詳細な説明

    • 購入予定日

    • 購入日(購入済みボタンを押したらセットされる)

  • ほしいものリストは、年・月でフィルタリングできる

  • フィルタリングした月のほしいものの総額を表示できる

  • それぞれのほしいものには、メモをつけることができる

    • メモにはテーマをつけることが必須。

    • テーマは以下(追加・削除も可能)

      • 欲しいと思う理由は?

      • 他の製品との違いは?

      • ワンランク下げたみるのはどう?

      • ワンランク上げてみるのはどう?

      • 来年ではなく、今欲しい理由は?

      • 購入の結果、自分に起きる変化は?

      • 買わない方が良いと思うなら、その理由は?

      • これを達成したら買う!

      • 買わなくても目的を達成する方法は?

  • 2つのほしいものを比較できる

    • 比較するポイントはユーザーが任意で入力できる

コンセプト

ほしいものリストはAmazonにも機能がありますが、あくまでアイテムを登録しておくだけのものです。
つまり、ほしいなーと思ってリストに入れておいて、セールになったりしたら買う、という「ほしいと漠然と思う+外的要因」でポチってしまえる状況にあります。

一方で、ほしいものについて「なぜ欲しいの?」「なぜ”そのモデル”なの?」「なぜ”今”なの?」「なぜ”代わりの商品”じゃないの?」といった掘り下げを行なうことで、自分が納得して買い物をすることが、ゆたかな消費へとつながるのはないか?と考えました。

というのは建前で、なんでもかんでも衝動買いしてしまう自分に考える時間を与えるために、つまり自分のために作っています。

この辺の話は昨日の記事で語っています。

今週やったこと

今週の進めたところを書き残しておきます。
といいつつ、上述した機能のほとんどは今週実装したものです。

  • ほしいものリストのCRUD

    • 「買った」フラグによる「買ったものリスト」

    • ActiveHashを使った「メモのテーマ」の選択肢

  • 月ごとのフィルタ機能

  • 比較機能

  • 新規ユーザー・新規アイテムの単体テストコード・結合テストコード

  • ActiveStorageを使った画像添付機能

  • BootStrapを使ったスタイリング

  • ヘルパーメソッド、テンプレートを使ったリファクタリング
    (ここは「オブジェクト指向設計実践ガイド」を読んでてよかった点です)

今週の感想

今週の取り組みはとにかく「自分のアプリを育てる」という楽しさに満ちた時間でした。
ゲームで新しいキャラクターを仲間に迎えて、手塩にかけて育てていく感覚に近い、というか全く同じ感覚だったように思います。

で、個人開発ってのはモチベーションがすべてですから、「誰々のためにつくる」というモチベーションに頼るのはやっぱりちょっと僕には難しいと思いました。
もちろん、仕事だったら個人のモチベではなく利益のためにやるので別なんでしょうけど、少なくとも今の時点で(マネタイズなし、勉強のための個人開発)は、モチベ高く楽しく、趣味のように取り組むのが一番だと思います。

ゆるコンピュータ科学ラジオというYouTubeチャンネルで「伽藍とバザール」という論文が紹介されていたのが思い出されます。
要約すると、「モチベ高く、速くてクオリティの高い、素晴らしい開発が行われる条件は、”取り組む問題”が面白いときである」ということです。
まさにそうだなぁ。と思いながら、これを書いています。

何がそんなおもろいの?

まぁとにかく楽しくプログラミングしているわけですが、何がそんなに楽しいか?というのを説明するために、以下のたとえ話をしましょう。

あなたは朝、電車で出勤・通学するとします。
駅まで急いで歩き、駅の階段を登るなり降りるなりしていると、階段が狭くて人の流れが悪いのです。残念なことに、電車を1本逃してしまいました。

そこで怒ったあなたは、駅長に言いつけて即座に階段の幅を2倍にしました。これで明日から渋滞は解消です。
ついでに階段の長さも短くしようとしましたが、ホーム階まで届かないことに気づいて諦めました。
その代わり、思いつきでエスカレーターをいっぱい増設しました。これで明日から歩かなくてOKです。

どうでしょうか。神じゃないですか?いろんな意味で。

実際、「問題がある」→「直す」のサイクルの早さで言えば、上記のような感覚なんです。

ということで、「問題があって、直す」「課題があって、直す」「うまくいっているけど、よりよくする」というサイクルを速く、自分でコントロールしながら行うことに楽しさを感じます。

コントロールできていることは楽しいのです。
イライラ棒(古い?)がイライラするのは、コントロールできない自分にイライラするのです。たぶん。

来週やること

ということで、基本的な機能はだいぶ揃ってきたので、来週の取り組みについて宣言しておきます。

来週やりたいことは以下。

  • 早めに公開して一般的にフィードバックを得たい。そのためのセキュリティ面での考慮事項などを勉強する

  • 当然あるべきと思われる、いくつかの(脳内にある)機能を実装していく

  • ちょっと変わったアプリなので、チュートリアル画面を用意する。はじめてのログインならモーダル表示する?とかやってみたいな

要は、ブラッシュアップです。

RPGでは、最初はサクサクレベルが上がりますが徐々にレベルが上がりにくくなっていきます。たぶんアプリ開発でも同じでしょう。徐々に変化は見えにくく、改修は重く、コードの絡まりに困る場面も出てくるでしょう。
でもまぁ、それでも楽しんで進めたいと思います。

Xで「こんなんつくった、みてみて」的なポストを流しておりますので、ぜひ感想やアドバイス、質問などいただけると嬉しいです。


今日は以上です。
最後までお読みいただきありがとうございました。

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