「元に戻せる」=「トライ・アンド・エラー」を可能にするイノベーション

「元に戻せないシステムは、システムの基本的な価値を毀損している」みたいなタイトルにしようと思ったのですが、尖り過ぎな気がしたのでユルめのタイトルにしてみました。

「元に戻せる」安心感のためにシステムを使っている

社内で利用しているシステムのいくつかは自分たちで作っているもので、僕も他聞に漏れずそういったシステムにコミットなんぞをしているのですが、つい先日不具合のあるものを勇み足で本番リリースしてしまうという事件を起こしました。

「げ、この不具合はまずい・・・」

この事態をひとまず落ち着かせるためには、何とかして一個前のバージョンに戻さなければなりません。

しかし一個前のバージョンって何? 単にソースコードが戻るだけで良いの? むぐぐ・・・ど、どうすれば・・・。

と、普通に考えていると混乱しそうな事態ではありますが、社内で使っているサービスは大体Herokuで運用しているので、この場ではHerokuのリリースロールバック機能を使うことでしれっと難を逃れることができたのでした。

この場ではリリースを元に戻せる仕組みを使っていたので何も慌てずに難を逃れることができたのですが、これがそもそも「元に戻せない仕組み」だったらどうでしょう。必要以上に手順を作って、必要以上にリハをやって、必要以上に怯えながらオペレーションをしたのではないでしょうか。

これはもう、職人芸ですよね。職人さんというのは基本的に元に戻せない仕事を神業的な技芸で行っている方々ですよね(と、テレ東の「和風総本家」を観ていて、いつも思います)。

「元に戻せる」という安心感は、そういった技芸の研鑽を積むことなしに、「ちょっと試してみる」ということを可能にします。

「あらかじめ入念にあらゆるリスクを検討する」よりは、「ちょっと試してみて、フィードバックを元に改善する」方が、「実際に起きたこと」を元に考えられる分、「あらゆる事態を想定する」よりはコストを小さくすることができますよね。

いやはや、「元に戻せる」というのは、よくよく考えてみると凄い価値ですね。

UNDOできないテキストエディタ

「元に戻せる」恩恵を受けているのは、別にプログラマに限ったことではありません。

今時、UNDOできないテキストエディタなんてありますか? ないですよね。あったとしても、UNDOできる別のエディタを使いますよね。

でも、紙に書いた文字を完全に消す、もしくはさっき書いた文字に戻す、なんてことはできないですよね。これができるのはシステムを使っているおかげです。今や当たり前のことです。

違う視点で、今から絵を描いてみることにしましょう。こんな絵を描いたとします(超上手いですね!)。

ちょっと手前の赤い船、一旦見えなくしてから構図を改めて考えたいなーと思ったとき、どうしましょう。油絵だから赤い船を消すことはできますが、「やっぱり気が変わった」と言って、消した赤い船を戻すことはできません。

でも、Photoshopなどの画像処理ソフトウェアを使っている使っている人からすれば、赤い船を取り外してみたり戻してみたりなんてのは、そんなに難しい話ではありません。ちゃんとレイヤー分けしていれば、レイヤーのオン・オフでできちゃう話ですよね。

どれも、今や当たり前の話です。

「トライ・アンド・エラー」を可能にするイノベーション

そう考えると、システムの基本的な価値は、「元に戻せる」ということだなと、しみじみ思うのです。

「元に戻せる」ことで、リスクを背負い込むことなしに「トライ・アンド・エラー」が可能になった。「トライ・アンド・エラー」を可能にすることで、今までできなかった挑戦ができるようになった。

今やパソコンを使うなんてのは当たり前(当たり前じゃなかった時代もありました)だし、一つ越えてパソコンではなくスマートフォンを使うのが当たり前という時代です。

それにはインターネットを活用してあらゆる情報源に高速に辿り着けるようになったとか、言語間コミュニケーションの壁がなくなるだとか、そういった価値ももちろんあると思うのですが、一つ、こういったシステムを使うことで「トライ・アンド・エラーができるようになった」という価値も加えたい。

情報を利用できることも価値ですが、そういった価値を享受した上での最終的な価値は、人間のアウトプットによってしか発生しないと思うのです。そのアウトプットをより多くの人が行えるようになったのは、ひとえに「元に戻せる」ことで「トライ・アンド・エラー」が可能になったからではないか、そう思うのです。

だから、アウトプットといった人間の創造を支援するシステムというものは、そういったトライ・アンド・エラーを支援するものでなくてはいけない。トライ・アンド・エラーを支援するためには、そもそも「元に戻せる」ものでなくてはいけない。システムの設計の根本として、考えなければいけない問題だと再認識したのでした。

ちなみに、時間はそういったシステムの外にあるので元に戻りません

「今年の大学受験に失敗したから、時間を巻き戻して再チャレンジ!」という訳にはいきませんよね。そういう訳で僕も元に戻らない時間を経て31歳になりました。

去年の誕生日に「この1年間は毎日ブログを書こう!」と思い立って1年間書き続けることにしたのですが、いろいろな人のご支援(ネタ提供)によって、無事1年間続けることができました。応援して下さった皆様、ありがとうございます。目標を白紙撤回(UNDO)することなく続けられてホッとしております。

このダッシュボードの計測誤差が怖いので明日もブログを書こうと思いますが、次の目標はどうしようか、まだ考えている最中です。

(追記)ちょっとした改修で計測誤差の心配はなくなったようなので、次のエントリは未定です!

  • 毎日ブログを書くと文章を推敲する余裕があまりないのがつらい
  • 毎日ブログを書くと1つ1つのネタが薄くなるのがつらい
  • 毎日ブログを書くと趣味のコードを書く時間を削られるのがつらい

という3つの問題点があったので、次の年度も建設的なアウトプットを続けられるよう、健全な目標を立てようかなと思っているところです。引き続き、このブログをどうぞよろしくお願いいたします。

あ、念のため、下にAmazonへのリンクを貼っておきますね・・・!

ほしいものリスト