システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る。主に自分向けのメモ。EE関連の情報が少なく自分自身がそういう情報があったら良いなぁということで他の人の参考になれば幸い

【書評】川島さんのScrapbox

はじめに

いつも勉強になる 川島さんの著作(ブログ・スライド)の書評というか、何を読んだかメモ。
読む順番は順不同&気分次第です。

Scrapbox URL

kawasima

アーキテクチャ設計における垂直思考と水平思考

アーキテクチャ設計における垂直思考と水平思考 - kawasima

表題の考察については以下の書籍で色々と考えました。

結論としては、かなり違う切り口でしたが、なるほど という感じです。
自分としては、ロジカル(垂直)とラテラル(水平)についての区別なく「Why」「What」「How」くらいのザックリでした。

あわせて読みたい

www.slideshare.net

ソフトウェア設計練習帳

ソフトウェア設計練習帳 - kawasima

新人研修のシステム開発シナリオの素案にもなるかも

未読管理

未読管理 - kawasima

未読(もしくは読んだことにする範囲)の捉え方で管理方法は変わる

予約

予約 - kawasima

マイクロサービスで、取り消し(ロールバック)を実現しようとした場合の話だと理解しました。
境界を越えた整合性については、同期的であれ非同期的であれ、DBで実現できていたトランザクションに相当する機能を自分たちで実装しないといけないから、大変だという認識。
Akkaとか使えば良い感じになるのかな?(わかんないけど)

ページネーション

ページネーション - kawasima

オフセットベース
* 「最後のページへ」のようなページネーションは避けた方が良い。
理由:大きな結果セットに対して大きなオフセットの指定になるから。
SQLで降順に並べて順番に取得するってことは そういうことになるってことかな?
んーでも、それだと昇順でも結果セットの規模は同じか…
分かった気になったけど、多分 分かっていないということが分かった。

カーソルベース * 日付は一意にならないのでカーソルとしては使ってはいけない
「ID生成大全」にもありますが、厳密なソート順を求めると性能面でボトルネックが出来うるという事だけは押さえておいた方が良いような気もします。

  • 無限スクロールとも相性が良い
  • 特定のページへのダイレクトリンクはできない

諸々 雰囲気では分かったけど、多分 ちゃんと分かっていない…

あわせて読みたい

ID生成大全 - Qiita

Snowflake形式のIDを採用した場合の苦労ポイント - yoskhdia’s diary

アンケート

アンケート - kawasima

ERDの練習教材に使えそう

ログイン

ログイン - kawasima

世のログイン機能はメールアドレスや電話番号が本人のものであるという確証がとれていることを前提としていることが多いんだなーということを学べた。

検索条件保存

検索条件保存 - kawasima

保存形式は、、、僕だったら「QueryStringのまま」か「JSON」かなぁ。
検索条件による分析とか必要な場合は「検索条件パラメータごとにカラムを作る」を選択しがちだけど、そういった2次利用は それ専用として別途準備した方が良いと思っているので。

検索条件の再利用だけであれば、「QueryStringのまま」で、検索APIの仕様変更時の追随など 条件変更耐性的なところ鑑みた中間を狙ったら「JSON」かなー。

お気に入り

お気に入り - kawasima

お気に入り情報は「お気に入りに入れたときの情報」を保持する、というのは納得。
つまりは伝票と同じ。 某会計クラウドサービスで請求先名を変えたら 過去の請求書も書き換わったというのは あってはならないのとニュアンスは同じ*1

UIに関する記載(Ajax通信でAPI呼ぶだけ)というのも納得。

*1:今は解消されているかもしれないけど