td2sk の日記

技術メモとかゲームとか

けものフレンズを見始めた

はじめに

珍しくツボに入ったので、ハマるまでの過程を記録しておく。
注意点は以下の通り。

  • 後から振り返っての記述なのであまり正確ではない
  • 1話についてのネタバレを多数含むので、まだ見ていない人は先に視聴することをおすすめする
  • 本文途中で若干失礼な表現*1を使っている部分がある
    • これらはすべて初見時のよく理解していなかった段階での感想であり、現在は全く異なる考えであることは先に表明しておく

きっかけ

自分は普段、全くの初見でアニメを見る習慣がない。
原作のゲームや漫画、ラノベを既読だったり、毎クール30作見てる友人が猛プッシュした1作だけを見たりと、相当なきっかけがない限り、新規開拓する気持ちがない。*2

そんな自分がなぜけものフレンズの1話を見たかといえば、まぁテンプレ文章がTLで流行っていたとか、「考察」やら「ポストアポカリプス」やら興味をそそるワードが溢れていたのも一因だが、最終的には以下3つに起因するはずだ。

  1. MOSAIC通り#131 - 2017/02/10 21:00開始 - ニコニコ生放送
  2. ASCii.jp : ASCII.jp:たーのしー!Core i3-7350Kをオーバークロックしたら5GHzで動いたよー (1/3)
    • CPUの記事まで影響されるバズり様に更に気になり出す
  3. 「けものフレンズ」は4話で豹変して着火した。ヒトがもたらす「叡智の時間」のこと | デジモノに埋もれる日々
    • 「確かに何かある」「どよどよし始めた」といったあたりまで読んで視聴決定*3

最近は見逃したアニメでも、ニコ動で1話無料で観れるのでありがたい。

ほんぺん

正直最初のうちは全く楽しみ方がわからなかった。
ニコ動の面白コメントに助けられつつ、いつ面白くなるのかなーと思いながら観ていた気がする。
だから初見時は、ここで小さく映る机も、「はぁはぁしないんだね?」の意味も何も考えていなかった。

唐突な「しんざきおにいさん」の登場に若干でない草が生えたぐらいで、その後もまだピンと来ない状況が続いた。

この状況で視聴継続を一発で決定づけたのは次のシーンだ。

錆びた看板という明らかな人工物、しかも劣化したそれの登場に想像が膨らむ。パンフレットもあまり劣化しているようには見えないし、人の手が入らなくなって数年〜数十年だろう*4。あるいは、看板のような無機物と生物が同じ時間軸にいるという保証はなく、もっと長い(それこそ生命の進化が人類に至るまでのような)時間が経過しているのかもしれない。
そして、サーバルちゃんにはパンフレットの入ったケースを開けることができないことが示される*5。地図を取り出せるかばんちゃんは(おそらく)人間であり、知恵と器用さをもったフレンズとして、このジャパリパークに大小様々な変化をもたらしていくのだろう。そしてそれはパークのバランスを崩す危うさを孕んではいないのか。彼女の正体が明らかになったとき、フレンズたちと友好な関係を維持できなくなるのではないか、そんな展開を予想させる*6
これだけ印象的なシーンだが、盛り上げる音楽も派手な演出もない。作中のキャラクターがそれを疑問に思ったりもせず、淡々と進んでいく。可愛らしいキャラクターのほのぼのとした掛け合いとのギャップが、世界に対する不安の引き立て役としてじわじわと効いてくる。

妙に音楽のかっこいい戦闘シーンの中、かばんちゃんが見せた機転は、おそらく2話以降も見せ場の1つになるのだろう。異世界に文明を持ち込む系のお話も大好物な自分にとってはなかなかうれしい要素だ。

最後に現れたラッキービーストと、それが喋ることに驚くサーバルちゃんの引きも良い。2話以降、他のフレンズに対してラッキービーストが反応するのかしないのか、すぐに確認したくなるのも致し方ない。

結局そのまま5話までニコ動で購入視聴して今に至る。
良くわからないと思っていた1話も、見返してみれば様々な発見があり、気がつけば5週ぐらいしてしまった。

世界破滅系としての側面ばかり強調してしまったが、単純なキャラクターのかわいさもなかなか。トキとキングコブラちゃんがお気に入り。

まとめ

考察が楽しいという評もあるが、個人的には、妄想が楽しいという感覚が近いと思う。
彼女たちの旅が、図書館を超えてどこに至るのか、今後は火曜深夜にリアルタイムで見守っていきたい。

おまけ

もっとお布施したいのでCDとBDの追加生産よろしくお願いします。

*1:面白さが分からなかった、など

*2:ハマっている少数のコンテンツを追いかけるだけで十分楽しいため

*3:ネタバレ回避のため、それより先の部分は5話まで追いついてから読んだ

*4:公式サイトのストーリーでは、"長い時間"と表現されている

*5:しかもとても愛らしい仕草で。この動きもすばらしいと思う

*6:インタビュー等を見るに重苦しい展開にはならないようだ

HTC VIVE に合わせて PC を新調した

普段はコスパ意識で中庸スペックにしているが、VR機械学習の関係で無駄にハイエンドにしてみた。
とりあえず部品メモ書き

スペック

  • CPU: i7-6700K
  • CPUクーラー: CRYORIG M9i
  • GPU: ZOTAC GeForce GTX 1080 AMP Edition
  • マザーボード: ASRock Z170 Extreme4
  • SSD: M.2 SSD 512GB (M8Pe 購入予定)
  • HDD: 3TB 7200rpm WD10EZEX
  • メモリ: DDR4 16GB x 2
  • 電源ユニット: V750 Semi-Modular RS750
  • DVDドライブ: GH24NSD1 BL
  • ケース: Core V31
  • OS: (余ってた Win7 Enterprise から Win10にアップグレード)

感想

  • 高い
    • PC 25万円 + VIVE 10万円
  • ファン音ほぼ聞こえないがよく冷える

千の刃濤、桃花染の皇姫 体験版考察/プレイメモ

蛮族がストーリーに大きく関わってくる前提でいろいろ妄想考察。
思いついたこと、気になった点をとりあえず箇条書きで書きだしてみる。
発売したら答え合わせしよう。

蛮族とは

  • 今回のSF(すこし不思議)要素?
  • 倒したでも、封印したでもなく、"手なづけた"という表現
    • 滅んだわけではなさそうで、現代まで生き延びた蛮族が作中に登場しそう
    • 主要キャラにも関係者が複数いるかも
  • 呪術使えそう
    • そもそも呪術的な力は蛮族由来?
    • 呪術により蛮族を手なづけた、という記述と矛盾するのでこの線は薄いかも


小此木は本当に悪人なのか

善人説
  • 朱璃を泳がせている理由がウソっぽい
    • 単なる権力欲による行動ではなさそう
    • 自白を録音させたのもわざと?
  • 小此木は蘇芳帝を殺していない?
    • 蘇芳帝はしきたりに従って自害したかも(後述)
  • 帝国に従うほうがまだマシな事態が裏で進行している?
    • 蛮族の復活とか
    • 刀を研ぎ直そうとしているのは蛮族対策?
    • 蘇芳帝が蛮族と手を組んだor蛮族の封印を維持できなかったため排除した?
悪人説
  • 徹底的な弾圧はポーズにしてもやり過ぎ?
    • 善人なら死者を弔う行事ぐらいは認めそう
  • 蛮族と関係?
    • 蛮族と手を結んで国を奪った
    • 実は蛮族の末裔
    • 蛮族の呪術で操られているor蛮族の力を得た
      • 目に埋め込まれた宝石?

善人だとして、悪人のフリをする理由はちょっとわからない。
また、善人/悪人にかかわらず、皇国人=蛮族、みたいな認識はあるかもしれない。
それゆえの弾圧?

ロシェルと部下の女

  • 名前は出ていないが力の入った立ち絵
  • 初見でユースティアのガウを思い出した
    • あるいはルキウスとシスティナ
    • シナリオ上の立ち位置も似通ってるかも
  • 蛮族の末裔っぽい
    • ロシェルは飼い主? それとも末裔?
  • 時折入る謎の声の2人、こいつらでは
    • 主人公が叫ぶシーン
    • ラスト





歴代皇帝が遵守してきた責務

"国の平穏を守れないときは、その命をもって許しを請う" という伝統に呪術的な意味はあるか

  • 例えば蛮族を手なづけた封印の強化など
  • 小此木や誘拐犯が朱璃に危害を加えない理由?
    • 下手に殺すのではなく、封印を解かせたいとか
  • 刀の声(?)に操られた滸は朱璃を本気で殺そうとしていたように思える
    • 誘拐犯は危害は加えなかった
    • 異なる目的を持ったグループ?

実家跡で拾った櫛

  • 義妹の確認に使うだけ? 他に役割は

時折入る回想の意味

  • 前世の縁?
    • 皇姫とそれを守る武人として代々(血とは別の意味で)つながりがあるとか
    • 記憶を失う前の主人公の「そうか、やはり君は」というセリフは前世の記憶?

朱璃が刀を使える理由

  • わからん^^
  • 義妹は囮で実は主人公と朱璃で兄妹だったりして。ないか

腕が治った理由

  • わからん^^

店長

  • 彼の呪術はどうも蛮族側に由来しそう。とはいえ主人公の味方っぽい
  • 蛮族の末裔か何か?

最後に来た人影

  • エルザっぽい


子柚

  • 奉刀会側のスパイがいるように、皇国or蛮族側にも奉刀会へのスパイがいるかも?
  • とはいえ奉刀会で名前の出たキャラほとんどいないし、いても候補は相当限られる

睦美さん

  • ユースティアでいうところのメルトポジ
  • サブヒロインなので死なないとは思うが、ルートによってはわからん……
  • オーガスト作品の妙に美味そうな料理描写担当

稲生滸ちゃん

  • くっそかわいいんだけど何の呪術ですか

これだけ書いて蛮族関係なかったら恥ずかしい……。

大画面4KテレビをPCディスプレイとして利用する際に考慮すること

はじめに

このたび、PC用ディスプレイとして、43インチの4Kテレビを購入した。
安くない買い物なので、失敗のないよう選ぶ観点などを簡単にまとめておく。

2016/5/11 追記

フィリップスから、下で説明する条件をすべて満たす4Kディスプレイが登場した。
http://www.philips.co.jp/c-p/BDM4350UC_11/brilliance-4k-ultra-hd-lcd-display
テレビ機能が不要な場合は、スペックを確認ののちこちらの購入検討を推奨。*1

2016/6/4 追記

フィリップスのディスプレイだが、発売2ヶ月足らずでメーカーの製品情報ページから削除されたようだ。
原因は分からないが、早くも生産終了に向かっているのかもしれない。*2

免責

本記事には間違いがあるかもしれないので、購入の際はそれぞれの製品の仕様、規格について改めて確認すること。
筆者は一切の保証をしない。

4Kテレビを選ぶ理由

一般に高解像度のディスプレイでは、DPIを調整してレンダリングの質を向上させることが多い。この場合、実質的な解像度は下がってしまう。
一方、DPI調整を行わなければ、4Kの解像度をそのまま広大な作業空間として利用できる。
しかし、そのためには文字を視認するために40インチ級の画面サイズが必要になる。
残念ながら、40インチを越えるPCディスプレイはほとんどなく、4Kテレビから探すことになる。

インチ数について

PC用4Kディスプレイは、下は23インチから上は50インチ程度まで様々なモデルが存在するが、23〜28インチの製品が多い。
DPI調整をしない場合、28インチの4Kディスプレイは14インチのフルHDディスプレイ四枚分ということになる。ノートPCで見慣れている解像度ではあるが、デスクトップ用途にはやや小さい感じがする。

一方、46インチ以上では、画面の横幅は1mを超える。PC用ディスプレイとしてデスクに置き、1m離れて使うには、大きすぎて画面全体を視認するのが難しいだろう。

結果として、30インチ台後半 〜 40インチ台前半が望ましいといえる。
このサイズでは選択肢がテレビしかないのは前述の通りだ。

4Kテレビとして出回っているものの中で、最小のものは40インチ(実寸39.5インチ)だろう。
しかし、40インチを始めとする特定サイズのパネルは、製造原価をおさえるために画素が正方形ではなく、わずか1.7%程度ではあるが本来の16:9より横長になっているようだ。映像用途であればともかく、PC用途ではこの微妙な歪みを許容できない人もいるだろう。
今回はそのような心配がないと思われる、43インチのテレビを選択した。

必要とするサイズは人によって異なる。電器屋で実機を見たり、新聞紙の切り貼りで再現したパネルを部屋に置くなどして、適切なサイズを絞り込もう。

液晶の種類について

テレビの液晶パネルでは、主に VA と IPS が用いられている。
VA は黒のコントラスト、IPS は視野角に優れており、一般的なテレビ用途では一長一短といえる。

しかし、PCディスプレイとして用いる場合は注意が必要になる。
VA パネルでは視界の中央と端で色味が変わってしまうのだ。
これは、大画面を至近距離で見ることになるため、画面中央と画面端で視線の入射角が大きく異なることによる。
そのため、PCディスプレイ用途では IPS のほうが良いだろう。VA タイプの製品を選ぶ場合は、店頭で至近距離から見て色味を確認すること。

接続方式について

4K映像を出力できるインタフェースとして、HDMI 2.0 と DisplayPort 1.2 がある。

4K(3860x2160)を越える解像度*3のディスプレイを選ぶ場合は、DisplayPort しか選択肢がない。
一方、大画面4Kの場合はテレビを使うことになるが、国内で DisplayPort 端子のあるテレビはほとんどなく、HDMI 2.0 を使うことになる。

信号

色信号のフォーマットには YCbCr444、YCbCr422、YCbCr420、RGB444 などがある。
それぞれの詳細な説明は省くが、PC環境では RGB444 を使うとよい。
PC とテレビを単純に接続しただけでは YCbCr420 となって滲みが生じたりする。

また、信号の階調としてフル(0〜255)とリミテッド(16〜235)がある。
映像信号ではリミテッドが主流なようだが、PC用ディスプレイとしてはフルが使えるものを選びたい。

PC側

4Kディスプレイを使うには、GPU の性能もそれなりに必要だ。
私の環境では MSI の GTX 970 GAMING 4G を使っている。

Haswell 以降の Intel HD Graphics も4K出力ができるそうだが、筆者環境では試していない。

グラボ選択の際には以下の点を確認すること。

  • HDMI 2.0 出力端子があること
  • 4K60p RGB444 出力に対応していること
  • 目的のアプリケーションが快適に動作すること*4

テレビ側

ほとんどのテレビはグレアパネルである。
ノングレア派としては残念だが、できる限り映り込みの少ないテレビを選択するしかない。
家電量販店で、店員に了解を取りテレビの電源を切るなどして、事前に納得行くまで確認しよう。
テレビ購入の際には以下の点に注意する。

  • HDMI 2.0 対応端子があること
  • 4K60p 表示できること
  • PC モードがあること
    • 低遅延かつ余計な映像処理をしないモード
  • フルレンジの RGB444 信号を表示できること
  • 画素が正方形であること
  • 映り込みがきつくないこと

今回はこの条件を満たすテレビとして、東芝の43G20Xを選択した*5。購入時価格は11万円前半。

2016/5/11 追記
43G20Xだが、購入後3ヶ月で故障した。そういったことが起こるのは仕方ないことだが
なぜだか新品への交換手配で2ヶ月近く待たされている。*6
このようなサポート体制では、2〜3ヶ月テレビが使えなくても困らない奇特な人以外には購入をおすすめできない。

テレビ側設定

43G20X で、PCをHDMI 1に接続した際の設定例を紹介する。

  • 映像設定
    • 映像メニュー: PC
    • 映像調整
      • バックライト: 20
  • 機能設定
    • 外部入力設定
      • 外部入力表示設定
        • HDMI1: PC
      • HDMI 1 モード設定: 高速信号モード
      • HDMI 自動画質モード設定
      • RGB レンジ設定
        • HDMI1: オート
    • 信号フォーマット詳細表示設定: オン

モード設定で高速信号モード*7を選ぶことで、PC 側で YCbCr444 や RGB444 を選択できるようになる。

PC側設定

私の使っている GTX970 では、NVIDIA のコントロールパネルから設定ができる。
今回は以下のように設定した。

  • 解像度: 4k x 2k (3860x2160)
  • リフレッシュレート: 60Hz
  • 色深度: 最高(32bit)
  • 出力時色深度: 8bpc
  • 出力カラーフォーマット: RGB
  • 出力ダイナミックレンジ: フル

カラーフォーマットやダイナミックレンジの変更ができない場合、テレビ側の設定が間違っている可能性がある。
テレビの設定を見直すこと。

確認

テレビリモコンの画面表示ボタンを押すと現状の設定を確認することができる。
以下の設定になっていればよい。

  • コンテンツタイプ: グラフィックス
  • 解像度: 3840 x 2160
  • 走査方式: プログレッシブ
  • 垂直周波数: 60Hz
  • アスペクト比: 16:9
  • 色深度: 24bit
  • 色空間: sRGB
  • RGB/Y色差: RGB(フル)
  • クロマフォーマット: (空欄)
  • 音声フォーマット: PCM

RGB(リミテッド) や、クロマフォーマットの項にYCbCrなどの表記がある場合は、正しく設定できていない。

まとめ

(TODO 後日追記予定)

*1:サブピクセル配列がBGRであること、わずかな遅延があることが報告されているため、事前に確認すること。

*2:価格com等で初期不良の話を見かけるのと関係があるのかも……?

*3:4160x2160 や 5120x2880

*4:4K解像度で最新のハイエンドゲームを遊ぶ場合、60fpsを維持するにはGTX980の2枚刺しやそれ以上の性能が必要になる。軽めのゲームならIntel HD Graphics でも動く

*5:43G20X が本当に RGB444 のフルレンジをそのまま表示できるのか、筆者は保証しない

*6:現行モデルのため、市中在庫も十分にあるはずだが……

*7:モード名はメーカーや機種毎に異なるようだ

【Makefile】依存関係を自動生成する試み2014

かつて書いたMakefile、改めて見なおしてみるとどうにも醜い。
10分ほど試行錯誤したら、汚いハックをあっさり取り除けたので訂正して公開。
2年前の自分は何考えてたんだ……。

以下、パブリックドメインとするので、煮るなり焼くなり好きにしてください。

PROGRAM_NAME := $(shell basename `pwd`)
 
# compiler
CXX := clang++
CXXFLAGS := -O2 -Wextra
LIBS :=
 
# out
OUT_DIR := out
 
# program
PROGRAM_DIR := $(OUT_DIR)/bin
PROGRAM := $(PROGRAM_DIR)/$(PROGRAM_NAME)
 
# sources
SOURCE_DIR := src
SOURCES := $(wildcard $(SOURCE_DIR)/*.cpp)
SOURCE_NAMES = $(notdir $(SOURCES))
 
# headers
HEADER_DIR := include
HEADERS := $(wildcard $(HEADER_DIR)/*.hpp)
 
# objs
OBJ_DIR := $(OUT_DIR)/obj
OBJS := $(addprefix $(OBJ_DIR)/,$(SOURCE_NAMES:.cpp=.o))
 
# dependencies
DEPEND_DIR := $(OUT_DIR)/depend
DEPENDS := $(addprefix $(DEPEND_DIR)/,$(SOURCE_NAMES:.cpp=.depend))
 
.PHONY: all
all: $(DEPENDS) $(PROGRAM)
$(PROGRAM): $(OBJS)
        @mkdir -p $(PROGRAM_DIR)
        $(CXX) $(CXXFLAGS) $(LIBS) $^ -o $(PROGRAM)
 
$(DEPEND_DIR)/%.depend: $(SOURCE_DIR)/%.cpp $(HEADERS)
        @echo "generating $@"
        @mkdir -p $(DEPEND_DIR)
        @$(CXX) $(CXXFLAGS) $(LIBS) -I$(HEADER_DIR) -MM $< > $@
 
$(OBJ_DIR)/%.o: $(SOURCE_DIR)/%.cpp
        @mkdir -p $(OBJ_DIR)
        $(CXX) $(CXXFLAGS) $(LIBS) -I$(HEADER_DIR) -c $^ -o $@
 
 
ifneq "$(MAKECMDGOALS)" "clean"
-include $(DEPENDS)
endif
 
.PHONY : clean
clean:
        $(RM) -r $(OUT_DIR)

makedepend? なにそれおいしいの?

CM12 for HTCJ

概要

CyanogenMod 12 (Android 5.0) が起動できたのでご報告

動作状況

安定しているもの
  • Android5.0
  • SDカード
  • 標準アプリ
  • 充電ランプ
  • WiFi
  • Bluetooth (未検証)
  • センサー
    • 明るさ
    • 回転
既知の問題

お願い

  • 起動しなくても文句言わない
  • 高級文鎮になっても文句言わない
  • 不具合報告はどんどん投げよう
  • 不具合報告に対応しなくても文句言わない
    • 自分でパッチを投げよう

ビルド手順

# ファイル取得
cd $ANDROID_ROOT

repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0
repo sync -j32

git clone git://github.com/CyanogenMod/android_device_htc_msm8960-common -b cm-12.0 device/htc/msm8960-common
git clone git://github.com/CyanogenMod/android_device_htc_s4-common -b cm-12.0 device/htc/s4-common
git clone git://github.com/td2sk/android_device_htc_valentewx -b cm-12.0 device/htc/valentewx

git clone git://github.com/kbc-developers/android_kernel_htc_msm8960 -b cm-11.0 kernel/htc/msm8960
git clone git://github.com/TheMuppets/proprietary_vendor_htc -b cm-12.0 vendor/htc

git clone git://github.com/kbc-developers/proprietary_vendor_htc -b cm-12.0 vendor/htc_cm-11.0 --depth 1
mv $ANDROID_ROOT/vendor/htc_cm-11.0/valentewx $ANDROID_ROOT/vendor/htc/

cd $ANDROID_ROOT/vendor/cm
./get-prebuilts
echo "add_lunch_combo cm_valentewx-userdebug" >> vendorsetup.sh

# 動かないので、さよなら
cd $ANDROID_ROOT/device/htc/s4-common
rm camera -rf

# ifneq のデバイス名判定に valentewx を追加する
cd $ANDROID_ROOT/device/htc/s4-common
vi Android.mk
vi wcnss_htc/Android.mk


# ビルド
cd $ANDROID_ROOT
brunch

できたもの

kienu
AndroidFileHost

焼き方

# 0. ファイルを準備する
# 自分でビルドする or 上のリンクから取得

# 1. 改変リカバリでブート
fastboot boot custom-recovery.img

# 2. /bin/sh を送り込む
#   自分でビルドしたひとはそのまま実行
#   ダウンロードしたものを焼く人は
#     * cm12-alpha.7z にある out フォルダのパスを、環境変数 ANDROID_PRODUCT_ROOT に設定
adb sync

# 3. /system 以下を整理
#   data以下は必要に応じて削除 (アプリ類を消さないと動かないかも)
adb shell
(adb) mount system
(adb) mount data
(adb) rm -rf /system/*
(adb) rm -rf /data/app/*
(adb) rm -rf /data/app-private/*
(adb) rm -rf /data/dalvik-cache/*
(adb) rm -rf /data/data/*

# 4. adb sync で流し込み
adb sync

# 5. bootloader へ再起動し、改変イメージでブート
#  初回起動には時間がかかるので、気長に待つ
fastboot boot boot.img

改変内容

リカバリ
  • fstab の system の項目を ro から rw に変更
ブート
  • USB デバッグしやすいように、下記属性を設定
    • ro.adb.secure=0
    • ro.secure=0
カーネル
  • SELinux を Disable に設定
    • デフォルトで permissive になるはずなので設定不要?

画面