カテゴリー別アーカイブ: ソフトウェア・開発

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メソッド以外をはじくような処理を入れている場合、今後はデッドコードになるので併せて削除してもいいと思います。


RHELのApplication Streamsは一部が長期サポートらしい

表題の通りなんですが、RedHat Enterprise Linux のApplication Streamsで提供される一部のパッケージで長期サポートが提供されているようです。Application Streamsで提供されるパッケージはOSと同じサポート期間ではない短いサポート期間になる代わりに随時新しいバージョンにも対応していく形式ですが、特定のバージョンに限っては長きにわたっての利用が可能になります。

Red Hat Enterprise Linux 8 Application Streams Life Cycle – Red Hat Customer Portal

Application StreamRelease DateRetirement DateRelease
php 7.4Nov 2020May 20298.3
postgresql 12Feb 2020May 20298.1.1
git 2May 2019May 20298.0.0
httpd 2.4May 2019May 20298.0.0
mariadb 10.3May 2019May 20298.0.0
ruby 2.5May 2019May 20298.0.0
引用。2020年12月03日時点の内容。

一部のバージョンでサポート期間が公式をはるかに超え長くなっている事が分かります。例えばRHEL8.3と共にリリースされたPHP 7.4では2029年中頃までサポートされるようです。

そもそもApplication Streamsとはなんぞやという方は過去記事を参照の事。


Oculus Quest を購入して1か月弱経ったので紹介してみる

5月頃にOculus Quest(オキュラス クエスト)という製品を入手しました。これはVR(バーチャルリアリティ)ヘッドセットと呼ばれるジャンルの製品で、そのうちの一つがQuestになります。他にはOculus Rift(リフト)であったり、HTC VIVE(バイブ)、PlayStationと組み合わせて使うPS VRなどが有ります。

Oculus Quest 箱

Oculus Questの特徴

VRヘッドセット部の360度・上下左右の視界が広がるヘッドセットに加え、Questでは両手・両腕の動きを認識するコントローラー、上半身の動きを認識するセンサーが有り、足以外の動きはVR内で認識(トラッキング)され自由に動かす事が出来ます。

Oculus Quest 開封

Questの一番の特徴は「PCやゲームハードとケーブルで繋ぐことなくそのままで様々なアプリが動作する」事です。初期設定の際にスマートフォンアプリを用いたり、あとは無線LANとの接続は必要ですが、物理的なケーブル無しで気軽に使い始める事が出来ます。アプリはOculusのストアからダウンロードしたり購入したりすることができ、このアプリストアもヘッドセット単体で操作可能です。

Oculus Quest アプリストア

もちろんQuest単体でのCPUやグラフィックスの性能はハイエンドゲーミングPC程ではなく、ほぼPCでのプレイを前提とするような重いアプリは難しくなってくるのですが、USBケーブル1本でPCと接続する「Oculus Link」を利用する事でPC向けのVRアプリを楽しむことも可能です。現在はベータ版扱いで対応するGPU(グラボ)に制限が有りますので、Oculus Linkを使ってPC向けVRも楽しみたい場合はあらかじめ対応GPUをチェックしましょう。

ここからは実際に触ってみた物を紹介します。

デモアプリ

初めて起動し、必要最低限の設定を済ませるとデモアプリが起動するのですが、これがまたかなり良く出来ています。VR空間内の物を自由につかんで動かしたり、ピンポン玉をラケットで飛ばしてみたり、ダンスを楽しんだり、ガンシューティングをしてみたりと行った事をさくっと一通りやってみる感じなのですが、この時点でVRの中で(特に腕が)自由に動けるという感覚はかなり感じられます。

Prime Video VR

Amazon Prime Videoを見る為のアプリですが、先にPCのWebブラウザなどで有料レンタルをしておけば、サブスク契約ではなく作品単位課金でも映画・ドラマを見られるので非プライム民でも安心です。これが、PCの画面よりは大きいけどそのくらいかなぁと思っていたのですが、想像以上に良い体験でした。

まず、画面全体のサイズは3段階から調節できるのですが、最大サイズではIMAXシアターを近めの席で観ている時と同じレベルには大きな映像で視界が覆われます。視界面内には映像のみが有りあとは暗闇という空間で観る事になるので、かなり「シアターで観ている」に近い感覚が有ります。PCではありがちなちょっと一時停止してSNSを見てしまうという事も無い(一応QuestにもWebブラウザは有るのですが、そういう感じにはならない)ので作品に集中できるのもポイント。

映像は有機ELパネルな事もあり暗部のクオリティもそこそこ。暗いシーンが黒潰れして見えなかったり逆に白く浮きすぎているような事は今の所は遭遇していません。解像度的には正直フルHDの高品質な液晶で観た方がクッキリしています。特にエンドロールのスタッフ名などは露骨にジャギーが有るのですが、VRだからこその雰囲気と有機ELによる色の質はなかなか良いレベルで、この位の解像度ダウンならこっちの方が良いかなと思える人はそれなりに多いと思います。

音に関してはまぁ内臓スピーカーだなという品質で映画を観るには軽い音ですが、イヤホンやヘッドフォンが利用可能です。感度の高いイヤホンでは若干のホワイトノイズが有りますが、Final E3000を利用した際は適度な感度の低さでホワイトノイズも消え良い感じの音響でした。

1本の映画を観終わりヘッドセットを外した時は周りが明るくなり、映画館から出てきた時のような感覚が有りそれもまた良いです。

YouTube VR

映像系だとNetflixだったり(私は使った事が無いですが、没入感はPrime Videoの方が良く出来ているらしい)、Youtubeアプリだったりなどが有ります。

Youtubeアプリは動画だけでなく生配信の方も閲覧可能です。Youtubeの動画やライブを高品質で楽しめる他、動画を見た後の他の動画への移動、チャンネルも問題なくアクセスできます。

YouTube VR アプリ

BeatSaber

両手にレーザー剣を持って迫ってくるノーツを斬っていく音ゲーです。VR向けアプリとしてはかなり有名なアプリです。なかなか面白いですが、有料で追加できる楽曲を含めてもそう楽曲数が少ないなぁというのは難点。非公式&動作保証なし&自己責任ですがMODで曲の追加も出来るようです。

BeatSaber アプリ

VRChat

年齢・性別・人ではない種族・ロボットなど問わず好きなアバターになり、好きなワールド・興味のあるワールドを回り、知り合いだったり見知らぬ誰かと雑談したりなどできるバーチャルワールドアプリです。Oculus向けのVRChatアプリも有りますが利用できるアバターや行けるワールドに制限があるため、前述のOculus Linkを利用してPC向けVRヘッドセットとしてSteam VR版VRChatをプレイするのがオススメです。

VRChat アプリ

アバターやワールドは(3DモデリングやUnity等かなり専門知識が求められますが)自分で作成する事も可能でこれも結構面白いです。また、他の人が作ったアバターを購入して利用する事も出来ます(これにも若干の専門知識が求められますが、ググれれば何とかなります)。

VRChat アプリ

他にはYoutubeが再生できるようなワールドで複数人で動画を見たり、ワールド自体が簡単なゲームになっていたりなども。

Robo Recall

暴走している自社製品のロボをハンドガン・ショットガン・殴る・掴んで投げる・引きちぎる・飛んでくる弾を掴んで投げかえすなどの物理でリコール作業していくゲーム。360℃から現れる敵をバッタバッタやっていく。雰囲気に反してほとんど3D酔いしないです。

バーチャルデスクトップ

Oculus Link利用時にはいつでも「バーチャルデスクトップ」でPCのデスクトップ画面を表示・操作可能です。この状態で長文を入力したりするのは厳しいですが、ちょっとWebを確認したりなどが可能です。

Oculus バーチャルデスクトップ

Questでは出来ない事

もちろんできない事も有ります。

Blu-rayの再生

先述のバーチャルデスクトップ機能ではPCデスクトップ上の内容が表示できますが、Blu-ray再生の様に著作権保護の厳しいものはPCにBlu-rayドライブが有る場合でも残念ながらバーチャルデスクトップを利用して再生する事は出来ません。動画を観るにはQuestのアプリストアから入手できる前述の動画サービスアプリなどを利用しましょう。

Facebook以外への(操作簡単な)SNS共有

Oculus Questは単体でスクリーンショットやプレイ動画の録画ができるのですが、Facebook以外のSNSへ投稿する機能が有りません。また、QuestのWebブラウザアプリでSNSにアクセスしてもスクリーンショット画像の添付は行えません。本体内に保存されたスクリーンショットやプレイ動画はPCへの接続時にUSBストレージとしてアクセスできるので、面倒では有りますがPCから投稿する事は可能です。

PlayStationでの利用

PlayStationでVRを利用するにはPS VRが必要となります。PlayStation向けにしかリリースされていないアプリ、OculusやSteam VR向けにしかリリースされていないアプリの壁が有ります。

その他:眼鏡での利用について

メガネ着用者でも問題なく利用できます。眼鏡利用時向けに物理的に画面と目に距離を広げるアダプターも同梱されています。なお、アダプター無しでの眼鏡利用はレンズに傷が付く可能性も有るので、メガネ着用者は必ず最初からアダプターを付けておきましょう。

ご興味が有れば

とここまで紹介してきましたが、VRは実際にヘッドセットをかぶって見てみない事には伝わらない部分も多いです。また、金額的にも公式ストアで税込み49,800円(2020年7月3日現在)とハイエンドスマートフォンに比べればかなり安いものの、とはいえハードルの高い金額です。出来る事・出来そうな事に興味が有り、金額にチャレンジできそうならぜひ。動画再生機としても良い感じです。

個人的にはFPSジャンルはまだほとんど触っていないのでその辺も良さそうな物が有れば触ってみたいですね(友人のHTC VIVEで触った「SUPERHOT VR」はなかなか面白かったです)。

Oculus Quest 公式