Loading...
コラム

本当の意味で「効率化」する

仕事の「効率化」とはなんだろうか?
 
「効率化」という名の下に非効率なやり方で仕事をしていないだろうか?
これは考えてみる価値のあることだ。
 
例えば、プログラマではない顧客がある面倒くさい問題を抱えているとする。
 
顧客が抱えている問題をざっと整理すると、
 

  • ある条件で抽出したデータの一覧がWeeklyで必要
  • そのデータのもとになる情報はCSVでしか入手できない
  • そのCSVの中には1万件以上データが詰め込まれている
  • Excelで開こうとするとするとパソコンが返事をしなくなる

 
さて、この顧客の問題を解決しようとしている2人の人物に登場してもらおう。
 
一人は血気盛んな駆け出しのフリープログラマA君。
彼はPHP, JavaScript, CSS3, HTML5など、Webアプリケーションならなんでもござれ。
経験は少ないが、やる気だけは誰にも負けないというタイプの若きプログラマだ。
 
もう一人は僕(中村)。
得意なのはPerlという枯れた言語だが、あまり開発環境にこだわりはなく、手早くローンチできればなんでもいいと思っているおっさんプログラマ。
 
この2人が「来月は新しいMacを買いたいなぁ」というちょっと不純な動機でこの仕事を受けたとしよう。
 
 

A君の場合

 
彼は彼の得意分野を活かして小さなWebアプリケーションを開発することにした。
 

  • 例のCSVをブラウザ上にドラッグ&ドロップ
  • サーバサイドで情報を処理
  • フィルタし終わった結果をブラウザ上に表示

 
これを顧客は数回のクリックで完了することができる。
 
早速A君は仕事に取り掛かった。
 
*この仕事(初期の制作〜ローンチまで)に費やしたコストを時間で換算して追記してみた。

  1. このアプリの素晴らしさを顧客に説明して注文をもらう(顧客:30分、A君:1.5時間(資料作成含む)、計:2時間)
  2. Webアプリケーションの作成(サーバの準備、データ処理の実装、ログイン画面、CSVアップロード画面、データビュー・・・)(A君:10時間)
  3. Webアプリケーションの導入説明(顧客:30分、A君:1時間、計:1.5時間)
  4. CSVのダウンロード〜A君のWebアプリケーションを使用して目的のデータビューを表示(顧客:45分 *慣れてないため)

 
すべての時間的コストを合計すると14.25時間かかっている。
ここにはダウンタイム(作業の途中で考え事をしたりして手が止まっている時間)は含まれていないから実際の体感はもっと時間がかかるだろう。
それに(アプリケーションを開発した経験がある人なら痛いほど分かると思うが)こんなにスムーズに行くなんてことは滅多にない。
現実はやれデザインが気に食わない、動作が遅いなどといちゃもんを付けられ、結果として得られるデータビューは変わらないのに諸々のプロセスでやり直しが発生する。
そしてやり直すたびに説明のための顧客対応なんかが雪だるま式にコストを倍増させる。
 
僕的に思うこのプランの良い点を(頑張って)挙げるとすれば、
 

  • A君にとって良い人生経験となる
  • (アプリが正常に稼働していれば)A君は何もしなくて良い
  • 例えA君がアプリ作成にこりて転職しても顧客に納品したアプリはとりあえず動く

 
そのくらい。
ただ2点目、3点目に関しては、疑問が残る。
アプリが正常に稼働していれば?これは単なる希望に過ぎない。CSVの仕様変更など、不具合につながる外的要因も避けられない。
そしてこのアプリがそんなに未来永劫必要だろうか?
実際そうではないだろう。必要とされる寿命は随分と短そうだ。
 
 

僕の場合

 
僕はこの手の仕事を現実世界で請け負っている。
 
僕のプランはこうだ。
 

  • 顧客と打ち解けて信頼関係を結ぶ
  • CSVのダウンロード(システムへのログインが必要)から所望のデータの作成まで引き受ける
  • 顧客と決めたやり方(毎週水曜日にメールに添付で、など)に沿ってデータを渡す

 
A君と同じく時間で各作業のコストを見てみよう。
 

  1. 顧客との打ち合わせ(顧客:30分、僕:30分(資料という程のものは要らない)、計:1時間)
  2. ローカル環境で操作するスクリプトの作成。多分SQLを数行、納品用のデータを整えるPerlスクリプトを少しで済むだろう(僕:1時間(テスト含む))
  3. CSVをダウンロード〜スクリプトで処理〜書き出したデータを顧客に送信(僕:10分)

 
時間的コストの合計はなんと2時間10分
 
FTPやメール送信を自動化する仕組みを作って、更にWeeklyで自動実行するするようにもできるが、初回ローンチはバグも出やすいのでこの程度の最適化で十分だろう。
 
このやり方にはいくつかはっきりとした利点がある。
 

  • 顧客は何も手を煩わすことなく、ほしいデータを受け取ることができる
  • 僕(開発者)は自分のペース、自分のやり方で仕事ができる
  • 何より外的にしろ内的にしろ状況の変化に対して柔軟に対応できる(そして無駄がない!)

 
 

「効率化」を見直そう

 
例に挙げた2つのやり方を見比べてみてどうだろうか?
 
念のため断っておくが、僕はWebアプリケーションの開発は悪だと言っているのではない。
なんでもかんでもWebアプリケーションで解決しようとするのは間違いだと言いたいのだ。
手段を目的と勘違いしてはいけない。
 
物事には、その要求に合わせた最適な「効率化」が存在していて、それを見つけ出すことがより無駄の少ないビジネスに繋がるということだ。
 
 
 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA