プログラマー VTuber 衣亥栖ティオのちょっとした話

Youtubeに投稿したプログラミング学習動画の補足説明をするためのブログです。

プログラマーへの道 #30 の補足説明

こんにちは、プログラマーVTuberの衣亥栖ティオです。
今回は以下の動画の補足説明をします。 動画内で実装したソースコードも載せています。


今回の動画で実装したソースコード

以下が今回実装したソースコードです。

メモの登録をモーダルにする実装方針について

今回の動画はメモの登録をモーダルに変更するのが目的でした。 動画中では結局決められなかったのですが、メモの登録をモーダルに変更する方法としては以下の2つがあります。

  1. メモを編集する際に利用するモーダルとは別で登録用のモーダルを用意する。
  2. メモを編集する際に利用するモーダルを登録でも利用する。

それぞれ説明します。

1. メモを編集する際に利用するモーダルとは別で登録用のモーダルを用意する。

1番は登録用のモーダルを新規実装することになるので、考え方としてはシンプルなものになります。 具体的にはモーダル用のHTMLをそれぞれ用意するというものです。 しかし、編集用のモーダルと登録用のモーダルが2つ存在することになるので、モーダルのデザインを変更する際に2つのHTMLを修正する必要があります。

プログラミングでは共通化できるものは共通化するという "DRY(Don't Repeat Yourself)" という考え方があるので、 同じようなHTMLを2つ用意するのは避けた方がよいという考え方ができます。

Don't repeat yourself - Wikipedia

実際に動画中でもHTMLを2つ用意しようと思いましたが、上記の理由に加えてHTMLの id の値の重複を解消するのが面倒で手を止めました。 id の値に統一感がなくなり、管理できなさそうだと感じたからです。

2. メモを編集する際に利用するモーダルを登録でも利用する。

2番はメモを編集する際に利用するモーダルを登録でも利用するというものです。 これは1番で問題に感じていた以下の2点を解消することができます。

  • HTMLを2つ用意する。
  • id の重複を解消する。

一見良さそうです。 実際に私も最初に選択したのは2番の方針でした。

しかし、実際に実装しようとすると "登録と編集の細かい違い" によって実装難易度が予想以上に高いことに気づきました。 例えば以下の違いがあります。

  • モーダルの上部に表示されるテキストが異なる。登録時は "登録" になるが、編集時は "編集" になるので、モーダルを表示する際に文字を切り替えなければいけない。
  • モーダルの下部に表示されるボタン(現在は更新ボタン)のテキストが異なる。登録時は "登録" になるが、編集時は "編集" になるので、モーダルを表示する際に文字を切り替えなければいけない。
  • モーダルの更新ボタンを押したときの挙動が異なる。登録時はメモの一覧にメモを追加するが、編集時はメモ一覧の値を書き換える。
  • モーダルを表示する際の挙動が異なる。登録時はタイトルと本文が空でよいが、編集時は編集対象のタイトルと本文をセットする必要がある。

この細かい違いに対応するためにif文が増えてしまうと、プログラム自体が複雑になってしまいます。 動画の視聴者だけでなく、実装者である私が理解するのが難しいプログラムになってしまうようでは意味がありません。


動画中で1番と2番の実装方針を決めきることができないと感じたので、 今回は動画を切りました(時間も10分を超えていたのでちょうどよかったというもあります)。

このブログを書いている時点では、一旦1番でシンプルに実装してみて、問題があるようであれば、2番で実装しようかなと思っています。