「シンプル」はどういったメリットがあるの

Pocket

こんにちはnockです。

プログラマーとしても意識しておくべき重要な原則として「シンプル」があります。
シンプルイズベストともある通り、良く聞く話だけど侮れない、そんな「シンプル」の話をしていきたいと思います。


シンプルにするメリットとは

そもそもシンプルにするメリットって、何をシンプルにするのかによってもメリットって変わってくるんじゃないの?と思われますが、大枠で捉えると大体同じですよね。
まずは大枠でこんなメリットがあるよーということを考えてみましょう。


まずシンプルとは、「簡単な」とか「理解しやすい」とかそういった意味を持つ単語です。
そのためそのまんまなメリットも含まれますが、大枠では次のようなメリットがあります。

  • 簡単なため行動(物事の理解等を含む)に時間がかからない
  • 理解できるため記憶に残りやすかったり、作業が定着しやすい
  • 第三者への情報共有がスムーズ
  • 手間がかからない


うんうん、どれも見逃せないメリットですね!

シンプルにする上での注意点

シンプル化するってーのは、物事を単純化するだけのことでしょ!と思われる方、ブッブー×です!

まずシンプル化する上で忘れてはならない要素があります。
これを意識せずにシンプル化してしまうと…後々思いもよらぬ展開になってしまったり、余計に手間がかかる状態になってしまいます。
ではどのようにシンプル化するかというと、次のように考えるべきかなーと。

  1. 要否の判断(その手間が本当に必要か?)
  2. 不要の除外(必要でないと判断されたものは切り捨てる)
  3. 必要の単純化(必要だと判断したステップを集約できないか?)


まず「要否の判断」っていうのは、本当にそれって必要なの?っていう問いかけです。
この問いかけをしっかり行わずに物事を単純化しようとしてしまうと、本来必要であるステップを除外してしまって参事が起きたりすることがあります。

次に「不要の除外」ですが言葉の通りです。
3ステップかけていた物事から、不要な2ステップを捨てれば1ステップの手間しかかからない、ということです。

最後に「必要の単純化」ですが、ここが一番難しいところであります。
例えば食品の品出しでは、賞味期限が短いものを手間に並べるために、

  1. 一旦並べられた商品を取り出す
  2. 空いたスペースに新しい商品を並べる
  3. 最後に取り出した商品を戻す

といったステップを踏んでいた場合「新しい商品を後ろから補充する」という単純化が図られます。
しかしここで「手前から商品を配置する」としてしまうと、本来の必要条件である「賞味期限が短いものを手前に並べる」が満たせなくなってしまいます。
つまり「要否の判断」で判断した必要なもの、または必要と判断した意図を満たすように単純化を図る必要があるんですねー。


雑な締めではありますが、
シンプル化するメリットは受けたいけれど、なかなかシンプルにするって難しいんだなーと感じる今日この頃でした。
今日はここまでー!

おまけに

プログラムをシンプルにするメリット

例えばプログラミングを行う際に、極力分かりやすく、よりシンプルにすることを心がけることによって次のようなメリットがあります。

  • 修正の必要が出たときに、すぐにコード(プログラムの命令のこと)を理解できる
  • 理解しやすいため修正内容をどう加えるかを考えるのが容易
  • 第三者が修正を加える際にも上記と同様の効果がある
  • 簡潔に修正を加えられる=バグが発生し辛くなる


シンプル化する時点でも色々メリットがありますが、特にシンプル化の効力が発揮されるのがシンプル化した後であることがお分かりいただけますでしょうか。
簡潔にすることって難しいのですが、長い目で見たときにそのメリットは大きく発揮されるですねー。


お気に召したらフォローお願いします!