人に使ってもらえるウェブサービスを作れるようになるまでは長い道のりです。作るのには技術を覚えたり、実際にコードを書いたりと、結構長い時間がかかります。以前に、簡単なことは20時間あれば出来るようになるというようなタイトルの本がありましたが、実際に動くサービスを作るには、プログラミングを覚えるところから始めるとしたら300時間くらい(一日3時間として100日)くらいは最低限必要と覚悟しておいた方がいいでしょう。多分、実際にはもっともっと必要で、実際にちゃんと動くサービスを世の中に公開してみようとしたら、ちょっとしたものでもきっと1000時間くらい(1日3時間で300日)はかかります。
しかし、それでもプログラミングは、身につけたらその時間を超えてあまりある価値があると思われます。1000時間くらい使ったとしても、元はきっととれてます。ソフトウェアは問題解決の魔法のツールです。どんな大量の計算も高速で、あっという間に、正確無比にやってのけます。近年、騒がれているFintechも、大きな視点でいうと効率化が可能な銀行など金融機関の業務を、安価で大量に正確に処理できるITの技術で置き換えようというものです。ソフトウェアが書けるということは、この魔法のような力を身につけることを意味するのです。
しかも世の中のITの技術の進歩はすごいものがありますから、上手くその技術に乗って使えればアイディア次第で十分に面白いものを作れると思います。ソフトウェアは問題解決のツールです。
今回は会計に関係するウェブサービスを一つ作って世の中に提供してみるまでの経過とポイントと思われるものを簡単にまとめて見ました。
技術を選ぶ・覚える
覚える技術もたくさんあります。沢山あるように見えますが、使っていれば自然に覚えます。とりあえず始めましょう。
とりあえず今の主流なやり方でウェブサービスを作ろうとすると、最低限、サーバー周りでLinux、データベースの使い方(MySQLかPostgreSQL)、サーバーサイドで使う言語(PHP、Ruby、Python、Javaのどれか一つ)、スマートフォンで使えるようにするなら、AndroidかSwift、ウェブ・ブラウザーならHTMLとJavaScript(またはjQuery)を覚える必要があります。
C#とWindows Serverという組み合わせも選択肢としてはありますが、Windows Serverでのサービスを不特定多数の世の中に提供するとライセンス料がかかります。以前デルの人にも手伝って調べてもらったことがあったのですが、どのライセンスが必要でいくらかかるのかわかりにくかった印象があります。しかも、最初は利益が出るかどうかわからないサービスを始めるのに最低でも何10万円ものサーバーライセンスを使うのは、ちょっと現実的ではない気がしました。
しかし、今はAWSでMS SQL ServerとWindows Serverの組み合わせがクラウドで使えます。何十万円というサーバーのハードウェア本体とライセンス料を一括で払う必要がないのでリスクは大分減りましたが、それでも他のLinux OSとデータベースの組み合わせに比べるとずいぶん高い感じがしました。これもそんなに少数派にならなくて良いので、素直にメジャーな流れに合わせておきましょう。
その他に、今はサーバーを自分で買わずにクラウドで使うのが主流です。私はHerokuとAWSを使ったことがありますが、AWSはとても使い勝手が良いように思います。サーバーではE2とストーレッジとなるs3があります。E2はWebサーバーとして使えますが、その他にデータベースをインストールすることもできますし、画像ファイルなどを保存するストーレッジとしても使えます。最近AWSはLightsailという軽量のサーバーを提供し始めました。5ドルで20ギガのSSDのサーバーを使えるのですが、ものすごく早いです。自分で数十万円のハードを買うよりSSDですのでよっぽどスピードが早いです。ですので、最初はLightsailで始めるのが良いと思います。
しかも、インスタンスを何個も立ち上げては消去できるので、インストールに失敗した場合にも、すぐにやり直すことができます。ウェブ・サービスを立ち上げる過程で、サーバーにプログラムを追加していくうちに、エラーを吐いてどうにもならなくなってしまうことがよくあります。新しいサービスを開発するときはどうしてもこのような過程はいくつも通らなくてはならないと思うのですが、サーバーをハードで買ってきてしまうと、一からインストールし直すことになってしまい、時間ばかりかかってしまい、とても大変になってしまいます。モジュールのインストールからやり直しなんてことを何度もやってしまうと、時間ばかりがかかってしまい、スピードが重要なスタートアップ時には自殺行為です。サービスが立ち上がることは、個人の力でもう不可能になってしまうと思います。
私が覚えた言語は、
VB.NET
C#
Python3
SWIFT
Java
JavaScript
HTML
SQL
OS周りの使い方も覚える必要があります。
Windows
IIS
Linux
ツール
Django
Git
Subversion
その他、きれいな読みやすいコード、メンテナンスのしやすいコードの書き方など。
よく、Rubyがいいか、PHPがいいかなんて論争をやっていますが、私は、RubyやPHP、Pythonであればどれでもいいと思います。RubyにはRubyOnRailsという素晴らしいフレームワークがあります。PHPにはCakePHP、PythonにもDjangoなど数多くの良いフレームワークがあります。どれを使ってもちゃんと動くものはできると思いますが、開発の際にはエラーにぶち当たり続けるので、文献が多いものがいいと思います。日本ではRubyな比較的メジャーですが、海外ではPythonやPHPの方が圧倒的にメジャーです。英語が読めるなら日本であまりメジャーでないけどPythonとDjangoの組み合わせが良いと思います。そのほかに、SQLAlchemyというとても使いやすいORマッピングのツールもDjangoと同時並行で利用できます。
そんなことよりは、Javaなどの静的型付け言語を使うのか、RubyやPythonなどの動的型付け言語を使うのかをよく検討した方がいいと思います。こっちの方がよっぽど後々のインパクトが大きいです。静的型付け言語はコンパイルの段階でエラーを検出してくれるので、バグが早期に発見しやすく、結果としてバグの少ないソフトウェアが作りやすいと思います。PHPやRubyなどのスクリプト言語は手軽に始められるので最初は早いのですが、ソフトウェアを書く時間の半分以上がバグをとる時間だとすると、バグを早期に発見してくれるJavaなどの静的型付け言語の方が結局は効率が良いということも言えるのではないかと思います。
開発の体制
一人よりも複数人がいいように思います。税理士業務をやっていても思うのですが、不在時の突発的な事項に対するバックアップ体制やチェックなど、二人以上の方がサービスに安定感があり、私の経験としては結果的により良いサービスが提供できているように感じます。ソフトウェアも同じだと思うので、何もかも一人でやろうとせずに上手く役割を分担させた方が、良いものがより早く提供できるのではないかと思います(想像です)。
システムは開発していると細かく手がかかります。一人でやっているとそういう細かいところが面倒くさくなってきてしまうので、そういう飽きを防止したり、お互いにサポートしあえるためにも一人アシスタント的な人に手伝ってもらうのが良いのではないかと思いました。
私の考えではアシスタントになっていただこうという人が、最初からそれほど詳しくなくても構わないと思っています。やっているうちに覚えてくるので、なんとかなります。それよりは、人件費が高いからとか、十分な知識のある人が採用できないからといって、ずっと一人でやっていってしまう方が問題だと思います。ずっと一人でやっていってしまうと、ローンチ出来たかも知れないサービスが結局、開発の途中で頓挫してしまい公開できずに終わってしまうという結末になりがちです。余計高くつく事になりかねません。
何を作るか
これが一番難しいです。そのうち、まとめて書きたいと思います。