PHPで記述されたwebアプリケーションフレームワーク。 Ruby on Railsの影響を受けている。 1.x系に対応するPHPのバージョンは4または5。 2.x系はPHP5への最適化を図るため、PHP4への対応が打ち切られるとともに、例外処理、テスト、命名規則など大幅な改修がなされた。 2013年1月15日現在の最新版は2.2.4、対応するPHPのバージョンは5.2.8以上である。
Controllerでテンプレートを指定します。 これだと、元のテンプレートディレクトリを削除すると、たどれなくなって、エラーになりました。 $this->viewBuilder()->setTemplate('../CommonData/index'); setTemplatePathとsetTemplateに分けると、うまくいきました。 $this->viewBuilder()->setTemplatePath('Admin/CommonData')->setTemplate('index');
別システムからテーブル定義を移植します。 migrationファイルを手書きするのは大変です。 dumpファイルから作成したいと思います。 テーブルのインポート前に、lockファイルを、最新状態にします https://book.cakephp.org/migrations/3/ja/index.html#schema-lock docker compose exec php bin/cake migrations dump dumpファイルからテーブルをインポート migrationファイルを作成 docker compose exec php ./bin/cake bake migrati…
こんにちは、MLBお兄さんこと松村です。 前回の記事で30-60 (30HR&60盗塁)を記録したと紹介したRonald Acuña Jr 選手ですが、なんと40-70 (40HR&70盗塁)を達成しました。本当に素晴らしい成績です。 2023年9月10日に CakePHP 5 がリリースされました。約4年ぶりのメジャーバージョンアップとなります。 cakephp.org CakePHP は好きなフレームワークの1つでもあり、これを Azure Web App にデプロイする手順を整理したので記事にまとめます。 サンプルアプリの準備 まずはデプロイするための CakePHP アプリケーションを…
はじめに 今「あすけん」は大きなチャレンジをしています。 中長期的なサービスの成長を見据えて、アーキテクチャの見直しとシステムの再設計を行っています。 この再設計の一環として、PHPで構築された既存システムをKotlinを用いた新システムに置き換えるという大きな決断をしました。 さらに、より保守性の高いシステムを目指して、新しい手法も試しています。 具体的には「RDRA」「ICONIX」「ドメイン駆動設計」の考え方を取り入れて再設計を行っています。 今はまだ技術検証の段階ですが、一部の機能の分析・モデリングを行ってコードに落とし込んでいます。 課題も毎日のように見つかっています。しかし、日々解…
弊社で毎月開催し、PHPエンジニアの間でご好評をいただいているPHP TechCafe。 2022年11月のイベントでは「PHPフレームワーク」について語り合いました。 弊社メンバーがピックアップしたPHPの代表的なフレームワーク4種について、以下のShowNoteをベースに、参加者の皆様のご意見も伺いながら学んでいきました。今回はその内容についてレポートします。 rakus.connpass.com hackmd.io フレームワークとは 代表的なPHPフレームワーク Laravel Symfony CakePHP Slim 機能比較 ルーティング Laravel Symfony CakeP…
以前、hasMany の Association を contain すると 別SQL になるという内容の記事を書きました 今回は、どのような仕組みで別SQLになるのか、コアのコードを追ってみました version CakePHP: 4.2.8 仕組み \Cake\ORM\EagerLoader::loadExternal によって、別SQLになる Decorates the passed statement object in order to inject data from associations that cannot be joined directly. 別SQLになるアソシエー…
こんにちは!webエンジニアの高谷です。 弊社ではCakePHPなどの社内のプロジェクトで使われているフレームワークやライブラリのアップデートを定期的に行っています。 その一環でママリのアプリ内で使用されているwebviewのCakePHPを3.8から4.0にアップデートした際に、使用しているPHPStanのバージョンが0.11とかなり古めだったのでこちらも1.4にメジャーアップデートしました。 今回はPHPStanを中心にアップデートした際の変更点をいくつかピックアップしていきたいと思います。 はじめに PHPStan1.0のリリース PHPStanは最初のリリース(2016年7月)から長ら…
こんにちは。 @otukutunです。 今回とあるキャンペーンサイトでGoogle オプティマイズのリダイレクトテストとCakePHPを連携して、すばやくABテストできる仕組みを構築したのでその方法について説明します。 Google オプティマイズとは Google オプティマイズはGoogleが提供しているABテストツールで、無料で提供されています(2022/03/11時点)。Google製ということもあり、Googleアナリティクス連携がスムーズにできる使い勝手のよいツールです。Google オプティマイズには様々なテスト方法が提供されていて、A/B テストやサーバーサイドテスト、リダイレ…
DBのデータ型 から PHPの型(Entityのpropertyの型) への変換 \Cake\Database\Type 以下の Class の toPHP メソッドで行われる 例 \Cake\Database\Type\StringType::toPHP` 一覧 \Cake\Database\TypeFactory::$_types PHPの型(Entityのpropertyの型) から DBのデータ型 への変換 \Cake\Database\Type 以下の Class の toDatabase メソッドで行われる 例 \Cake\Database\Type\StringType::toP…
こんにちは。バックエンドエンジニアのTOCです。 このエントリは、 コネヒト Advent Calendar 2021 の10日目のエントリです。 9日目は @otukutunさん による 洋書読み始めるならThe Minimalist Entrepreneurがオススメ でした。 弊社では多くのプロダクトで CakePHP を利用しております。エンジニア組織の取り組みで CakePHP のバージョンアップ対応を行ったのですが、リリース時に起こった困りごとについて、今回は紹介したいと思います。 目次 はじめに どんなことをやったのか リリースしてどうなった? 原因を調べる どう対応したのか リ…
こんにちは、Graciaのプロダクト部・エンジニアの大地です。 今回は「エンジニアチームの働き方について」で話が出てきたオフライン会で行った取り組みのひとつ、アーキテクチャを考える会について、どのようなことを行ったのか紹介したいと思います。 この会を開催した経緯 弊社のエンジニアチームでは、オニオンアーキテクチャを採用し、DDD(ドメイン駆動開発)のエッセンスも所々取り入れながら開発を行っています。これまでもアーキテクチャに関する技術書の輪読会を行ったり、コードレビュー等を通して、ある程度の共通認識を持って開発に取り組んできました。 これまでのアーキテクチャ図 しかし、日々の開発のなかで実装方…
CakePHP4で、すでに作成済みのテーブルを削除したい時のマイグレーションファイルの書き方をご紹介します。 まず、マイグレーションファイルを作成。 # 削除したいテーブル名が"hoshotan_tables"の場合 ./bin/cake migrations create DropHoshotanTables マイグレーションファイル内には以下のようにコードを記載します。 // 削除したいテーブル名が"hoshotan_tables"の場合 public function change() { $this->table('hoshotan_tables') ->drop() ->save()…
PHPはWordPressなどのCMSで使われるだけでなく、Laravel(ララベル)やCakePHPなどのフレームワークを導入して使うことが多いものです。今回は、PHP製のフレームワークの中でも「Laravel」というフレームワークがなぜ多くの注目を集めているのか、その理由と特徴について解説します。 Laravelが人気を集める理由 前回の記事では、PHPの特徴としてフレームワークが活発に開発されていることを解説しました。 多くのフレームワークはMVC(Model-View-Controller)と呼ばれるアーキテクチャを採用しています。これは、プログラムの構成を「ビジネスロジック」と「ユー…
多くのWebアプリケーション開発で採用されている「PHP」。多くのプログラミング言語がある中で、なぜこれほどまでに人気なのでしょうか。今回はこの疑問に答えながら、PHPをどのように学んでいけばよいのか、併せて学びたい技術などを3回に分けて解説します。 なぜPHPが人気なのか? PHPは主にWebアプリケーションの開発に使われているプログラミング言語です。Webアプリケーションといっても、「Webサーバー上で動くプログラム」と「Webブラウザ上で動くプログラム」の2種類があります。PHPは主に前者の開発に使われ、後者の開発についてはJavaScriptが多く使われています。 このWebサーバー上…
こんにちは! はたらこねっと開発課でバックエンドエンジニアをしている大塚です。 2024/03/07 〜 09に開催されたPHPerKaigi2024に参加されていた皆さん、お疲れ様でした! 8日には社員1名のLT登壇、3日間通しでのブース出展と、PHPerKaigiを盛り上げられたと思います。 そんなPHPerKaigiの参加レポートをさせていただきます。 ブース ブース 今回も多くの方に足を運んでいただき、3日間で164名の方と交流することができました!(アンケート回答者数から算出) ブースではアンケートボードを設置し、「働き方に関するアンケート」と「PHPに関するアンケート」を実施しまし…
はじめに エンジニアとしてのキャリアをスタートしたばかりの方が、ジュニアレベルやミドルレベルのエンジニアとして活躍するために必要なスキルや知識について考えてみます。 この記事はWEB領域のエンジニアを対象としています。 前提 前提として、私の知っている範囲のことしか書けませんが、弊社スマレジのエンジニアとして活躍できるレベルを目標としています。 スマレジでは、バックエンド、フロントエンドの領域で担当が分かれておらず、どちらも担当します。 インフラについては専属のチームがありますが、プロダクトを担当しているエンジニアと相談しながらインフラ設計が行われることが多く、インフラについての知識がなくても…
CakePHP 5.x で新しいアプリケーションを開発して、いざ本番環境に初めてdeployしたところ、以下のようなエラーに遭遇しました。error: [Cake\ORM\Exception\MissingTableClassException] Table class for alias `{テーブル名}` could not be foundこの記事は、このエラーの原因のうち、筆者が遭遇したものについてのメモです。 長いので3行まとめ Macのデフォルトのような case-insensitive なボリュームで開発されたコードは、case-sensitive 環境では動作しないことがある(…
2024/02/11に開催された、PHPカンファレンス関西2024に参加しました。 【非公式!前夜祭】 PHPカンファレンス関西2024 - connpassから含めて参加し、またカンファレンス翌日に行われた PHP Lovers Meetup vol.4 + OSS Gate in 関西 - connpassにも途中まで参加して、2泊3日の大阪滞在でした。 た〜〜〜〜〜のしかった!!!!という気持ちでいっぱいなのと、とても元気をもらえて勇気づけられて気合が入った時間になったと感じています。 めちゃくちゃ良い時間だったので、スタッフの皆さん、一緒に場を創ったり、個人的に交流させていただいた参加…
はじめに 外資就活開発チームでソフトウェアエンジニアをしている根本です。 今回は、外資就活プロダクトエンジニアリングチームの開発フローにトランクベース開発を導入する際の課題解決についてまとめます。 はじめに リプレイスの概要 アプリケーション構成 featureブランチの生存期間が長い問題 トランクベース開発 リプレイスとNext.jsの複合的課題 解決策の検討 1. Feature Flagの導入 2. Next.jsでリダイレクトを行う 結論 参考になった資料 リプレイスの概要 現在、CakePHPからNext.jsとGoへのリプレイスに注力しています。 アプリケーション構成 以下の図がア…
p.line { border-bottom: 2px solid black; font-size:25px; } .boxoutline { padding: 0.5em 1em; margin: 2em 0; border: dashed 2px #d3d3d3;/*点線*/ } .boxoutline p { margin: 0; padding: 0; } .boxself { padding: 0.5em 1em; margin: 2em 0; color: #2c2c2f; background: #fff0f5;/*背景色*/ } .boxself p { margin: 0;…
1月12日〜13日に開催されたPHPカンファレンス北海道2024(以下、ぺちこん北海道)に参加しました。 ぺちこん北海道、最高でしたね〜 day0 (1/12) day1 本編 (1/13) 見た発表(と一言感想) day2? (1/14) day3? (1/15) まとめ day0 (1/12) ぺちこん北海道自体は金曜日から前夜祭があったのですが、業務の都合で仕事が終わってから北海道に向かうスケジュールでした。 楽しそうにしてるPHPerの様子を見ながら「あと少しで北海道にいけるんだ・・・」と羨ましい気持ちを堪え、仕事を終わらせ羽田に。 が、雪の影響で飛行機が飛ぶか怪しい雲行きに・・・ 仕…
今回はこちらを使ってみた。 github.com ベースはAdminLTE。 それをCakePHPで使いやすいようにしてくれたもの。 実装手順 Githubのドキュメント通り行った。 指定されたファイルを置き換え、移植するところはCakePHPのフォルダ構成と同じ箇所に行えばOK。 発生したエラー 以下のエラーが発生した。 osa.hatenablog.com ローカルで試したときは起きなかったのに、EC2で確認しようとしたら起きたエラー。 こういう時は大体nginx絡みか権限絡み。 nginxではファイルのサイズが大きい時にバッファで一時ファイルに読み込むらしい(バッファがあまり分かっていな…
DBインスタンスの作成に関してはこちらを参考にした。 docs.aws.amazon.com ただし、DBを暗号化するとKMSが作成されてしまうことに注意。KMSは存在するだけでお金がかかる。(被害済) 私の場合はWebサーバーはnginxなのでDBインスタンス作成以降は関係なし。 EC2にmysqlをインストール 上記で諸々のセットアップをしたあと、以下のコマンドでmysqlクライアントをインストール。 yum install -y mysql 調べてるとmysqldとか、mysql-serverとか色々出てくるんだけど、今回は関係ないみたい。 mysqlに接続して、操作できるソフトだけをイ…
EC2を起動 ここは問題なし。 キーペアは作成か、選択しておくと楽。 EC2へSSH接続 私のPCはwindowsなのでOpenSSHを使って接続する必要がある。 以下を参考にした。 OpenSSH を使用して Windows から Linux インスタンスに接続する - Amazon Elastic Compute Cloud 自分の場合はOpenSSHにパスが通ってなかったので、インストール場所を確認して、パスを通した。 インスタンスの起動時、大事なことはEC2起動時にキーを作成するか、選択すること。 .pemの形式で今回はキーペアを作成した。 これが自動的に自分のPCにDLされる。 これ…