「クラウドは怖い」という誤解を解く。

世界最強のインフラ「AWS」と、決済情報を「持たない」という安全設計

「大切な帳簿データを、Web上に保存しても大丈夫なのか?」
「ハッキングされたり、データが漏れたりしないか?」

お客様から、このようなご質問をいただくことがあります。その感覚は経営者として非常に正しいものです。
しかし、結論から申し上げますと、「自社のパソコンの中にデータを置いておくよりも、クラウド(本システム)の方が安全」であると私は考えています。

なぜ個人開発のシステムでそこまで言い切れるのか。
それは私がセキュリティの天才だからではありません。
「世界で最も堅牢な金庫」の中に、システムを置いているからです。

1. データの保管場所は、Amazonの巨大金庫(AWS)

当システム「nsra-keiri」は、PythonAnywhere というプラットフォーム上で稼働しています。
そして、そのPythonAnywhereが動いている土台(サーバー)は、Amazon Web Services (AWS) です。

AWSは、Amazonが提供するクラウドサービスで、以下のような組織が利用しています。

  • 米国防総省(ペンタゴン)
  • NASA(アメリカ航空宇宙局)
  • 日本の大手銀行や政府機関

つまり、このシステムのデータは、私の自宅のパソコンに入っているわけではありません。
世界中の政府や金融機関が信頼を寄せる、24時間365日、武装した警備員と高度なサイバーセキュリティに守られたデータセンターの中に厳重に保管されています。

個人でこれと同じレベルのセキュリティ環境(物理的な警備や防火設備含む)を構築することは、不可能です。
だからこそ、私は「自分でサーバーを作る」のではなく、「巨人の肩(AWS)に乗る」ことを選びました。

2. 枠組みとしての安全性(Django)

場所が安全でも、鍵が開いていては意味がありません。
システムの構築には、InstagramやPinterestなど、世界規模のWebサービスでも採用されている Python / Django(ジャンゴ) という枠組みを使用しています。

Djangoには、Webシステムへの攻撃として代表的な「SQLインジェクション(データの盗み見)」や「クロスサイトスクリプティング(不正なプログラム実行)」を防ぐための防御機能が、最初から標準装備されています。
私がゼロから防御壁を作るのではなく、世界中のエンジニアによって鍛え上げられた「標準の防御壁」をそのまま採用することで、高い安全性を担保しています。

3. 「決済情報を持たない」というリスク管理

もう一つ、皆様が心配されるのが「クレジットカード情報の漏洩」です。
これに対する当システムの回答はシンプルです。
「そもそも、お客様のクレジットカード情報を、当システムのデータベースには一切保存しない」という設計にしています。

現在の運用:銀行振込

現在は、最も確実でアナログな「銀行振込」のみを採用しています。
システム上でお金のやり取りが発生しないため、カード情報が漏れるリスク自体が物理的に存在しません。

将来的な運用:専門家への委任

将来的にカード決済を導入する場合でも、Stripe(ストライプ) などの世界的な決済代行会社を利用します。
カード番号は決済会社の高度なセキュリティ下で処理され、当システムには「決済が完了した」という信号だけが届きます。

「危険なもの(機密情報)は自分で持たず、プロに預ける」。
これが、現代のWebシステムにおけるセキュリティの鉄則であり、私が徹底しているポリシーです。


セキュリティとは、「絶対に壊れない壁」を作ることではなく、「信頼できる場所に、正しい方法で保管する」ことです。
どうぞ安心して、あなたの大切なデータをこのシステムにお預けください。

クラウド上の頼れる存在、PythonAnywhere。

開発者が押さえておくべき「3つの神器」と、エラーとの付き合い方

Webシステムを自作する際、多くの人が躓くのが「サーバーへの公開(デプロイ)」です。
AWSやVPSは自由度が高い反面、セキュリティ設定やOSの管理など、開発以外の知識が膨大に求められます。

私が「nsra-keiri」の運用基盤として選んだのは、PythonAnywhereでした。
その理由は、余計なインフラ管理を削ぎ落とし、「コードを書くこと」に集中させてくれるからです。
今回は、このPythonAnywhereを使いこなすために必須となる3つの機能(Files, Web, Consoles)と、Django開発における勘所について解説します。

本記事の構成

  • 1. 管理画面の基本:Files, Web, Consoles の役割
  • 2. Filesの中身:Djangoを構成する5つの重要ファイル
  • 3. Webタブ:エラーログは「答え」を知っている
  • 4. Consoles:黒い画面(ターミナル)の歩き方

1. 管理画面の基本:Files, Web, Consoles

PythonAnywhereのダッシュボードは非常にシンプルです。開発者が主に見るのは、以下の3つのタブだけです。

Files(ファイル)
Windowsのエクスプローラーのような場所です。サーバー上にアップロードされたプログラムの修正や、設定ファイルの編集をここから直接行えます。
Web(ウェブ)
サーバーの「司令塔」です。アプリの再起動(Reload)や、エラーログの確認を行います。コードを書き換えた後は、必ずここで再起動ボタンを押す必要があります。
Consoles(コンソール)
いわゆる「黒い画面」です。コマンドを入力してデータベースを操作したり、ライブラリをインストールしたりする「作業場」です。

2. Filesの中身:Djangoを構成する重要ファイル

「Files」タブを開くと、プロジェクトの中身が見えます。
Djangoフレームワークにおいては、以下のファイルがそれぞれの「職務」を全うすることでシステムが動いています。

ファイル名 役割(たとえ話)
models.py 「設計図・金庫」
どのようなデータを保存するか(売上、顧客、日付など)を定義します。データベースの構造そのものです。
views.py 「店員・処理係」
ユーザーからの「保存したい」「見たい」というリクエストを受け取り、計算したりデータベースに問い合わせたりする、処理の中心です。
urls.py 「受付・案内係」
ブラウザのURLを見て、「経費登録ならあちらの係(View)へどうぞ」と適切な処理へ案内します。
settings.py 「ルールブック」
パスワード、言語設定、使用するアプリの登録など、システム全体の基本設定を管理します。
.html 「ショーウインドウ」
最終的にユーザーの目に触れる画面です。views.py から受け取ったデータを、見やすく表示します。

3. Webタブ:エラーログは「答え」を知っている

開発中、画面に「Something went wrong」といきなり表示されることがあります。
この時、慌てずに「Web」タブを開いてください。そこにある Error Log のリンクこそが、解決への最短ルートです。

Example:
NameError: name ‘datetime’ is not defined

ログの一番下を見れば、「何行目で」「何が起きているか」が書いてあります。
上記なら「datetimeという言葉が定義されていない(import忘れ)」が一目瞭然です。エラーログを恐れず、読み解く癖をつけることが、安定稼働への第一歩です。

4. Consoles:黒い画面の歩き方

最後に、コンソール(Bash)での重要な2つの操作について触れます。

① cd (Change Directory)

これは「部屋を移動する」コマンドです。
ファイル操作をする際、自分が今どのフォルダにいるかは重要です。

$ cd myproject

(myproject という部屋に入る、という意味です)

② (venv) の役割

コンソールの入力行の先頭に (venv)(myenv) と表示されているでしょうか。
これは「仮想環境(Virtual Environment)」に入っている印です。

仮想環境とは、そのプロジェクト専用の「道具箱」のことです。
もし (venv) が表示されていない状態でライブラリをインストールしても、システムには反映されません。
作業をする前には必ず workon myenv などのコマンドで、正しい道具箱を開く(仮想環境を有効にする)ことが鉄則です。


PythonAnywhereは、これら3つの画面を行き来するだけで、本格的なWebシステムを運用できる素晴らしいサービスです。
黒い画面に怯えることなく、少しずつ「相棒」としての付き合い方を覚えていけば、開発はもっと楽しくなります。

【AI活用術】Geminiはエスパーではない。「伝える難しさ」とそれを乗り越えるための対話テクニック

「AIに頼めば、あっという間にシステムができる」
世間ではそう言われていますが、実際に数ヶ月にわたってGeminiとペアプログラミングを行ってきた私の実感は少し違います。

AIは優秀ですが、決してエスパー(超能力者)ではありません。
こちらの意図が伝わらず、エラーの迷宮に迷い込むことも一度や二度ではありませんでした。

今回は、私が業務アプリ「NSRA-KEIRI」の開発を通じて痛感した「AIに伝えることの難しさ」と、それを乗り越えるために編み出した「打開策(コミュニケーション術)」について共有します。

目次

  1. Geminiは「察して」くれない:開発現場のリアル
  2. 壁その1:長くなるほど「記憶」が曖昧になる
  3. 打開策:「共有情報の再定義」というテクニック
  4. 壁その2:回答の無限ループ
  5. 打開策:人間側が「視点」を変えて提案する
  6. まとめ:AI時代に必要なのは「翻訳力」と「忍耐力」

1. Geminiは「察して」くれない:開発現場のリアル

Geminiとのやり取りは、非常に優秀な、しかし「少し物忘れの激しい新入社員」への指示出しに似ています。
基本的な知識は人間を凌駕していますが、文脈(コンテキスト)の理解には限界があります。

「いつものアレでやっておいて」
この言葉はAIには通用しません。毎回すべての環境(OS、言語のバージョン、現在のファイル構成など)を入力して問いかけるわけではないため、Geminiも不足した情報を「推測」で埋めて回答してきます。
この「推測」がズレた時、開発は停滞します。

2. 壁その1:長くなるほど「記憶」が曖昧になる

開発が進むにつれ、チャットの履歴は膨大になります。
すると、「以前このファイルを修正したはずなのに、なぜ古いコードを提案してくるんだ?」という事態が頻発します。

AIの記憶領域(トークン)には限界があり、古いやり取りは徐々に忘れられていくからです。
ここでイライラして「さっき言ったでしょ!」と怒っても、AIには届きません。

打開策:「共有情報の再定義」というテクニック

私が実践している解決策は、チャットが長くなったり、話が噛み合わなくなったりした時に、あえて立ち止まることです。

「今、共有化する情報は何ですか?」

そう問いかけ、現在のファイルの状況やエラーログ、実現したいゴールを改めて提示し直します。
「分かっているはずだ」という思い込みを捨て、定期的に前提条件をリセットする。この一手間で、Geminiの回答精度は劇的に回復します。

3. 壁その2:回答の無限ループ

エラーが発生し、Geminiに修正コードを書いてもらう。それを貼り付けるが、また同じエラーが出る。
「すみません、修正しました」とGeminiが新しいコードを出すが、よく見るとさっきと同じコード…。

この「無限ループ」にハマると、時間だけが過ぎていきます。

打開策:人間側が「視点」を変えて提案する

ループし始めた時、私はGeminiを信じるのを一時的にやめます。
「修正して」と頼むのではなく、自分でネット検索をしてヒントを探したり、エラーの視点を変えてみます。

  • 「コードではなく、設定ファイルが間違っているのでは?」
  • 「このライブラリのバージョンが古いのでは?」

このように、人間側から「こういう可能性はないか?」と提案することで、Geminiが「ハッ」としたように正しい答えを導き出すことが多々あります。

まとめ:AI時代に必要なのは「翻訳力」と「忍耐力」

AI開発は「全自動」ではありません。
こちらのやりたいこと(要件)を、AIが理解できる言葉に噛み砕いて伝える「翻訳力」
そして、伝わらない時にも感情的にならず、手を変え品を変えアプローチする「忍耐力」

この2つこそが、AIを有効に使うための必須スキルだと感じています。
Geminiは最強のパートナーですが、それを導くのはあくまで人間の役割なのです。

【開発秘話】Geminiと二人三脚。非エンジニアがPythonで業務アプリを完成させるまでの記録

副業を考え、自分のこれまでの社会経験が生きる道を探したとき、たどり着いた答えが「業務アプリの作成」でした。
世の中には大手メーカーのソフトが多く存在しますが、現場には「もっとこうしたい」という個別化(カスタマイズ)のニーズが必ずあると考えたからです。

しかし、私はプロのエンジニアではありません。
この記事では、私がAIパートナー「Gemini」と相談しながら、どのようにしてPythonとDjango、そしてPythonAnywhereという環境にたどり着き、実用的なシステムを作り上げたのか。
その試行錯誤と、AIとの付き合い方について記録します。

目次

  1. Kotlin、Blazorでの挫折。そしてPythonへの転換
  2. 「コードを書く」のではなく「指示を理解する」ことに徹する
  3. Geminiとの知恵比べ:バージョン問題と無限ループ
  4. 機能拡張と公開:経費精算から統合管理へ
  5. AIに仕事を奪われるか?生成AI時代の「人間の役割」

1. Kotlin、Blazorでの挫折。そしてPythonへの転換

最初から順調だったわけではありません。最初はKotlinやBlazorなど、いくつかの技術を試しては寄り道をしていました。
しかし、思うようなものができず、開発は一度頓挫しました。

時間をおいて、改めてGeminiに相談してみました。
「業務アプリを個人で、効率よく作りたい」。
そこで提案されたのが、現在の構成である「Python + Django + PythonAnywhere」でした。

不思議なもので、Geminiもしばらく時間が経つと、性格が変わったような気がすることがあります。
以前は提案してこなかった解決策を、成長した彼(彼女?)が提示してくれたおかげで、今の開発スタイルにたどり着くことができました。

2. 「コードを書く」のではなく「指示を理解する」ことに徹する

まず最初に取り掛かったのは「経費管理システム」でした。日頃の営業活動で、外出先での出費をスマホで簡単に記録したかったからです。

コピペの繰り返し、その先に見えたもの

開発フローはシンプルかつ泥臭いものです。
Geminiにやりたいことを問いかけると、作成すべきファイル名とコードが返ってきます。私はそれを、場所を間違えずにひたすらコピペします。

当然、エラーが発生します。またGeminiに問いかけ、修正コードをコピペする。
最初はチンプンカンプンだったPythonAnywhereの構造(Consoles, Files, Web, Database)も、この反復作業の中で少しずつ理解できるようになりました。

プログラミングをどこまで理解すべきか?

ここで一つの決断をしました。
「自分でも修正できるようにコードを深く理解すべきか?」
Geminiと相談して決めた私の方針は、「プログラミング(詳細な記述)はGeminiに任せ、自分はGeminiの指示を理解できるレベル(監督)に徹する」ことでした。

3. Geminiとの知恵比べ:バージョン問題と無限ループ

もちろん、AIは万能ではありません。開発中には何度も「AIとの格闘」がありました。

バージョンの壁

環境構築の際、Geminiが推奨するバージョンが、実際の最新版と違うことがよくあります。
あまりに古いバージョンを推奨されたとき、「本当にそれでいいのか?」と問い返しても、やはり古い方を推してくる。
そんな時は、「ダメだったら戻す」と覚悟を決めて、自分の判断で最新版をインストールして進めることもありました。

回答のループと「共有化する情報」

Geminiはこちらの環境をすべて記憶しているわけではありません。推測で回答してくることもあります。
長いチャットになると文脈が忘れられ、「さっき言ったのになぜ?」となることも。

これに対する私の対処法は2つです。

  • 情報の再定義: 新たな問い合わせをする際に、「共有化する情報は何か?」とこちらから確認情報を加える。
  • 外部リソースの活用: エラー解決策がループし始めたら、一度Geminiを諦める。ネット検索でヒントを探し、「こういう方法はどう?」と逆にGeminiに提案する。

4. 機能拡張と公開:経費精算から統合管理へ

動作確認を繰り返し、「経費申請」機能が完成した段階で、PythonAnywhereのHackerプラン($5/month)に申し込み、独自ドメインを取得して公開しました。

一度公開までたどり着くと、開発は加速します。
販売管理、仕入管理、在庫管理、給与・勤怠管理、そして報告書管理。
これまで自分が社会経験の中で「必要だ」と感じてきた機能を、次々と追加していきました。

5. AIに仕事を奪われるか?生成AI時代の「人間の役割」

私はChatGPTが話題になり始めた頃から有償版を使い、その後、Googleのエコシステムとの親和性からGeminiへ移行しました。
プログラミングだけでなく、市場予測、株価予測、健康相談、確定申告まで、今や私の生活にAIは欠かせません。

よく「生成AIに仕事を奪われる」と言われますが、私はそうは思いません。
これまで「情報量」だけで勝負してきた業務は代替されるでしょう。しかし、これからの成否を分けるのは以下の2点です。

  • 生成AIから生み出された回答を、いかに実現するかという「行動力」
  • 生成AIをどう使うかという「想像力」

そして何より、AIがあってもなくても、人としての営みの本質は変わらない気がしています。
これからもGeminiという相棒と共に、現場の役に立つシステムを作り続けていきます。

【脱エクセル】個人事業主が「Excel管理」に限界を感じて、Webシステム開発を決意した3つの理由

「経理や在庫管理なんて、Excel(エクセル)で十分じゃないか?」

当初、私もそう思っていました。表計算ソフトは万能で、手軽に始められます。
しかし、事業が進み、データが増えるにつれて、便利だったはずのExcelが「業務の足かせ」に変わる瞬間が訪れました。

今回は、私がなぜ慣れ親しんだExcelを卒業し、PythonとDjangoで独自のWebシステム(NSRA-KEIRI)を開発することになったのか。
現場で痛感した「Excel管理の3つの限界」についてお話しします。

1. 「最新版がどれかわからない」問題(同時編集の壁)

Excelファイルを共有フォルダに入れて管理していると、必ずこの問題が起きます。

  • 「在庫管理表_最新.xlsx」
  • 「在庫管理表_最新_修正版.xlsx」
  • 「在庫管理表_20260111_田中.xlsx」

誰かがファイルを開いている間は、他の人は書き込めない(読み取り専用になる)。
あるいは、別々にコピーして作業してしまい、後で合体させるのに数時間かかる…。

Webシステム(データベース)にしたことで、「いつ誰がアクセスしても、常にそこにあるのが最新データ」という状態が実現し、このストレスから完全に解放されました。

2. 「データが壊れる・消える」恐怖(堅牢性の壁)

Excelは、誰でも簡単に「行削除」や「上書き」ができてしまいます。
ある日、数式が入っていたセルを誤って消してしまい、請求書の合計金額が合わなくなったことがありました。

「いつから間違っていたのか?」「バックアップはどこだ?」と冷や汗をかく時間は、経営にとって最大の無駄です。

自作システムでは、「スナップショット機能」や「操作ログ」を実装することで、大事なデータが誤操作で消えない仕組みをコードレベルで組み込みました。

3. スマホで作業ができない(場所の壁)

Excelは基本的にPCの前に座って操作するものです。
しかし、在庫の確認は「倉庫」で、営業活動は「客先」で行います。

「あとで事務所に戻って入力しよう」は、入力漏れの元です。
PythonAnywhereを使ってシステムをクラウド化したことで、「倉庫でスマホを取り出し、その場で在庫数を更新する」ことが可能になりました。

スマホで業務システムを操作するイメージ
クラウド化により、場所を選ばない働き方が可能に

まとめ:攻めの経営のためのシステム化

Excelは素晴らしいツールですが、「記録」には向いていても、「チームでの共有」や「未来の分析」には限界があります。

私が開発したNSRA-KEIRIは、これらの課題を解決するために生まれました。
もし今、Excel管理に限界を感じているなら、それは事業が成長している証拠かもしれません。
次はシステム化というステップへ進んでみてはいかがでしょうか。

【開発裏話】AI時代のシステム開発|私を支えた4つの「相棒」たちとの格闘記録

「業務システムを自作しました」と言うと、「すごい!プログラミングがペラペラなんですね」と言われることがあります。
しかし、実態は少し違います。

今回の開発は、エラーとの戦い、そして新しい技術との終わりのない格闘でした。
私が作り上げた「NSRA-KEIRI」システムは、私一人の力ではなく、4つの強力なツール(相棒)が連携して動いています。

今回は、非エンジニアの私がどうやってシステムを形にしたのか。その裏側にある「Python」「Django」「PythonAnywhere」そして「Gemini」の役割について、分かりやすく解説します。

この記事の目次

  1. 基礎となる言語:Python(パイソン)
  2. 骨組みを作る:Django(ジャンゴ)
  3. 世界へ公開する場所:PythonAnywhere
  4. 最強のガイド役:Gemini(AI)
  5. まとめ:AI時代の新しい開発スタイル

1. 基礎となる言語:Python(パイソン)

まず、すべての基礎になっているのがプログラミング言語「Python」です。
家づくりに例えるなら、「木材やコンクリートといった材料そのもの」です。

Pythonは、AI(人工知能)開発やデータ分析によく使われる言語ですが、実は「読みやすさ」が最大の特徴です。
「もし(if)、在庫が(stock)、0なら(== 0)」のように、英語を読むような感覚でロジックを書くことができます。

今回の開発でも、「在庫連動」や「PDF出力」といった複雑な計算処理は、すべてこのPythonが裏で働いています。


2. 骨組みを作る:Django(ジャンゴ)

Pythonが「材料」なら、Djangoは「建築キット(と道具箱)」です。
材料だけあっても、一から柱を削って家を建てるのはプロでも大変です。そこで登場するのがDjangoという「Webフレームワーク」です。

Djangoには、Webアプリに必要な機能があらかじめセットになっています。

  • ログイン機能(セキュリティ)
  • データベースとの連携
  • 管理画面(データを裏から見る画面)

「ログイン画面を作りたい」と思ったら、一からコードを書くのではなく、Djangoが持っている「ログイン機能のパーツ」を呼び出すだけ。
私が今回、短期間で高機能なシステムを作れたのは、このDjangoという強力なキットを採用したからです。

3. 世界へ公開する場所:PythonAnywhere

PCの中でシステムが完成しても、それだけでは誰も使うことができません。
インターネットを通じて、スマホや他のPCからアクセスできるようにする必要があります。
そのための「土地(サーバー)」として選んだのが「PythonAnywhere」です。

通常、サーバー構築は非常に難解で、黒い画面にコマンドを打ち込み続ける「エンジニアの聖域」です。
しかし、PythonAnywhereはその名の通り「Pythonを動かすこと」に特化したサーバーです。

難しい設定の多くを省略でき、作ったDjangoアプリをそのまま「ポンッ」と置くだけでWebサイトとして公開できる。
この手軽さがなければ、私のシステムはまだ私のPCの中に眠ったままだったでしょう。

4. 最強のガイド役:Gemini(AI)

そして、今回の開発で最も重要な役割を果たしたのが、AIパートナーである「Gemini」です。
家づくりに例えるなら、「隣に座って常にアドバイスをくれるベテラン建築士」です。

開発中、私は何度もエラーという壁にぶつかりました。

  • 「画面が真っ白になった」
  • 「データベースの更新が反映されない」
  • 「AdSenseに有用性が低いと言われた」

そんな時、私はGeminiに相談します。
するとGeminiは、「それはPythonの書き間違いです」「Djangoの設定をこう変えてみましょう」「サーバーのログを確認してください」と、的確な答えを返してくれます。

私が「やりたいこと(要件)」を伝え、Geminiが「書くべきコード(実装)」を提示する。
この二人三脚があったからこそ、未経験の壁を乗り越えてシステムを完成させることができました。


まとめ:AI時代の新しい開発スタイル

今回、私が格闘したのは、これら4つのツールを「どう組み合わせるか」という点でした。

プログラミングをすべて暗記する必要はありません。
「何を作りたいか」という情熱(人間)と、「どう作るか」を知っているAI(Gemini)
そして、それを形にするPythonとDjango、公開するPythonAnywhere

これらが揃えば、個人でも本格的な業務システムを作り上げることができます。
もし、「自分には無理だ」と思っている方がいれば、ぜひこの「AIとの二人三脚開発」に挑戦してみてください。

システム開発のご相談

AIを活用した効率的な開発手法で、御社の業務にフィットしたシステムをご提案します。
「こんなことはできないか?」というアイデアレベルからでもお気軽にご相談ください。

プロフィール | プライバシーポリシー | お問い合わせ
システムを試す ▶