2012年03月23日

Ubuntuで販売伝票作成管理

Linuxには、経理関係のソフトが大きく欠けている。英語環境ならいくらかあるようだけれど、日本語環境だとぐっと少なくなる。それでも、妻が愛用しているExcel BというソフトはOpenOffice上でも稼働するテンプレートなので、Ubuntu 上でも動作する。これは小規模事業所の経理に強い味方だろう。この辺りの詳細は、こちらの記事に書いた。

ただ、ビジネスまわりのソフトが少ないのは無理もないのかなあと最近気がついた。というのは、多くの事業がそれぞれなりにユニークなので、実は汎用のパッケージソフトというのは案外と使いにくい。それでも法律上の要件がかっちりしている企業会計なんかはパッケージソフトが非常に役立つわけだけれど、商品管理や原価管理、伝票類の作成に関しては、それぞれの事業のそれぞれの特性に合わせてカスタマイズしなければならない部分が多くなる。となると、パッケージソフトよりも「エクセルで作っといてよ」という世界になりがちで、使えるソフトが少ないのはなにもLinuxの世界だけではないのかもしれない。

実際、世の中に見積書や請求書のエクセルテンプレートはあふれかえっているが、実用的なものは案外少ない。ひとつの理由はそれが必ずしも自分のニーズにぴったりあった書式ではないからだ。明細の書き方や単価の書き方など、それぞれの事業にはそれぞれの癖がある。汎用のものがうまくあてはまるとは限らない。

もうひとつの理由は、たいていのテンプレートがデータ間のリレーションを想定していないことだ。見積書に単価と数量を記入すると確かに請求金額や消費税を自動で計算してくれる。けれど、その数値は納品書や請求書には反映されない。まして、請求書の数値を積算して月間の売上を計算してくれるようなことはしない。それはスプレッドシートの役割ではなく、データベースの役割だからだ。そして、データベース型のアプリケーションは基本的には事業ごとに開発すべきものであって、テンプレートが転がっているようなものではない。

それはそうなのだけれど、データベースを利用した伝票処理システムの開発はたいへんだ。だから、私のところのような小規模な個人事業ではおいそれと手を出せるものではない。ということで、開業から5年ばかりは、エクセル上の手作業でこれら伝票発行の管理を行っていた。ただし、派遣でいろんな事業所での経験が豊富な妻が巧妙な運用形態を考案してくれていたので、プロジェクトの管理を専用のシートで行って納品書・請求書はそこからデータをコピー&ペーストして作成する方式になっていた。この方法だと明細や単価をいちいち個別に入力する必要がないので、誤りも発生せず、手間もそれほどかからない。そして売上の管理は元台帳の集計で確実に行える。小さな事業にはこんな方式が確かに似合っているのかもしれない。

けれど、本来こういった処理はデータベース的に行うべきだというのは明らかだ。本格的な開発でなくとも、たとえばアクセスやファイルメーカーのような簡単なパッケージソフトを導入して素人が構築するレベルでも、相当に使いやすいものができる。それはまだWindowsが3.1だった頃にAccessを使った経験や、その後、Macのバンドルで付いてきたFileMakerで会社の経理を組んだ経験から確実にいえることだった。だから、機会があれば少なくとも見積・納品・請求の3点の書類に関しては一括して管理できるデータベースを組みたいとずっと考えてきた。たまたま去年は受注があまりとれず、その分だけ仕事が暇だったので(笑い事ではないが)、このあたりのデータベース化にとりくんだ。このときの覚書は、過去記事の「LibreOfficeのBaseで販売管理」にメモしてある。

それから1年近くこのデータベースを使ってきたのだけれど、いろいろと不便なところが目立つようになってきた。たまたま今年のはじめにデータベースをいじる機会があって、その際にSQL文の基礎なんかも少しはわかるようになって、どこを改訂すればいいのかようやく見当がつくようになった。そこで3月になってから大規模な改訂をやったのだけれど、だんだん形ができてくると同時に、OpenOffice(LibreOffice)のBaseそのものに内在する欠点が障害になり始めた。
OpenOfficeのBaseは、処理のためにJAVAを使っている。詳しいことはわからないのだけれど、Ubuntuの場合、どうやらこのJAVAのバージョンの関係でBaseの処理速度が遅くなるらしい。別な系統のJAVAを使うように設定変更もできるらしいのだけれど、このあたりはよくわからなかった。そして、たとえ正しいJAVAを使ったとしても、しょせんはJAVAであって、AccessやFileMakerに比べれば処理が圧倒的に遅い。この遅さが致命的になる。

というのも、きちんとしたプログラミングのことなどなにも知らない私のデータベース構築は、基本的にトライアルアンドエラーだからだ。試行錯誤で「あ、なるほど、この方法ならうまく動く」というのを発見しながら前に進む。何回も処理をやり直して手探りをする必要がある。ところがBaseは処理が遅いので、この試行錯誤にやたらと時間がかかる。とてもやっていられない。

もう少しで完成というところまでいっていたのだけれど、細かな機能の実装のためにはやはりマクロを組まねばならないことが分かってきた。SQL文だけではいくら工夫しても処理しきれないプロセスがある。そこはOpenOfficeのマクロで処理しなければならない。うまい具合に、少し前にOpenOfficeのcalcでいくらかのマクロを作成する機会があって、ごく初歩的なところはなんとか通過していた。

けれど、Baseのマクロ処理に関しては、calcに比べて圧倒的に情報量が足りない。体系的にBasicを理解できていない私にとって、サンプルのコピー&ペーストから出発して改変していく方法が唯一のマクロを書く方法になる。だから、検索して出てくる情報が少ないのは困る。calcでさえExcelに比べれば情報は少なくて苦労するというのに、これではどうにもならない。

この処理速度の遅さと情報量の少なさに音をあげて、私は大きな方針転換をした。正式なデータベースであるBaseを使うのを諦め、その代わり、本来はスプレッドシートであるcalcを代用データベースとして使おうというわけだ。データの出し入れはSQL文ではなくマクロを使うことになるから、処理の上からいってもデータの安全性からいっても決していい手段ではない。ただ、Linux上でほとんど唯一素人がいじることができてかつそこそこ安定しているデータベースフロントエンドであるOpenOffice(LibreOffice)のBaseが自分にとってうまく使えない以上、やむを得ない選択だと思った。ある部分では大きな後退だが、実際にcalcやExcelをデータベース代用に使っている実例はけっこうある。たとえばこのエントリの冒頭で書いた経理ソフトのExcel Bだってそうなのだから。

ということで、組み上げたのがこちらにあるinvoices.odsという名称のファイルだ。一応、公開を前提に、自社仕様のところを若干変更して一般化し、さらに初期設定のためのダイアログを追加した。だから、事業形態が似ているような小規模事業所なら、ダウンロードして便利に使っていただけるのではないかと思う。

使い方や既知の不具合、さらに注意点や制限などは、別途記事を書くことにしたい。さらに余力があれば、マクロについての解説も付け加えたいが、知識のない私のことだから解説というよりも恥さらしにしかならないと思う。それでも、私と同じように手探りでなにかを作っていきたいという人の多少の参考になるのではないかと思う。

posted by 松本 at 14:45| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック