anthropogenic.pages.dev
20240724
FIXME with types
個人開発では割と「緩い(loose)」コミットを許容している。 仕事だともう少し推敲したりするようなところでも FIXME コメントとともにコミットしてしまうことが多いが 個人開発は継続性に重点をおいてこのようなスタイルにしている。Conventional Commits ならぬ Conventional FIXME と言えるかもしれない。
そんな感じでコミットを重ねていくと自然と FIXME が増えていくことになるが、そのうち FIXME もいくつかの種類に分類できることに気がついた。 Conventional Commits 同様、FIXME にも「型」を導入すると理解や検索の 点でよいかもしれない。

screenshot of rails error message
現在、思いつくのはざっと以下の通り。HANDLE ERRORS, O11Y(Observability), NEED TEST は機能が 一通り整ってから取り掛かるなど自分なりの開発方針を立てると、完璧主義の罠にも陥らずにすむし nitpicker にもならずにすむ。
- WRITE BETTER
- HARD CODING
- SENSITIVE DATA
- PERFORMANCE
- UGLY APPEARANCE
- NEED MORE
- NOT WORK
- HANDLE ERRORS
- O11Y
- NEED TEST
Rails にはサブコマンドの notes があるが、単純に FIXME の文字列で検索して表示しているわけではないようだ。
$ bin/rails --help | grep notes
notes Show comments in your code annotated with FIXME, OPTIMIZE, and TODO
$ bin/rails notes
app/controllers/auth_controller.rb:
* [55] [FIXME] WRITE BETTER
*
$ rg FIXME
app/controllers/auth_controller.rb
55: # FIXME: WRITE BETTER
app/views/chartulas/_chartula.html.erb
13: <%# # FIXME: NOT WORK %>
app/views/application/_outside_pages_navbar.html.erb
50: <!-- # FIXME: HARD CODING -->
app/views/application/_inside_pages_navbar.html.erb
28: <!-- # FIXME: HARD CODING -->
app/views/layouts/application.html.erb
13: <!-- # FIXME: toggle_light_and_dark_mode
26:<!-- # FIXME: toggle_light_and_dark_mode
自分なりの開発プロセス標準
同様に、 自分の中で開発プロセス標準を定めておくと無理に進捗に焦らなくてよくなる。 5. Groundwork 時の Refactoring 時に集中して FIXME を直すと決めておけば精神衛生的にも気持ちの整理がつく。 例えば、私の Web サービスの開発プロセスの標準は以下の順番がベストプラクティスになっている。
| Id | Focus | What to develop | Implementation |
|---|---|---|---|
| alpha 0.1 | PoC | A Few Core Feature | CRUD |
| alpha 0.2 | Marketing | Outside Pages | Landing pages, Deploy procedure I |
| alpha 0.3 | Initial Stage I | Authentication, Multi users | Signup, Login, Logout, Session |
| alpha 0.4 | Initial Stage II | Inside Pages | Navbar, Footer, Search, Pagination |
| PMF | Product Market Fit | Listen to Feedbacks | |
| beta 0.5 | Groundwork | Lint, Test, Refactoring | Rubocop, Factory bot, Unit Test, CI, System Test |
| beta 0.6 | Availability | Backup, Restore | Scheduled jobs, Deploy procedure II |
| beta 0.7 | Paperwork | Legal Pages | Privacy Policy, Terms of Service |
| beta 0.8 | Payment | Subscriptions | Stripe |
| beta 0.9 | Observability, Capacity Planning | Log, Trace, Metrics | Log, Trace, Metrics, Load balancing, Scaling |
| ga 1.0 | Bug fix |
2024-07-24 22:08:05 +0900 +0900
anime
3
api
1
aws
3
cognito
1
game
1
howto
2
hugo
1
idea
2
life
6
log
2
maxim
2
mdx
1
rails
7
rubocop
1
ruby
1
rust
1
solution
2
stripe
1
tech
17
ui
1
warp
1