Files
build-web-application-with-…/ja/13.1.md
2014-12-14 23:27:42 +08:00

54 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 13.1 プロジェクトのプラン
何をするにしてもプランを作成することは大切です。我々がブログシステムを開発する前にも、プロジェクトのプランを作ることは同じように重要です。ディレクトリ構造をどのように設定するか、プロジェクト全体のプロセス図をどのように理解するか、アプリケーションの実行プロセスを我々が理解した時、以降のコーディングの設計についても相対的に容易になるはずです。
## gopath及びプロジェクトの設定
指定したgopathがファイルシステムの普通のディレクトリ名だったとしましょう。当然、自由に一つのディレクトリ名を設定することができます。次にこのパスをGOPATHに追加します。GOPATHは複数のディレクトリを含んでもよいと前にご紹介しましたwindowシステムでは環境変数を設定しますlinux/MacOSシステムではターミナルに`export gopath=/home/astaxie/gopath`コマンドを入力するだけです。しかし、gopathというソースディレクトリにはつのディレクトリpkg、bin、srcがあることを保証しなければなりません。作成した新しいプロジェクトのソースコードはsrcディレクトリの下に置きます。現在暫定的に我々のブログディレクトリをbeeblogと呼ぶことにしましょう。下はwindow下での環境変数とディレクトリ構造のスクリーンショットです
![](images/13.1.gopath.png?raw=true)
図13.1 環境変数GOPATHの設定
![](images/13.1.gopath2.png?raw=true)
図13.2 ワーキングディレクトリは$gopath/srcの下にあります
## アプリケーションプログラムのプロセス図
ブログシステムはモデル-ビュー-コントローラという設計モードにもとづいています。MVCはアプリケーションプログラムのロジック層とプレゼンテーション層を分離する構造方式です。実践の中で、プレゼンテーション層からGoの中で分離されているので、あなたのウェブページにはほんの少しのスクリプトを含めるだけでかまいません。
- モデルModelはデータ構造を表します。通常ではモデルクラスはデータベースのデータを取り出し、挿入し、更新するといった機能を含みます。
- ビューViewはユーザの情報を表示する構造およびスタイルです。ひとつのビューは通常一つのウェブページとなります。しかし、Goにおいては、一つのビューはページのいち部分であってもかまいません。例えば、ヘッダ、フッタ等です。これはRSSページや他の種類の"ページ"であってもかまいません。Goが実装するtemplateパッケージはすでに非常によくView層での一部の機能を実現しています。
- コントローラControllerはモデル、ビュー及びその他の任意のHTTPリクエストが必要としているリソース間の仲介を処理し、ウェブページを生成します。
下の図はプロジェクトの設計においてフレームワークのデータのがどのようにシステム全体を流れているか表しています:
![](images/13.1.flow.png?raw=true)
図13.3 フレームワークのデータフロー
1. main.goはアプリケーションの入り口です。ブログを実行する上で必要となる基本的なリソースを初期化し、情報を設定し、ポートを監視します。
2. ルーティング機能はHTTPリクエストを検査し、URLおよびmethodによって誰(コントローラ層)がリクエストのリソースへのリダイレクトを処理するかを決定します。
3. もしキャッシュファイルが存在した場合、通常のプロセスを迂回して実行し、ブラウザに直接送信されます。
4. セキュリティチェックアプリケーションプログラムのコントローラがコールされる前にHTTPリクエストと任意のユーザが送信したデータがフィルタにかけられます。
5. コントローラがモデル、コアライブラリ、補助関数および特定のリクエストに必要となるその他のリソースにおける任意の処理をロードします。コントローラは主に業務ロジックの処理に責任を負います。
6. ビュー層において出力された内容はWebブラウザのコンテンツに送信されます。もしキャッシュが起動されていた場合、ビューはまずキャッシュされ、以降の通常のリクエストにおいて利用されます。
## ディレクトリ構造
上のアプリケーションプログラムのプロセス設計にもとづいて、ブログのディレクトリ構造の設計は以下のようになります:
|——main.go 入り口ファイル
|——conf 設定ファイルと処理モジュール
|——controllers コントローラの入り口
|——models データベースの処理モジュール
|——utils 補助関数ライブラリ
|——static 静的ファイルディレクトリ
|——views ビューライブラリ
## フレームワーク設計
ブログの迅速な作成を実現するため、上のプロセス設計に従って最小化されたフレームワークを開発します。フレームワークにはルーティング機能、RESTをサポートしたコントローラ、自動化とテンプレートの適用、ログシステム、設定管理等が含まれます。
## まとめ
この節ではブログシステムにおいてGOPATHを設定するところからディレクトリの作成といった基礎情報までをご紹介しました。フレームワークの構造がMVCモードを採用することや、ブログシステムのデータフローの実行プロセスについても簡単にご紹介しました。最後にこれらのプロセスを通じてブログシステムのディレクトリ構造を設計しました。ここまでで、フレームワークの基本的な作成が完了しました。以降のいくつかの節ではひとつひとつ実装していきます。
## links
* [目次](<preface.md>)
* 前へ: [ブログシステムの作成](<13.0.md>)
* 次へ: [カスタム定義のルータの設計](<13.2.md>)