どうも、CUBEのシステム担当の杉本です。
今回から多分10回くらいに分けてシステム開発の基礎について連載します。
目次
この連載は、1ヶ月に2~4記事程度のペースで、システム(Webアプリ)開発について連載します。
第00回: 何を作るか?
第01回: 設計手順
第02回: 画面設計
第03回: 業務設計
第04回: データベース設計
第05回: 未定
第06回: 未定
第07回: 未定
第08回: 未定
第09回: 未定
第10回: 未定
※記事の書き方次第では、上記を変更することがあります。
目的と意図
現在では、10年程前と随分と環境が変わり、ネットで容易に「プログラミング」を学習できる様になりました。
しかし、システム開発の本質はプログラミングではないのです。
システム開発は、「物事を正しく捉える」という大事な観点がありますが、プログラミング講座等ではあまり触れられることはありません。
そこで、本連載では「実際に作ってみる」ことで、実務でのシステム開発の感覚を発信するのが目的です。
この連載で、システム開発という「プログラミング」から一歩進んだ領域に興味を持っていただければ幸いです。
想定する読者
本連載では、単純なプログラミング知識等は、扱いません。
よってPCの基本的な操作や、ソースコードの全てを掲載することはしませんので、
「ある程度プログラミングが出来る」
「けど、実務はやったことが無い」
という方を対象としております。
扱う技術
今回は、大抵のレンタルサーバーで利用できる、以下の技術等を使用します。
・HTML5/CSS/JavaScript
・PHP/Composer
・MySQL/SQL
連載に際しての開発は、全てローカルPC上に置きますので、レンタルサーバーをご利用の方は、適宜読み替える等してください。
今回作るアプリ
本連載では、以下の機能を持ったアプリを作成します。
テーマ: スケジュール管理アプリ
機能: スケジュール登録/編集/削除/ユーザ登録・管理等
非常にオーソドックスですが、実際の業務系Webアプリでも良くある要件です。
開発の大まかな流れ
ここでは、実務に則り以下の手順で開発を進めます。
要件定義
↓
設計
画面設計
業務設計
データベース設計
↓
実装
データベース実装
業務ロジック実装
画面実装
↓
テスト
単体テスト
結合テスト
リリースに関しては、今回取り扱わない事にします。
基礎と信条
本連載にあたっての前提事項や前提知識をば
信条
私のシステム開発における信条をそのまま用います。
・機能ははっきり明確に、業務を表現しなければならない。
・過度なオブジェクト指向は破滅する。
・名は体を表す。
機能ははっきり明確に、業務を表現しなければならない。
とても大事な条件です。
関数やメソッド単位でも、その処理は明確でなければなりません。
名は体を表すとも関連しますが、処理が明確でなければ、名前も付けられません。
よほど末端の処理でもなければ、この原則は常に守られるべきです。
過度なオブジェクト指向は破滅する。
オブジェクト指向それ自体は、何ら悪くありませんが、人間の認知能力には限界があります。
よく、自動車工場に準えて説明されますが、業務にはあまり即していない様に感じます。
またMVCパターン等もあり、Modelが肥大化する原因にもなりえます。
業務は変わるので、より柔軟にデータ構造から処理を行う、言わば「半オブジェクト指向」を採用します。
※「半オブジェクト指向」なんて者はありませんが、手続き型をオブジェクト指向を併せた、「関数型プログラミング」に近いものをイメージして頂けると良いかと思います。
名は体を表す。
なんどでも言います。 システム開発で名前付けがいい加減だと、後の自分が苦しみます。
英語的に正しいのはもちろん、処理内容やデータを的確に表現できなければなりません。
変数名はともかく関数名に関しては、10分悩んでもいいかと思います。
(そもそもその状況だと、機能の分割がうまくいってないかもしれませんが。)
最後に
今回は、ざっくりとした内容のみで終わりとなります。
次回は実際に、機能を決めて設計の準備を行いましょう。
おまけ
先日からアセンブラの学習を再開しましたが、まるで分りません。
仕事で使うことは無いでしょうけど、CPUと仲良くなりたいものです。
おわり