【第00回】何を作るか?【0から始めよう! Webアプリケーション開発】

どうも、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と仲良くなりたいものです。

おわり