22/7計算中は「日常に存在する2~2.5次元アイドル」にかなり近い存在なのかもしれない話

計20回程度しか見ていないですが「22/7 (ナナブンノニジュウニ) 計算中」※以下「計算中」 についての紹介です。計算中は東京MXテレビやBS11で毎週土曜日23時から30分間放送されているバラエティ番組です。

どんなバラエティ番組なのか

すごく普通のバラエティ番組で、 アイドルグループ「ナナブンノニジュウニ」のメンバーが登場するアイドルバラエティ番組です。クイズ回をやったりロケ回があったり毎週何かしらの企画をやるというすごく普通のバラエティ番組なのですが、登場するのはアイドルグループ「ナナブンノニジュウニ」の「外側のキャラクター」です。喋るのも動くのも中の人ですがフルトラッキングの3DCGであくまでキャラクターとして出演しています。喋る内容もあくまで外側のキャラクターとしてに重きを置く完全に外側のキャラクターがバラエティ番組をしている番組になっています。MCを務めるお笑い芸人の三四郎さんの存在がバラエティとしての安定感をもたらしています。回によっては他の芸人さんも結構出演されています。

VTuber番組との違い

フルトラッキングで3DCGが動いたり技術的にはVTuberに近い部分が有り、また芸人さんがMCを務める事でバラエティとしての完成度を高めているVTuber番組も存在します。一方でナナブンノニジュウニは生身でライブやイベント活動もしている中での「外のキャラクター」番組なのが特色です。Twitterアカウントも中の人とキャラクターでそれぞれ存在していたりします。

VTuberも活動の範囲が広がり続けなかなかこういうものという定義づけは難しい昨今ですが、ナナブンノニジュウニも中の人でライブをやったりイベントをやったりしつつキャラクター側としてバラエティ番組に出たり動画をアップしたりなど「リアルアイドル」と「2.5次元アイドル」と「2次元アイドル」と「配信者」の文脈を混ぜ合わせたような物になっています。

計算中って結局何なの

「計算中」だけを見ている分には完全に2次元アイドルコンテンツです。中の人がロケやバラエティ面で頑張りつつもあくまで外側のキャラクターとして30分バラエティ番組をやるというのが、毎週続いています。例えば2~2.5次元アイドル物は 本格的なサクセスストーリーや挫折や成長、ストーリーが入念に練られた感動、ギャグ回やSDキャラによるほんわか系ショートストーリーなどが有りますが、一方で計算中はそれらであれば劇中に存在し出演している描写は有れど、それがメインに据えられた回はあれどメインになり続ける事は無い「バラエティ番組」をそのまま毎週見続けられるというのが計算中です。このキャラクターがバラエティ番組に出ていたらどんな感じなんだろう?ではなく実際に毎週見られてしまうのです。実在性が高いとかではなく「実在している」。

ほんとうにただのバラエティ番組なのですが、だからこそここまで日常に浸透可能な、重いストーリーや輝きや成長を描くわけではない、ほんわかストーリーのショートアニメという訳でもない、日常に「実際のバラエティ番組」として存在する2~2.5次元コンテンツって意外と少ないですよね。デイリーを回すのが楽とかそういう意味での軽さではなく、本当に日常のバラエティ番組としてTV放送されていて気が向いた時に視聴が可能である、そういう意味での軽さです。そこに知っておくべき「これまでのストーリー」はありません。

視聴もバラエティ番組なのでストーリーの好み盛り上がりや考察や作画とかそういう話ではなく、番組自体のノリが合う合わない、面白い週そうでもない週などそういう感じになってきます。毎週見続ける必要も有りません。アイドルバラエティなので初見は誰が誰なのか分からないまま終わるような部分も有るとは思いますが、ただただバラエティ番組なので気が向いたら1~2回だけでも見てみてはいかがでしょうか?

公式
https://www.nanabunnonijyuuni.com/tv/

そのほか
・番組最後には告知パートと撮影風景パートが有り、そこにはナナブンノニジュウニの中の人も出てきます。リアル側のイベントの様子もここで見られたりします。
・アイドルなのでもちろん楽曲が有ります。歌詞が若干人を選ぶ感じですがご興味有れば。

Share this…

CodeIgniter 4 RC1 インプレッション

Webアプリケーションフレームワーク Laravel 6 LTSの正式版が2019年9月3日にリリースされましたが、その数日前にCodeIgniter 4.0 もついにRC1となりました。beta1が今年の3月でしたので最初のベータ版からおおよそ6カ月でのRCリリースとなりました。(Larabel 6に関しては記事を書く方が大勢居ると思うので……)まだ本格的なアプリを作っていない状態ではありますがCodeIgniter 4 RC1のパッと見た感じを記事にしたいと思います。個人的にトピックな点に触れていくので細かな違いはドキュメントを参照してみてください。

CodeIgniter公式
https://codeigniter.com/

Composerへの本格対応や名前空間への対応

CodeIgniter 3でもComposer(PHPのパッケージ管理ツール兼オートローダー)で導入されたライブラリや独自定義のクラスをComposerのオートロードで読み込んだり、名前空間の定義されたクラスをアプリ内に含めたりnewしたりする事は出来ていたのですが、CodeIgniter自体をComposerで導入したり、CodeIgniter自体や作っていくコントローラやモデルなどで名前空間を使っていくようになりました。

なおComposerでの導入は必須ではなく、これまで通り圧縮アーカイブでダウンロードして配置して動かす事も出来ます。この辺りの選択肢を残しておくのはCodeIgniterらしくていいですね。また、Composerで導入する場合についても –no-devオプションを付けた場合(= PHPUnitを入れない場合)は数パッケージしか依存関係が有りません。一桁です。少なければ良いという訳ではないですが、フレームワークの全ての機能がそれぞれパッケージのようなSymfonyやLaravelに慣れていると方向性の違いを感じますね。

#導入
composer create-project codeigniter4/appstarter <任意のプロジェクト名> -s rc
# 内臓Webサーバでの実行
cd <今作られた任意のプロジェクト名のディレクトリ>
php spark serve
# →Webブラウザで http://localhost:8080 にアクセスすると仮のTOPページが見られる

JSON/XML形式でのレスポンス返却機能

ビュー(フロントエンド側)とのやりとりをJSONを返すAPIでやり取りする事が多くなった昨今ですが、CodeIgniter 4でもJSON/XML形式でのレスポンス返却が簡単になりました。例としてコントローラ内で

$data = [
    'status' => 'ok',
    'message' => 'json responsed'
]; 
 $this->respond($data, 200); 

と書いてやれば $data をJSONフォーマット化したレスポンスをHTTP 200で返してくれます。渡すのがarrayで良いってのはCodeIgniterっぽいですね。

respondはコンテンツネゴシエーション機能が文脈によってJSONではなくXMLを返したりします(WebブラウザでアクセスするとXML形式で表示されます)。この辺りは常にJSONを返したりなど設定変更可能です。また、他の形式での返却も追加できるようです。
https://codeigniter4.github.io/userguide/outgoing/api_responses.html

ORM的機能の追加

使う場面・使わない場面有るとは思いますが、簡易?ORMが追加されました(ドキュメント上ではORMとはよばれずModel、Entityと記載)。もちろんほぼこれまで通りの直書きSQL+変数の自動エスケープ有りバインディングであったり扱いやすいクエリビルダも利用可能です。

まだ触ってはいないのですが、ドキュメントを読む限りテーブル名やプライマリキー名は手動指定できるタイプ、シンプルなCRUD機能を提供、論理削除対応、バリデーション対応、変更できないプロパティの指定に対応、JSON←→Arrayの自動変換などある程度の機能が揃っているようです。でもテーブル間のJOINやそれに関連する遅延ロード・Eagerロードは見当たらない? どの程度まで使い込めるのかは触っていないので正直まだ分からないのです。

基本は変わらないコントローラ

ルーティング方法がシンプルだからCodeIgniterが好きと言う人は結構いるんじゃないでしょうか(想像)。 クラス名やメソッド名がそのままルーティングになったりディレクトリ階層でパスを分けたりといったあの感覚はCodeIgniter 4でもそのまま利用できます。

Controllerクラスを継承する必要が有ったり、渡された値はInputクラスではなくIncomingRequestから取得するようになっていたりなど差は有るのでその辺は新しい作法にのっとっていく形になります。あとはアプリケーションのエラーを返す際にshow_error関数を呼ぶのではなくコントローラ内で例外をスローするようになっていたりするのも最近のフレームワークっぽいですね。

あとは使いたい人だけ使う形で良いと思いますが、Laravelにも有るようなReutfulなルーティングをまとめて用意する機能が追加されていたりします。APIを数作っていく場合は楽になるかもしれませんね。

神クラスCi_controllerからDI風味へ

CodeIgniter 3まではコントローラ(というかCI_controller)がサービスロケータとして機能しており、更にそれがあらゆる場所から利用できていましたがこれは無くなりました。CodeIgniter 4では代わりに Service という仕組みにより newされたインスタンスを取得するようになります。

基本的にはコントローラ内で必要なインスタンスをServiceとして取得、あとはコンストラクタインジェクションやメソッドインジェクションで注入という方向性のようです。Symfony 4.xほど強力なDIの仕組みではない(Symfony 4.xのDIは本当に強力)ですが、CodeIgniter 3の CI_loaderっぽさも残っていてシンプルなので移行はしやすそうですね。
https://codeigniter4.github.io/userguide/concepts/services.html

/Config/Services.php にクラスの生成を定義。これがサービスプロバイダ的な感じですね。ここでオブジェクトを生成して返します。

上記で生成される仮で作ったライブラリです。

コントローラ内からオブジェクトを取得して利用します。

.envでの設定に対応

.env形式のファイルでフレームワークの設定値を上書きするような事が可能になります。Symfonyなど他のフレームワークで見かける様な物と同様に、環境ごとに変更したい設定が有る場合は.envファイルを用意する事で変更が可能です。

PSR-3準拠のロギング

ログを残す際のレベルがPSR-3に準拠するロガーで見かける様な物(RFC 5424)になりました。引き続きこれまで通りのlog_message関数が利用可能ですが内部的にはPSR-3準拠の関数群を持ったloggerサービスの log() を呼び出しています。DEBUGとERRORの間のレベルが欲しいと思う事が多かったので地味に助かるポイントです。他のPSR-3を実装するロガーへの入れ替えも可能なようです。

所感

CodeIgniter 3との細かい違いはそれなりに有ります。基本的にCodeIgniter 3のコントローラやモデルのコードはそのままでは動作しません。ただ、私がCodeIgniterの方向性だと(個人的に勝手に)思っている「薄く必要最低限で過剰に何かせずに分かりやすい感じ」はそのまま引き継がれているんじゃないかなという印象です。CodeIgniter 3のその部分が好きだったけど流石にもう設計の古さを感じるなという部分(名前空間非対応で有ったり)がアップデートされているので、悪くはない選択肢の一つになれればいいなぁという感想です。

追記 – 2019年9月26日(現地時刻)にCodeIgniter 4.0.0 RC 2が公開されました
https://forum.codeigniter.com/thread-74463.html

追記 – 2020年2月24日(日本時間) に CodeIgniter 4.0.0 がリリースされました。
CodeIgniter 4.0 is here!
https://forum.codeigniter.com/thread-75581.html
Release CodeIgniter 4.0.0 · codeigniter4/CodeIgniter4
https://github.com/codeigniter4/CodeIgniter4/releases/tag/4.0.0

Share this…