月別アーカイブ: 2022年6月

CodeIgniter 4.2.0 で導入された新しい自動ルーティングについて

CodeIgniter 4.2.0 がリリースされ、それと共に新しい自動ルーティング機能が導入されました。

Version 4.2.0 — CodeIgniter 4.2.0 documentation

CodeIgniter 3.0 ~ 4.1.9 スタイルの自動ルーティングは確かに Symfony や Laravel などと比べるとGETやPOSTなどHTTPメソッドを区別したルーティングは行われておらず、ゆるい分例えばPOSTを想定した処理にGETでアクセスしてCSRF対策を回避できる可能性などが有りました(もっともPOST専用のコントローラメソッドならPOST以外をはじくような処理を今まで書いていたとは思います。書いていますよね?)。

CodeIgniter 4.2.0 で新しく導入された新自動ルーティング機能ではこの辺りを改め、POSTでアクセスするべき処理はPOSTで動く事を明確にするような改修が行われています。

ただ、ここで旧自動ルーティングを利用している場合に、新自動ルーティングに移行した場合と設定ファイルでのルーティング(自動ルーティング機能オフ)に移行した方が良いかのポイントが有ったのでここに残しておきます。

既に設定ファイルを使ってルーティングしている場合

設定ファイルのままで問題有りません。設定ファイルで定義するのが結局最も意図しない動きが起きない(=安全)な実装になります。

大文字小文字を区別するURLを構成している

自動ルーティングを利用する場合クラス名は先頭のみが大文字である事が求められます。大文字が含まれるURLを構成している場合はそこにクラス名をフィットさせられないので、設定ファイルでルーティングしましょう。

_remap でのルーティングを行っている

新自動ルーティングではコントローラーメソッドとURL(URI)の関係を1対1とするために_remapでのルーティング調整が廃止されています。設定ファイルでのルーティングに移行しそちらでカバーしましょう。

同じコントローラメソッド内でHTTPメソッドによる分岐を行っている

設定ファイルでのルーティングに移行しましょう。設定ファイルのルーティングであればGETとPOSTを両方同じコントローラメソッドで受け付けるようなルーティングが可能です。

ここまでどれも該当しない場合

新自動ルーティングを使っても良いですし、設定ファイルに移行してもどちらでもいいと思います。

設定ファイルに移行する場合

旧自動ルーティング・新自動ルーティング・設定ファイルでのルーティングのいずれを利用している場合においても、以下のコマンドを実行することで既存のルーティングを一覧表示する事が出来ます。

php spark routes

ここで出力されたルート一覧をExcelやスプレッドシートに貼り付け、区切り文字を | に設定し列に分割、移行リストとして1つ1つ設定に移植してきましょう。この際、旧自動ルーティングは <クラス名>::__construct や <クラス名>::index も(旧自動ルーティングでは有効な)ルートとして出力してきます。前者を削除し、後者も不要であればリストから削除しましょう。残りが設定ファイルへ移植するべきルーティングです。

設定ファイルへの移行が済んだら自動ルーティングの設定を無効化しましょう。コントローラメソッド内で目的のHTTPメソッド以外をはじくような処理を入れている場合、今後はデッドコードになるので併せて削除してもいいと思います。

トップガン マーヴェリック を観てきた:感想

『トップガン マーヴェリック』を観てきました。初代『トップガン』1986年以来の続編になります。前作はアマプラの字幕版で履修済み。劇場はグランドシネマサンシャインのIMAXレーザー・GTで字幕版を観ています。以下ネタバレ有り。

シナリオ

前作からかなり期間が開いている訳では有りますが、上手くそれを活かした背景とシナリオになっています。まだまだ元気なものの若い衆に混ざるとおっさんとして扱われてしまうマーヴェリックの哀愁感、グースの息子ルースターとの関係、無人ドローンや第5世代戦闘機(※1)が台頭する時代の流れ、アイスマンとの関係性の変化、パイロット現役層の層の広がりなどなど。

かなり期間が開いている中でどうやって続編を作るかは大変だったろうなと思いますが、だいぶ良い形になっていると思います。

※1 USAで言う所のF-22やF-35などの最新世代戦闘機。敵機として扱われる「第5世代戦闘機」は名前を出す事は避けられている物の雰囲気はロシアのSu-57。前作主人公機であるF-14と今作主人公機であるF/A-18(F-18)はどちらも第4世代戦闘機ですが、F-14が既に退役済みの古い機体であるのに対して、F/A-18は様々なアップデートが重ねられながら今も現役で、同じ第4世代機で有りながら現役度は異なっています。

シナリオは前半こそ新キャラと既存キャラ(時の流れでみんな顔が変わって正直パッとは分からない)がわっと出てきて分かりづらい部分は有るものの、基本的には王道シンプル熱さと勢いなので、良い意味で深い考察とかは不要で観られました。

良い所

という訳でここから良かった部分の列挙。

  • 前作を踏襲したオープニング。
    • 盛り上がるよね。
    • 機体は最新。映像も前作より綺麗と色々この時点で進化していたり。
  • 極超音速機のロマン。
    • 極超音速機らしいのっぺりした外観。フロントガラスが無くサイドガラスしか用意されていないのも「それ」っぽいです。
    • 通常動力の軸流圧縮ジェットエンジンからスクラムジェットエンジン(※2)への切り替えが行われるシーケンスをちゃんと見せてくれる。
    • 成層圏レベルの高度から見える通常の航空機では見えない景色の綺麗さ。
  • 基地内をバイクで駆け抜ける描写も前作踏襲していて良い。
  • 前述の上手く時の流れを活かしたシナリオ。
  • 迫力とリアリティにあふれた空戦シーン。
    • 迫力が有るのなんて大体のアクション映画はそうじゃない?と思われるかもしれないが実機を使って撮影された空戦シーンのリアリティと臨場感はかなり凄い。映画館の質でかなり体験が変わってくるので出来るだけグレードの高いスクリーンで見ましょう!
    • 理論上は出来るらしい?(本当か?)F/A-18でのコブラ起動。
    • 強烈なGの中での限界機動とそれによって生じるベイパートレイル(※3)。それにもがくパイロットの臨場感。
  • 超高速で低高度を駆け抜けていくミッションのロマン。
    • エースコンバットシリーズ経験者なら大体やった事有る類のやつ。高度を上げ過ぎるとSAM(※4)に撃ち抜かれるがミスをすると峡谷に激突するぞ!いつものやつ。
    • スターウォーズのデススター攻撃的でも有るよね。この辺はもう色々相互に影響してそう。
    • 間一髪のところでフレアを炊いたり機動でSAMをかわしていく緊迫感も良い。
  • バトルシップのミズーリ的ポジションで登場するF-14。
    • 前置きでチラつかせてから満を持しての登場。
    • やっぱ可変翼って良いよね。
    • 世代差が有る機体での空戦。本当に勝てるんか!?ロマンがあるのでまぁOK。
  • 第5世代戦闘機らしい機動。
    • まぁやられ役なんだけどちゃんと高性能機らしいポストストール機動(※5)が見られるのは高ポイント。
※2 空気をタービンで圧縮して燃焼させるのではなく、吸気口から入ってくる超音速の空気をそのまま燃焼させるエンジンがスクラムジェットエンジン。すでに十分に超高速な状態でないとスクラムジェットエンジンは始動できないという点から空中で起動されます。
※3 戦闘機の翼から生じる雲。
※4 surface to air missile:地対空ミサイル
※5 ざっくり言うと通常の旋回とは異なる急激な動きをする機動。全ての機体で出来る訳ではない。

という感じですねー。とにかくシンプル迫力臨場感映画体験映画なので、出来るだけグレードの高いスクリーンで見ましょう。

例えばエースコンバットシリーズを1作でもクリアした事がある人に間違いなくおすすめです。

Microsoft Flight Simulator をプレイしよう

作中で行われた低空を超高速で駆け抜けるミッションや、ダークスターで極超音速機を目指すミッションがなんと「Microsoft Flight Simulator」のトップガン マーヴェリックコラボで追体験頂けます。

操縦のシビアさ、強烈な期待や人体へのG、様々なスイッチを操作してのスクラムジェット起動など、同じ世界に入り込んだ体験で盛り上がりましょう!