Pythonで領収証を管理するWebアプリを作成する

VPSを契約した直後、予想外に忙しくなり数か月プログラミングから離れていましたが、最近になって時間がとれるようになったので、Webアプリの作成を再開しました。

忘れていることも多くWebアプリの作成に時間がかかりましたが、やっと動くようになったので、ベータテストとして公開してみようと思います。

領収証管理(ベータテスト)

https://receipt.dattesar.com

Webアプリの使い方

操作説明書

特に説明もいらないほど、機能は少ないです。アップロードしたファイルの名前を変更して返す、基本的にはそれだけです。

電子帳簿保存法の絡みで、必要になるかもと思って作成した程度の簡単な操作説明書です。

スマホ

一応、スマホにも対応しています。

領収証をスマホで取って、返ってきたファイルをOneDriveやDropboxなどのクラウドストレージに保存する。そんな感じで使うと便利かなと思っています。

電子帳簿保存法では、書類を電子化するのに期限が設けられているようなので、書類を受け取ったらとりあえず電子化するのに、スマホは便利なんじゃないかなと思っています。

ただし、スマホで書類の写真を撮る場合は、解像度等の適用要件に十分注意してください。

目指したのはメンテナンスフリー

趣味で作ったWebアプリなので、メンテナンスに時間をとられたくありません。致命的なバグが見つかったり、セキュリティ上の問題が発生しても、修正できそうになかったら閉鎖したらいい、という程度に思っています。

作成当初は、サーバーに領収証を保存しようと考えていましたが、セキュリティ上もサーバーのスペック上も難しいので、サーバーに領収証を保存するのは諦めました。

セキュリティの知識があまり無いため、データ流出のリスクがあります。そのため、出来るだけ個人情報を預かりたくありません。登録に必要な個人情報といえるものは、メールアドレスだけですが、出来るだけ流出しても問題のないメールアドレスで登録してください。

想定してるユーザー

今や、クラウドで領収証を保存して管理するWebアプリでさえ、無料で公開されています。会計ソフトと連携出来たり、すごく便利なようです。

しかし、私にはクラウドの会計ソフトが合わなかったので、会計ソフトを変えずに領収証管理だけを電子化したいのです。電子化出来たら、領収証の管理はローカル環境でも問題ありません。

そんな感じで、このWebアプリを利用することを想定してるユーザーは、私です。まさに、自分のために作ったWebアプリです。こんな不便なWebアプリは需要がないだろうし、このブログへの訪問者数から考えると、10人も登録したら良い方だと思います。

Webアプリの作成で難しかったこと

色々な機能や書き方を試して詰め込んだので、プログラム全体としての統一性はなくなりました。一回大まかに作ってみて、付けたい機能を追加していったので、そのたびにテストと修正をするのが大変でした。プログラミングは最初の設計が大切だということがよく分かりました。

1位 CSS

CSSが苦手なこともあり、とても難しかったです。SemanticUIというCSSフレームワークを使っているのですが、それでもCSSは難しい。

すぐに崩れるし、調整するのに時間ばっかりかかります。CSSに時間をかけていると他のことが出来なくなるので、適当に終わらせました。

2位 サーバー関連

CSSは多少崩れても何とか動きますが、サーバー関連は設定を正確にしないと動きません。エラーが出ると、どこが間違っているのか発見することから始めるので、初心者にはかなり難しいです。エラーメッセージを読んでも、何が悪いのかわからない、そんなことの連続です。

Webサーバー、アプリケーションサーバー、データベース、パーミッション、Linuxなど要求される知識も幅広く、設定するのにものすごく時間がかかりました。

3位 Javascript

プログラミングをPythonから始めたので、Javascriptは少し難しく感じます。当初は、JavascriptとjQueryの違いも分かっていませんでした。今でもよく分かっていませんが。

4位 Python

Webアプリの作成で一番簡単だったのは、Pythonでのプログラミングです。さすが、初心者の味方Python。プログラミング初心者でも、とりあえず動くようにできる。初心者にとっては、この動くプログラムってことが、ものすごく重要です。動かないと嫌になってすぐ挫折しますから。

私にとってPythonは、自作PCやプラモデルみたいに既成の部品を組み合わせると、それっぽいものが完成するというイメージです。PythonでWebアプリを作成できたからといって、プログラミングが出来るようになったとは思っていません。

実際、このWebアプリもFlask、SQLAlchemy、Jinja2が無かったら、動かすことすら出来なかったと思います。