Rso's Jotter

日々の開発の知見のメモやその他雑記

まじめに作らない技術

業務ではプロトタイプやら新規提案などでこれやりたい、あったらいいなという話は山ほどあるのですが、その中では本当に業務を改善するいいアイデアもあれば、とりあえず言ってみたけどその人がそう思っただけで他の人は全く不要だったみたいな話はよくあります。

そういういる/いらないを見極める技術は別途必要として、仮に何かしらのプロトタイプを作るにしても、なまじエンジニアとしてそこそこ経験があれば自分の得意な技術スタックで作りたくなってしまいます。

それはそれで問題ない場面もありますが、私はそれをやって以下の点を経験しました。

  • プロトタイプといえど、自分の思ってたより、ユーザーが期待している期日よりも時間がかかる。
  • プロトタイプで試してもらっている際の使用されたときの修正要望に想定以上に工数がかかる。その作業の多くがエンジニアでないと対応できず、業務チームに運用を引き継げない。

上記を踏まえ、事業として継続的に工数を投入できるのであればともかく、そうでなければなるべくまじめに作らず、出来合いのものでごまかすスタイルで反応を見ようとするようにしています。

そこでまじめに作らないパターンを書いてみました。

プログラミングをしない

そもそもコードを書かずにアイデアを実現できるのであればそれに越したことはありません。 世の中のノンプログラミングサービスを使って、さくっと作ってしまうという手があります。

代表的なノンプラグラミングサービスとしてkintoneが上げられます。 kintoneは簡単な案件管理やフォームみたいなものがつくれるので、要件さえあえば60点ぐらいのモノはGUIのみで作れます。 プロトタイプとの相性は良いと思われます。ポイントは60点で止めてそれ以上作らないことです。

kintoneの使い勝手については以前所感を書いたのですが以下のような感じです。

rso.hateblo.jp

また、モバイルのノンプログラミングサービスとしてはbubble などが挙げられます。

bubble.io

こちらは私はそこまで詳しくは知らないのですが、それっぽいモバイルアプリが作れるとのことです..

ノンプログラミングツールの最大の利点は、工数の短縮だけでなく、プログラムが書けない人に運用を引き継げるという点にあります。 プロトタイプが万一気に入ってもらえたら、一旦それをユーザに渡して試行錯誤してもらうという手法がとれます。

欠点としてはノンプログラミングツールでの表現能力には最終的に制限があるものがほとんどなので、作り込むにつれて辛くなってきます。 本格的に開発をするのであれば、プロトタイプを捨てて本開発に切り替えることを視野に入れる必要があります。

インフラを作らない

アプリケーションコードは自前で作るにせよ、それを動かすためのインフラを構築するのは予想以上に手間のかかる場合があります。 インフラ構築にかかる時間はユーザには見えないので、苦労の割にインパクトを与えることができません。

そのため、インフラの構築、運用はできるだけ省力化する必要があります。 インフラで真っ先に思いつくのはAWSかもしれませんが、AWSも慣れている人でなければそれなりに構築コストがかかり、それよりも おすすめなのが以下の3つです。

Heroku

PaaSとして アプリケーションコードをデプロイすればあとは勝手に動いてくれるので、インフラ層を気にする必要がありません。 また、Heroku Pipeline が絶妙に欲しい機能を提供してくれており、必要最小限の開発、ステージング、本番などのデプロイ環境をすぐに用意することができます。

Firebase

ウェブサービスがほしいものを全て盛り込んだサービス。認証、データストア、ファイルストレージ、ホスティングなど、一通り必要なものが提供されており、さくっと作れることに特化しています。

Netlify

静的サイトホスティングサービスで、PHPなどのサーバサイドは動かせませんが、フロントエンドの環境構築をこの上なく簡単に行ってくれるサービスです。 Githubと連携すればすぐにデプロイできるようになり、開発、ステージング、本番などの環境もすぐに作れます。 Nuxt.js などのSPAモードと相性が良いです。

世の中の素晴らしいライブラリを借りる

優秀なエンジニアは自分ではつくらず他からコードを借りてくるといいますが、自分がときたい問題に対して、既に世の中にある優秀なライブラリを適合させることができれば、 ずっと短時間で品質の良いものができます。問題は世の中のライブラリをいかに知るかですが、これは日頃の自分の道具箱をどれくらいもっているかによってしまいます。 ですが、最近はawesome-xxx という優秀なライブラリを集めたリポジトリがいくつかるので、そういうライブラリ集をストックしておくと良いかもしれません。例えば以下のようなものです。

さらに上記のようなawesomeシリーズを集めたリポジトリまであります。

github.com

暇なときにこういうリポジトリを眺めていると新たな発見があるかもしれません。

ワイヤーフレームでごまかす

これはどちらかというと作らない方の選択なのですが、なんとなくの紙芝居などの画面イメージを作って合意を得るという方法です。 私の使ったお手軽紙芝居ツールとしては Prott が挙げられます。

prottapp.com

ただ、ワイヤーフレームで合意を得るのは個人的にあまり効率的ではないと考えます。開発初期のワイヤーフレームで認識があうのはごく一部の部分しかないからです。 細かい話は個人的な新規サービスアンチパターンとして書いてます。

rso.hateblo.jp

まとめ

とくにまとめませんが、滝のように流れてくるユーザの要望を受けながら考えていることを書いてみました。