最初のアプリケーションを作ろう

コメントの付いた簡単なブログを作りながら、Nette Framework を知りましょう。さっそく始めます。

最初の 2 つの章を終えれば、動くブログが手に入り、素晴らしい記事を公開する準備が整います。とはいえこの 2 章だけでは機能はかなり限られています。続く章も読んで、コメントの追加、記事の編集、そして最後にブログの安全を実装しましょう。

この手引きは、インストールの文書を終えて、道具立てが整っていることを前提にしています。また PHP のオブジェクト指向プログラミングを理解していることも前提にしています。

PHP 8.1 以降を使ってください。完成したアプリケーションは GitHubにあります。

ようこそのページ

まず nette-blog のディレクトリに新しいプロジェクトを作るところから始めましょう。

composer create-project nette/web-project nette-blog

この時点で、Web Project のようこそのページが動いているはずです。ブラウザを開いて次の URL へ進み、試してみてください。

http://localhost/nette-blog/www/

Nette Framework のようこそのページが見えるはずです。

アプリケーションは動いています。これで手を入れはじめられます。

うまくいかないときは、このいくつかの助言を試してみてください

Web Project の中身

Web Project は次の構造を持ちます。

nette-blog/
├── app/              ← アプリケーションのディレクトリ
│   ├── Core/         ← 基本の必要なクラス
│   ├── Presentation/ ← プレゼンター、テンプレートなど
│   │   └── Home/     ← Home プレゼンターのディレクトリ
│   └── Bootstrap.php ← 立ち上げのクラス Bootstrap
├── assets/           ← 生のアセット(SCSS、TypeScript、もとの画像)
├── bin/              ← コマンドライン向けのスクリプト
├── config/           ← 設定ファイル
├── log/              ← エラーのログ
├── temp/             ← 一時ファイル、キャッシュなど
├── vendor/           ← Composer が入れたライブラリ
│   └── autoload.php  ← 入れたすべてのパッケージの自動読み込み
└── www/              ← 公開のフォルダ。ブラウザから触れる唯一の場所
    ├── assets/       ← ビルドされた静的ファイル(CSS、JS、画像など)
    └── index.php     ← アプリケーションを立ち上げる最初のファイル

www/ のディレクトリは、画像、JavaScript のファイル、CSS のスタイル、そのほか公開されるファイルを置くためのものです。ここはインターネットから直接触れられる唯一のディレクトリなので、ウェブサーバーの document root がここを指すように設定してください(Apache や Nginx で設定できますが、今すぐ必要なわけではないので、あとで行いましょう)。

あなたにとっていちばん大事なディレクトリは app/ です。ここには Bootstrap.php があり、フレームワークを読み込んでアプリケーションを設定するクラスが入っています。自動読み込みを有効にし、デバッガを用意し、ルートを設定します。

片付け

Web Project にはようこそのページが入っていますが、プログラムを書きはじめる前に取り除きます。app/Presentation/Home/default.latte ファイルの中身を「Hello world!」に置き換えてかまいません。

Tracy(デバッガ)

開発にきわめて大事な道具がデバッグの道具 Tracyです。app/Presentation/Home/HomePresenter.php にわざと誤りを入れて(たとえば HomePresenter クラスの定義から波かっこをひとつ取り除いて)、何が起きるか見てみてください。分かりやすいエラーの説明とともに赤い画面のページが現れます。

debugger screen

Tracy はエラーのデバッグを大いに助けてくれます。画面の右下の隅に浮かぶ Tracy Bar にも注目してください。実行時の大事な情報を見せてくれます。

本番モードではもちろん Tracy は切られていて、機微な情報は一切表示しません。エラーはすべて代わりに log/ のディレクトリに保存されます。試してみましょう。app/Bootstrap.php で次のコードの断片を見つけ、その行のコメントを外して、メソッドの呼び出しのパラメータを false に変え、次のようにします。

// ...
$this->configurator->setDebugMode(false);

ウェブのページを読み込み直すと、もう赤い画面は見えません。代わりに利用者にやさしいメッセージが表示されます。

error screen

では log/ のディレクトリをのぞいてみてください。ここ(exception.log ファイル)に記録されたエラーがあり、見覚えのあるエラーのメッセージのページも(exception- で始まる名前の HTML のファイルとして)保存されています。

// $this->configurator->setDebugMode(false); の行をまたコメントに戻してください。Tracy は localhost の環境では自動的に開発モードを有効にし、それ以外では切ります。

これで入れた誤りを直して、アプリケーション作りを続けられます。

感謝を送る

オープンソースの作者を喜ばせる小技をお見せします。あなたのプロジェクトが使っているライブラリに、GitHub で簡単に星を付けられます。次を走らせるだけです。

composer thanks

試してみてください。