自分の使うツールで革命が起きた

晴れいつも通りの時間に起床して、朝はマクドナルドへ朝ごはんを食べに行ってきた。 いつものマクドナルドでいつものメニューを食べてくつろいでいるが、今日はKindleで読書をするのではなく、スマホいじりで時間を潰してしまった…… スマホいじってもTwitter見るとかしかやることないので、よくよく考えたら結構無駄なことをしていると思う。

今日は自分の使うツールの利便性向上のために新機能追加したりしていたのだけど、WEBに関する部分は今日の改修によって作業効率がものすごいアップした。
作業の流れとしては、Photoshopを使って、レイヤーを20個くらい作って、それぞれをエクスポートしてJPGにし、ブラウザで作っているツールの対応したリンクをクリックすると、ファイル選択ウィンドウが出てくるので、特定の画像を選択してアップロードする、という感じの流れ。
2ヶ月前、先月にもアップデートしたのだけど、2ヶ月前までの7ヶ月くらいは、ずっと初期のまま使っていた。
2ヶ月前のアップデートでは、ファイルを1つではなく、複数選択できるようにした。
先月のアップデートでは、対応したリンクをクリックしたらモーダルウィンドウで参照ボタンが出てきて、その参照をクリックしファイルを選んで、送信ボタンを押していたのだけど、クリック回数多いし無駄なので、リンククリックした時点でファイル選択ウィンドウを開かせ、ファイル選択した瞬間に送信するように、送信ボタン自体を削除してしまった。
もし間違えたファイルを選択してしまったら、それはそのまま送信されてしまうが、削除のフローも作ってあるので、削除すればいいだけの話。 これらの改善でも作業効率が結構上がったのだけど、60秒かかる作業が45秒になるとか、それでも十分だとは思うのだけど、130%くらいの改善にしかなっていなかった。
だが、今回のは驚異的だった。 よく考えてみたらPhotoshopでレイヤー作る時点で自分の作った命名ルールに基づいてレイヤー名を決めているので、エクスポートされるJPGもそのルールに基づいた名前になっている。 その名前と、WEBツールのリンクでの名称が一致しているので、画像名=どのリンクをクリックして送信すべきか、というのが判断できることになる。
Photoshopの仕様で、同じレイヤー名だった場合は「地球.jpg」「地球-1.jpg」「地球-2.jpg」のように番号が振られていく。 この辺りの文字列処理はプログラムが得意な分野なので、余計な連番などを除去しつつデータベースに該当名称のIDを問い合わせて、そのIDに基づいたアップロード処理に送ることで実現できた。
自分も人間なので、たまにレイヤー名をtypoしたり漢字で書くべきところを平仮名で書いてしまったり、と人間のミスも一応カバーしなくてはならない。
画像名を元にデータベースに問い合わせても、対応するものがなかった場合の処理というのを作ればいいだけなのだけど、その処理の方が作るのが面倒だった。
失敗した画像は、失敗フォルダに保存して、処理終了後そこに保存されている画像一覧を表示するページにリダイレクト。 失敗画像が一覧で並び、元のファイル名も表示させているので、何がtypoなのか判断して、Photoshopのレイヤー名を直す。 ブラウザ側では、そこから手動でどの項目にアップロードしたいのかをセレクトボックスで選べるようにしたので、選んで進むと、失敗フォルダから本来あるべき場所へ画像を移動させてデータも登録して、って感じでやっている。
なので、ファイル参照ボタンを1回クリックして、すべての画像を選ぶだけでOKになった。 今まで60秒かかっていた処理が、僅か2秒くらいで終わるようになった。 処理速度は30倍か? これほどまでに効率化できるとは思わなかったし、この改善を実装するのに40分くらいしかかかってないので、もっと早く思いつくべきだったと思っている。
画像保存にはConoHaのオブジェクトストレージを使っており、プログラムと同サーバーの場合に比べると、転送や応答がちょっと遅いが、それでも素晴らしい改善だった。
今までに25,000枚くらい画像をアップロードしているので、最初からこの改善が入ったツールを使っていたら、多分24時間以上も無駄な時間を使わずに済んでいた可能性が高い。 日々改善とひらめきがあるのみだ。