目次
はじめに
検索手段
反省
zipダウンロード
開発環境構築
versionエラー
再ダウンロード
filezillaエラー
開発
sql
はじめに
CakePHP
2.xの開発環境を構築し、ブログアプリを開発し、デプロイする機会があったので、その過程でつまづいた箇所、そしてそれをどう突破したかをまとめています。
(バージョン2は古いのでセキュリティなどの観点から非推奨ではある)
実際にコードを書く部分は割愛し、開発環境とデプロイの部分を記載しています。
(コードを書く部分は環境の違いなどは関係なく、特筆すべきことはないと考えたので)
公式サイト
(ちなみに、CakePHP
とはPHP
のフレームワークのうちの1つです)
検索手段
まずはわからないことをどのように調べるべきか考えました。私は今までコードを書いているとき生成AIに助けてもらったことが多かったので、今回は主に生成AIのGemini
と、たまに
GPT-3.5
を使用することにしました。
(後に後悔することになります)
理由
各生成AIを選んだ理由
-
Gemini
(旧Bard
)
返答が丁寧。抜け漏れがないボリュームのある文章を生成してくれるように感じる。
-
GPT-3.5
コードのみの質問に関しては、Gemini
やCopilot
より精度が高いように感じる。(金銭的な理由で有料版のGPT-4
は契約していない)
Webではなく生成AIを選んだ理由
- 自分が今どういう状況で、どういうアウトプットが欲しいのか、という細かな指定ができる
- それにより、当然回答の精度も向上
- Webだと意図に合わないサイトを見てしまうことも多々あり、時間効率が悪い
- 自分が今書いた変なコードも、そのままコピペで修正点を聞く、ということが可能
- 「記憶」の存在により、以前の回答を踏まえてさらなる質問に繋げられる
- 質問とそれに対する回答が何回もなされていく訳だが、Webだとそれらは1つ1つが完全に断絶されているし、質問の柔軟性もない。しかし生成AIだとすべての質問と回答のセットを接続できるし、質問の柔軟性がある
- 生成AIだとソースが不明でブラックボックス化しているというデメリットもあるが、ソースの信頼性を確保したい場合のみWebでも二重で検索すれば良いだろうと判断
反省
ということでほとんど生成AIのみに頼って進めていると、エラーがいくつもでてきて、それを突破できない、という状況が続きました。
そこで、単純にWeb検索でエラーコードをコピペしたりキーワードを入れたりした結果、一気にエラー解決がはかどりました。
生成AI(Gemini)に頼りっきりはダメですね。良い経験をしました。
間違った情報(今はエラーになる、古いバージョンでしか使えないコマンドなど)を平気で送ってきます。ハルシネーションですね。そしてそれに対して「〇〇というエラーが出ました」と伝えても有効な解決策を送ってくることはありませんでした。
かなり柔軟な質問をするときのみに生成AIを使っていくことにします。ということで基本はWeb検索をする方向性にシフトします。
zipダウンロード
では、さっそくCakePHP
2のzipフォルダをダウンロードしていきます。
「cakephp github」などと検索すれば出てくる、以下ページに進みます。
https://github.com/cakephp/cakephp
私が参考にしていたdotinstallの講義ではversion2.2.0を使っているようだったので、2.2.0を探します。
赤枠のversionが書かれている箇所をクリックします。
↓
Tags
タブをクリックし、ダウンロードしたいversionのセクションをクリックします。
↓
すると、そのversionのフォルダ・ファイル一覧が表示された画面になるので、赤枠のCode
セクションをクリックします。
↓
Download ZIP
をクリックします。すると、自動的にzipフォルダがダウンロードされます。ダウンロードされたzipフォルダは、そのままでは使えないので解凍しておきましょう。これでCakePHP
のダウンロードは終了です。
開発環境構築
エディター
VSCodeを使用。
開発環境
本番環境で開発。
今回はローカル環境ではなくいきなり本番環境で開発を進めました。理由としては、完成したブログアプリのurlを送って人に見てもらう必要があったため、どちらにせよデプロイが必須だったからです。
また、開発自体は1日で終わってしまうような量しかないため、わざわざローカルで試してから本番環境にデプロイするのではなく、最初から本番環境で開発してしまった方が設定などいろいろと楽だと思ったからです。
...というのもありますが最大の原因は、PHPファイルの中身をただの文字列ではなくスクリプトとして実行させてうまくブラウザに表示させるというローカル環境構築ができなかったからです。
XAMPP
、AMPP
、Docker
などの知識が必要になりそうで、自分なりに調べながら丸3日くらいいろいろやってみたのですが一旦ギブアップすることにしました。これは後に勉強したいと思っています。
サーバ
さくらのレンタルサーバのライトプランを使用。
最初の2週間はお試し期間のため無料でサーバを使用することができます。
レンタルサーバのプランはライト、スタンダード、ビジネス、ビジネスプロの4つです。ライトプランだけデータベースを使用することができません。今回はブログ投稿者や投稿文のデータを保持するということでデータベースを使用したいので、ライトプランではなくスタンダードプランをお試し契約することにしました。
データベース
MySQL
を使用。
さくらのレンタルサーバからphpMyAdmin
で簡単にMySQL
操作が行えます。
FTPツール
FileZilla Clientを使用。
これにより、VSCodeでコードを書きながらその変更をブラウザに簡単に反映させることができます。
これを使わないとさくらレンタルサーバのファイルマネージャーで0から自分でフォルダを作ったりファイルをアップロードしたりする必要があって非常に面倒なので、FTPツールは使うべきだと思います。
versionエラー
CakePHP
の2.2.0のzipフォルダをダウンロードした訳ですが、これをさくらレンタルサーバでブラウザ表示してみると、画面には
Fatal error: Cannot use 'Object' as class name as it is reserved in /home/dotcake/www/blog/lib/Cake/Core/Object.php on line 26
という文言が出ます。どうやらダウンロードしたCakePHPのコードが古いことによりエラーが出ているようです。CakePHP2系の最新versionをダウンロードする必要がありそうです。
再ダウンロード
ということでCakePHP
2系の最新バージョンを探しに行くと、2.10.24が最新のようなので、こちらをダウンロードして使うことにします。
filezillaエラー
そして、まだやらなければいけないことがあって...
FileZillaで自分の登録してあるさくらレンタルサーバのサーバに接続しようとすると、以下のエラーになりました。
状態: "ECONNREFUSED - サーバーによって接続が拒否されました" への接続の試行が失敗しました。
エラー: サーバーに接続できません
これはユーザー名やパスワード、ポート番号など、たくさんある入力事項のうちのどれかが間違っているようですが、どれなのか見当もつきません。ここは苦戦しました。
(さくらレンタルサーバのファイルマネージャーでCakePHP
のフォルダを自分で0から作り上げていけばFTPツールを使う必要はないのですが、あまりに非効率ですし、単純作業が6時間くらい続くので避けたいと思い、なんとしてもこのエラーを解決したいと奮闘しました)
エラー解決
エラーコードをコピペしていろいろと調べているうちに、下記サイトを見つけました。
https://hth.guide/ja/fix-econnrefused-connection-refused-by-server-filezilla/
本家(英語版): https://hth.guide/fix-econnrefused-connection-refused-by-server-filezilla/
ここの「方法1」の箇所に書いてあるようにポート番号を22にしてみましたが、それでもエラーのままでした。
エラー: SFTP サーバーに対して FTP 接続を確立できません、適切なプロトコルを選択してください。
エラー: 致命的なエラー: サーバーに接続できません
そこで、今度は21にしてみたところ、ついに接続することができました。
なぜ21なのか
理由としては、今回使用しているのは、さくらサーバ(=インターネット)そのものではなくそこに繋げるFileZilla(=FTP)なので、「インターネット」の80番ではなく「FTP」の21番を使う必要があるから、だと理解しました。
また、activeモード(データ転送用の線をサーバからクライアントに投げるやり方)の20番ではなく、今回はその逆を行う、なのでpassiveモードにすべき、なので21番、という流れですね。理解できました。
下記サイトを参考にさせていただきました。
https://wa3.i-3-i.info/word19675.html
サーバにアップロード
サーバと接続できたので、自分のPC(ローカル)にあるCakePHP
のフォルダ・ファイル一式をサーバ上にアップロードします。そしてさくらサーバの自分のurlに入ってみると、無事画面にCakePHP
のwelcomeページが表示されました。
開発
これでようやく、コードを書いていく開発のフェーズに移ることができます。あとはチュートリアルの通りファイルに上書きする形でコードを書いていきます。この部分は省略します。
なお、ファイルに変更を加えたら、FileZillaを使ってそのファイルだけサーバにアップロードすることで、ローカルの変更をサーバに同期し、ブラウザで簡単に結果を確認することができます。
sql
データベース・テーブル作成などに関しては、phpMyAdmin
のSQL
タブからSQL
文を実行することで行いました。