コーディングは何を作るか、作り始める前の一歩下がった客観的な検討段階が肝心。Djangoが最近2.0にバージョンアップしてました。

Djangoがいつのまにか1.x系から2.0にバージョンアップしてました。新しい相続税の計算サイトをDjangoで作ろうと思ってチュートリアルを見て、コードをその通りに打ってもエラーが出ます。なんでかなと良く周りを見たら、なんとそんなことになってました。

しかも良く読むと1.x系からの移行は、一手間かかりそうで自動ではないようです。今後新しく作るサイトは2.x系が良いに決まっているのですが、これまでのものを2.x系に移行するのは手間も大変そうなので勇気がいります。どうしたものか思案中です。

コード自体はPython3で作っていたのでDjangoは1.x系でも2.x系でも動きます。なのでPCを入れ替える必要はないので、そこはせめて良かったと思います。

今まで1.x系をやってたのでまた多少の学習コストはかかりますが、バージョンは新しい方が良いに決まっているので、頑張って新しい方のバージョンでやってみようと思いました。

そういえばPycharmも2017.2 から2017.3に変わっていました。2017.2と2017.3は2017年2月のバージョンと2017年3月のバージョンなのかと思っていたらそうでもなくて、随分と機能がアップしているようです。Djangoの2.0にも対応していると書いてあるので、早速バージョンアップしようかな。

最近(やっと!)わかってきたのですが、システム開発で一番難しいのは、作ることではなくて、何を作るかです。プログラミングが好きなのでコーディング自体とそれに伴う調べ物は苦にならないのですが、作ったものが誰にも使われないものになってしまうと、それまでに投下した膨大な時間を考えると悲しくなってしまいます。最近作ったWEBサービスでレシートを写真でとるとそれを私たちの方で(人間が)仕訳に変換すると言うサービスがあります。確かにレシートを写真でとると仕訳にしてくれるサービスは便利ではあると思うのですが、そう言うサービスを求めるのはどちらかと言うと個人事業者です。会社でも数人規模になってくると、事務の人がいてまとめてくれたりするのでそこに不便を感じることはあまりないかもしれません。つまりサービスがあまり必要とされていないところに時間をかけてWEBサービスを作ってしまったのです。

私たちの仕事は主にどの商品やサービスが儲かっているか、どこに不効率があるかなどがわかるようにするための会計情報を提供することです。少なくとも今のお客様はそう言うものを求めているところが多いです。

そう考えると今回作ったサービスはちょっとピントがずれてました。こうなってしまった以上、ターゲットとするお客様の層を変えるか広げるか、もしくは今のメインのお客様が必要としそうなものをよくよく考えて開発するかしかなさそうです。一回開発を始めてしまうととりあえずは完成するところまで頑張ってしまうので、時間を大量に使ってしまいます。

サービスを作りまくるのも腕を上げるためにはいいとも思うのですが、やっぱり貴重な時間を大量に無駄にする前に、このコンセプトで良いのか良く考えてから作るのが大事なように思いました。例えば紙に書いて一旦客観的に見てみるとか、傷が深くなる前に、始める前の一工夫が大事だなと思いました。

 

システム開発廃人になりそうだった

システム開発をやっていると楽しくて時間なんてあっという間に経ってしまうのですが、やりすぎには注意です。

プログラミングは、何かが出来ていく過程が面白くて、作ったものが実際にちゃんと動くと得も言われぬ全能感に包まれます。しかし、気を付けないと普通に200時間、300時間使ってしまいます。この時間が本当にもったいない。

世の中で必要と思ったものを作っているのならいいのですが、下手をすると凝ったエクセル作るのと同じで、自己満足以外の何物でもなくなります。

今、事務所内での請求書発行にかかわる業務は、2人で1-2日かかっています。先日これを聞いてびっくりして、なんとかしなくては、これはシステムで効率化しようと早速この業務をシステム化しようとプログラミングをはじめました。段々できてくると気づくのですが、手間だけがかかって業務が余計めんどくさくなるようなシステムを作りそうになっていることに気が付きます。

あぶない。あぶない。はてさてどこで道を間違えたのか。

まずいけないのは、まずシステムありきの考え方。必要無いのに無理やりシステムを作ってしまいがちです。先の例でいえば、エクセルで十分に間に合っているのにシステムが「作りたい」からシステムを作り始めると、ろくな結果になりません。

逆に世の中にあってある程度普及しているシステムは、その業務に関してニーズがあることになります。人が使っていてそれなりに売れているという事は、そのシステムにお金を払ってでも導入したメリットがあるという事です。

請求書の発行と会計データへの連動は、弥生販売というソフトでも、その他にも色々なソフトで実装されています。つまり実需があるのです。

と言う事は、やるべきことは、次の3つのうちの1つ。

1) 市販のシステムを使う。
2) 担当者の業務を良く聴いて使いやすいシステムにする。
3) 何もしない。

どれも魅力的な選択肢です。このうちでどれを選択するかの考え方ですが、

まずは、現状のエクセルからシステムに替えることによって、どれくらいメリットがあるか(時間がうくか)と考える。 → メリットがなければそのままでいい。
市販のシステムで置き換えることが出来ないか、市販のシステムを使う場合コストはいくらか。→ 高くなければ買った方が(時間的にも)絶対安い。
自社の業務に合わせてシステムを作る必要があって、どうしても市販のシステムでも間に合わない場合には、自社で作るがそれは最終手段とする。

というような考え方でしょうか。

私もシステム開発には人生で数千時間をかけてきたので、何か働ける時間をすごく無駄にしたように感じる時もあります。この時間を他の事に使えばもっともっといろいろな事が出来たように思ってしまうこともあります。が、あまり深く考えず良い事もあると思って前向きに行きましょう。

中小企業成長するために自社で専用のシステムを開発すべきか、それとも市販のソフトで済ますべきか?

定番的な業務の場合

世の中で必要なことは人によってもそれほど大きく変わらないので、やっぱり既存のものを使うのが基本でしょう。例えばよくある必要な機能といえば、

顧客管理(SalesForce Zoho)
会計(弥生会計、freee、Quickbook)、
在庫管理
請求書の発行と売掛金管理
出退勤の管理と給与計算
タスク管理

などがあります。

この辺は定番業務なので、ソフトウェアを売ることが目的なのではない限りわざわざ自社でソフトを作る必要は無いでしょう。世の中には素晴らしいものが沢山ありそうです。ただ、ソフトウェアも人が作るものなのでどれも自分が100%満足することはありません。弥生会計はデスクトップのソフトなのでクラウドではまだまだ出遅れています。私の仕事が会計事務所なのでちょっと知っているだけですが、売掛金と在庫管理のソフトでは弥生販売と言うのが世の中で結構使われていますが、機能が少ない事や操作の仕方にわかりにくかったりなど不満に思う事が多々あります。

ソフトウェアの開発が出来る人なら一念発起してこれらのソフトを超えることはないにしても、これらのソフトが実現できていない不便な事を補うソフトを作ることは出来ると思います。ただ、基本は出来るだけ自分で作らず世の中にあるものを使うのが良いと思います。表計算やメールのソフトを自分で作る意味はほとんど無いと思います。

自社の業務そのものである場合

ネットのオークションであったり、人材マッチングの仕事であったりなど、自社の業務や強みそのものがそのソフトウェアでやられている場合は、ガンガンと開発を進めていく必要があります。エンジニアを外注でやる場合もありますが、ノウハウの蓄積が必要なので社内でエンジニアを持つ場合がほとんどです。

こういう会社は自社の強みが確立しているので、収益性が高いことが多いです。私のお客様を見てもその業界で一定の地位を確立してしまっていることが多いです。その業界で知らない人があまりいないくらいになっていることも多いです。忙しいけど儲からない、いわゆる「貧乏暇なし」という状況からは完全に脱け出ています。

中小会計事務所の場合

ちょっとシチュエーションがニッチすぎますが、どの中小企業もその会社独特のプロセスややり方があると思います。私の事務所でもそうです。

お客様からいただいた郵便物の日付と内容の記録(写真付き)、課税売上高と税務署に対する届出書の管理、過去の重要な打合せの記録や留意点のメモ、見積もりなどを自社システムを作って、一つのシステムで一括管理して居ます。そのお客様の情報をまとめて見れるのでとても便利です。

社内ネットワークならPCのブラウザーからでも見れるので、お客様と電話で話ながらでも必要なすぐに情報が出せるので便利です。

システムの内容は一般的でもありますが、会計事務所独自の部分もあり、市販ですべてのニーズを満たすものは売っていなさそうです。こう言うシステムは自社で作った方が良いのでしょうか、それともエクセルやEvernoteなどの既存のシステムを工夫して使って自社開発は避けるべきなのでしょうか。

確かに時間もコストもかかります。ジュニアなエンジニアでも一人を社内で雇用すると500万はかかります。エンジニアの技術が上がっていけば給料も上げて行かなければいけません。システム開発だけでなく、他にも社内のIT周りの仕事をしてもらえるとしても、この固定費は中小企業にはべらぼうです。業務の改善で年間に500万円分以上の効率化やメリットを出すのは相当に大変ですから、ある程度、社内で規模の利益が採れない場合はやるべきでないのでしょう。

このような状況でやるべきことは、きっと、社長がITツールを個人的にも勉強して、出来るだけ既存のものを使いこなすようにすることでしょう。

それでも、システム開発は一度開発したら、(メンテやアップデートが少しは必要ですが)後は勝手に動いてくれます。システムは長い時間ではメリットが少しずつ積み重なっていくものなので、人と違う事をしたいのなら、自社の成長とともにシステムも成長させていくのもありだとは思います。

それより今はVBAやマクロ、PythonやC#など結構簡単に動かせる言語も多いです。ちょっとずつ手作りして細かい事務作業や定番業務を自動化して効率化していくのはあり(というか必要?)だと思います。

一応の結論

一応の結論ではありますが、こたえは一択で、大概の場合、ソフトは既に世の中にあるのでそれを使うのが良いのでしょう。
自社で開発すると、プログラマーも必要だしインフラ周りの人も必要です。ただ、私がプログラミングが好きだという事もあるのでひいき目に見ているのかもしれません。出来るだけシステム開発を自社でやりたいと思っていますが、やらないで本業に注力するのが賢明な選択と言うことになりそうです。

これは安くて画期的。格安のWindowsサーバーがAWSで利用できるようになりました。

アマゾンのウェブサービスAWSで格安のWindowsサーバーを利用できるようになりました。最近久しぶりにAWSのLightsailの画面をみたら、なんとWindowsの文字があるではありませんか!しかも月10ドルから始められるとのこと。これなら年間でも120ドルで、Windows Server OS付きのサーバーを30万円くらい出してハードウェアで買うよりも圧倒的に安いです。

実際に試してみたのですが、10ドルのコースはメモリーが512MBしかついていないので遅くてちょっと使う気になりません。次に安いコースは月に17ドルでメモリーが1GBです。これも試してみましたがやはりちょっと遅いです。結局標準的なコースは月30ドルのコースで、メモリーも2GBついています。このコースはMS SQL Server 2016 Expressがついてきます。いままでC#やVB.NETとLINQを使ってシステムを構築してきた人には、既存のシステムを活かすうえでも十分に選択肢になるのではないでしょうか?

私の事務所では自作のC#で作ったお客様情報の管理システムがもうかれこれ7-8年動いているのですが、これを機会にオンプレミスのサーバーではなくて、稼働が99.999x%保証されているクラウドのサーバーに移行してみようか検討しています。