齋藤 滋がNPO社員の協力を得て、ゼロから書き上げた壮大なプログラミングの結果がこのページです ここに至る出だしは、2015年11月12日にCVIT九州沖縄地方会で私が行った講演「私は今、JSに燃えています」にあります この時私はJS (= JavaScript)を用いたプログラミングの楽しさ、重要性を皆に説いたつもりです
- プログラム骨子
このページは Webを支える主要技術要素である HTML5、CSS3、JavaScript、SQLを用いて書かれています
- プログラミングを効率化するためのフレームワーク
Responsive Web Designを実現するためには定番である Twitter社が開発し、無償で公開しているTwitter Bootstrapおよび、DOMを動的に書き換えることにより、動きのあるベージを作成するには不可欠な定番ライブラリーである jQueryを用いています
- サーバー側の技術要素
サーバーは Apache Webserverが用いられ、SQLエンジンとしてはMySQL、そしてスクリプト・エンジンとしては PHPを用いています いわゆる LAMP (Linux + Apache + MySQL + PHP)とも称される組み合わせです
- 開発環境
MacBook Proの中に、XAMPPを用いて用いて仮想インターネット環境を作成し、この上で、Dreamweaverを用いてゼロから書き上げています そのプログラム・ステップ数は優に数万行に達しています テストはこの仮想環境の中で各種Browserを用いて行い、あらかたテストに通れば実際の Web Serverに uploadしています
実は MacOSが high Sierraに upgradeされてから、security設定が厳しくなり、これまで動作していた XAMPPによる仮想インターネットサーバーを作動させることが困難となりました。これに伴い、XAMPPの使用を停止し、MacBook Proの中に、MAMPを用いて用いて仮想インターネットサーバーを用いるように変更しました。
- 開発コスト
このようなプログラムをプロに依頼すれば、恐らく1,000万円単位の請求が発生すると思いますが、私にとっては、プログラミングは過去40年来の趣味であり、知的好奇心と達成感を満足させる自分自身の人生にとって非常に重要なものです 用いている各種ツールやソフトウェアは、インターネット上に無償で公開されているものをダウンロードして使わせて頂いています これはいわゆるオープンソースを用いているのです 従いまして、Dreamweaverや MacBook Proを別とすれば 実際のコストはゼロです
- 開発で困難であった点
開発を開始したのは、2016年8月10日頃でした もちろんPCIやTAVIを行いながら、また国内外の出張を行いながら、そしてこれらの間に外来診療を行いながら、空いた時間に行う作業です、そしてしばしば飛行機の中で移動しながらの作業も多く、その結果途中で作業が中断すると共に、自分の思考も中断すること、これが辛いものでした そして技術的に困難であったのは、やはり Ajax通信を用いた部分です これはデバッグも困難で、ようやく動作するものを書けた時は流石に嬉しかったのです
- プログラム修正履歴管理
プログラムはバグの存在や、改良・改善のためにどんどん変化していきます。特に Webのためのプログラムは皆の目に触れますので日々変化をしていきます。しかしながら、その変更も時にもとに戻したり、試しに大きく変更したり そんな行程を繰り返します。これらの変更履歴を管理することはとても大変です。しかし、ここに Gitという有名なツールがあります。もちろんこのツールもオープンソースで開発が続けられているのです。このGitを用いて履歴を管理します。そして、僕の場合には 、Bitbucketという無料のサイトでその変更履歴を保存しています。この作業により、万が一僕のマシンが全く破壊されたとしても、cloudより変更履歴を含めて最新のプログラムを回復することが可能となるのです。
- 開発していて学んだこと
実は開発の途中でData Structureを何回か大幅に変更してきました これはデータに対する要求に自動的に応じることができるように、関係データベースの構造を最適化してきたからです もちろん未だ完全には最適化できていませんが、まずまずでしょうか データベース構造を変化させれば、既に入力されたデータを失わないようにデータを安全に移行する必要がありますし、データベースに対する問い合わせ SQL文も変化させねばなりません この作業を開発中に行うのには細心の注意が必要でした これらの過程を通じて学んだことは、(1)目標を定めれば実現できる (2)多くの場合問題点は、目標が不明であるということだ (3)従ってまずは目標を明確化せねばならない (4)自分自身常に外部からの要求やデータ構造の変更に柔軟に対応できる姿勢が必要だ などなどの人生の教訓でしょうか そして今回も開発を通じて Webの最新技術習得に一歩進むことが出来ました