Webアプリ:植物観察ノート

PythonのフレームワークDjangoでWebアプリ:植物観察ノート(PWN:Plant Watching Notes)をつくりました。

PWNは植物観察に特化した電子アルバムです。

撮り溜めた写真とそれに関係する情報を整理して記録するために、Webアプリ:植物観察ノート(PWN:Plant Watching Notes)は大変役立ちます。

Djangoでこんなことができるという参考事例としてご参照ください。

https://itnetinc.co.jp/pwn/

Webアプリの共通変数

WebアプリをPythonAnywhereのようなクラウドサービス上で動作させると、PC上ではきちんと動作していたにもかかわらず、思いもよらない動きをすることがあります。

JavaやPHP、Pythonなどで作成されたWebアプリは、PC上の環境では言語仕様通りの動作をするが、Web環境では言語のクラス変数やインスタンス変数、あるいはグローバル変数は、マルチプロセッシングやマルチスレッディングの影響を受け、言語仕様通りの動作をしません。使えるのは関数やメソッド内のローカル変数だけです。 続きを読む Webアプリの共通変数

Djangoを使ってみた

Pythonはモジュールを取込んで(importして)、言語機能を拡張することができます。Djangoは、そうした拡張機能の一つで、体系化された形で提供されています。

Djangoは典型的な三層構造(ユーザインターフェース、ロジック、データベース)をしており、ユーザインターフェースはWeb(HTML、CSS)、ロジックはPythonのクラスや関数、データベースはMySQLやPostgreSQLなどのSQLを使用しています。 続きを読む Djangoを使ってみた

ChatGPTは名相談役

ChatGPTの話題が沸騰しています。多くの方が既に経験していると思いますが、プログラミングにおいてChatGPTが大変役立つことを確認しました。

最近のプログラミング技術は進歩し、多くのソフトウェア部品やツールを使用することが当たり前になっています。

私は、「植物観察ノート」というWebアプリをつくって、撮り溜めた植物の写真に、「撮影日」、「撮影場所」、「名前」、「花の形」、「花序」、「葉の形」、「葉序」、「科」、「属」、「分布」、「説明」などの情報を加えてデータベースに収め、いろいろなキーで検索できるようにしたいと考えました。言うなれば勝手植物図鑑です。

プログラミング言語とツールを検討した結果、PythonのフレームワークDjangoを使うのが最適と判断しました。 続きを読む ChatGPTは名相談役

プログラミングと数学

プログラミングと数学は深いところでつながっていますが、すべてのプログラミングで数学が必須となるわけではありません。ざっくりとした言い方をすると、数学を必要とする領域は限られています。

私自身長年プログラミングに関係してきましたが、数学を必要とする領域は科学技術計算(数値計算)でした。その後、コンピュータの応用領域が拡大して、統計、計測、暗号、AIなどで活用されるようになると、これらの領域では統計学、微分・積分学、解析学、数論、線形代数などが用いられるようになりました。 続きを読む プログラミングと数学

プログラミングの例(10進小数 to 2進小数 変換)

プログラミングは「何(What)」と「どのように(How)」を具体化して最終的にはコード化(プログラミング言語で表現すること)し、動作を確認することです。

この単純なシナリオは、複数のモジュールからなる大きなプログラムでも、数十行の小さなプログラムでも区別なく当てはまります。

シナリオの説明には、大きなプログラムを用いるのがより効果的ですが、執筆する側も読む側も相当のエネルギーが必要になりますので、「10進小数から2進小数への変換」という小さなプログラムを用います。 続きを読む プログラミングの例(10進小数 to 2進小数 変換)

プログラミング教育

私はブログ:ITプロジェクト管理考の2010年の投稿「ソフトウェアは知の媒体」で、ソフトウェアに関する基礎教育を学校教育として行うべきだと書きました。あれから8年になります。私のブログとは関係ないと思いますが、文部科学省は指導要領にプログラミング教育を盛り込みました。小学校、中学校、高等学校で次のような教育を行うことになっています。以下は文部科学省の「小学校プログラミング教育の必修化に向けて」より引用。 続きを読む プログラミング教育

論理的思考とプログラミング

プログラミング教育は論理的思考を育てるために役立つと言われていますが、私はだいぶ前に、ブログ:「ITプロジェクト管理」の投稿「ソフトウェア開発のキャリヤパス」の中で、全く逆のことを書きました。「論理的な思考ができない人はソフトウェア開発に向いていない」。長年多くの人と仕事をしてきた経験からこのような結論に到ったわけです。

論理的思考能力とプログラミング能力とどのような関係になっているのか、今のところはっきりしませんが、面白いので先の「ソフトウェア開発のキャリヤパス」から関係する個所をここに引用しておきます。 続きを読む 論理的思考とプログラミング

プログラミング技術の分類

大きな書店のコンピュータコーナーにはプログラミングの書架が目につくようになりました。タイトルに「プログラミング」という用語を使った数多くの本が並んでいます。はじめてプログラミングを学ぼうとしている人たちにとって、どこから手をつけるのがよいのか迷うと思います。

そこで、本稿は、プログラミングで必要とされる技術を分類し、学習の道しるべとなるよう試みました。 続きを読む プログラミング技術の分類

モッドの加減算の応用

前項「アルゴリズの取り出し」では「じゃんけん判定」の問題を扱いました。そこでは、まず、Aさん、Bさんの手(0、1、2のいずれか1つ)を、それぞれ変数XA、XBが保有するとしたとき、次が成り立つことを述べました。

             (Aさんの結果)
(ⅰ)XA=XB      ⇒  相子
(ⅱ)(XA+1)mod(3)=XB  ⇒  勝ち
(ⅲ)(XA+2)mod(3)=XB  ⇒  負け

これに対して、つぎのような一般に知られた判定法も紹介しました。 続きを読む モッドの加減算の応用