2018年10月14日

そろそろ旧スマホの古さも感じるようになって来たので…iPhone8への機種変更に意外と苦労

iPhone6sを使い始めてから、もう2年半ほど経過しました。
また、ようやく酷暑が終わって秋が訪れ、空気が冷え込んできたこともあり、バッテリーの劣化具合も顕著に表れるようになって来ました。

当初の予定では、iPhone6sを使い始めてから2年経過したら、新しいスマホに買い換えようと思っていたのですが、それから半年経過し、そろそろさすがに買い換えようかということで。

iPhone8を買うことにしました。
iphone8kattazo.jpg

スマホを胸ポケットに入れていることが多いのですが、いつか手を洗っているときなど、いつ水の中に落下させてしまうのではないかとヒヤヒヤしていたり。
胸ポケットに入れていることで体から発生した水蒸気で壊れてしまうんではないかとヒヤヒヤしたり。

そんなのもオサラバ。耐水性のiPhoneです。
(防水ではないので要注意。水の中に入れっぱなしにしたり、シャワーをかけるなどの水圧をかけたりするのはNG)

これで、個人的に使えるおサイフの中身はスッカラカンになりました。
明日からの昼食は、相当貧相になることを覚悟せねばなりません。
すべてにおいて倹約に努めることとして。

iPhone6sからiPhone8への移行にあたり、内部データの移行については、気軽に考えておりました。
古いiPhone6sから、PCに暗号化オプション付きのバックアップを行い、iPhone8へ復元をすれば良いんでしょ?くらいの考えで。

でも、それではダメだったみたいです。

LINEは、少なくともアカウント引継ぎ設定を行う必要がありました。アカウント引継ぎ後は、旧iPhoneでのアカウント利用は不可となります。
docomoのキャリアメールやメッセージリクエストも、移行されませんでした。Wi-Fiを切った上で初期設定を実施する必要がありました。
Googleアプリ関連も、すべてログインし直し。(Gmail, Google Photo, Google Adsence, …等々)
電子書籍関連のアプリも、ログインし直しの上、データはダウンロードし直し。

そして、一番困ったのは、Apple IDでした。
移行にあたり、新しい環境からのログインが行われることを承認する必要があるのですが、承認に際して表示される6桁の数字が、旧iPhone上で0.5秒間くらいしか表示されないという不可思議な現象が発生し、番号が覚えられない&入力できない。

もしやと思い、iPadを起動しておいたところ、iPadの方に6桁の番号が表示されるようになりました。こちらは0.5秒で消えるということはなく、番号を覚え&入力することができました。

こういうあたりのバグ(?)は勘弁してほしいですね。
これって、困っている人は多いんではないでしょうか。誰もがiPadを持っているわけではないでしょうし。


続きを読む
posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | スマホ

2018年10月13日

非可逆性のやり込み要素。ドラクエ4とドラクエ11。

以前、「ドラクエ11は面白かったが、ラスボス撃破後の継続シナリオに納得できない」という意見を、ネット上で見かけたことがありました。僕自身は、ドラクエ11を、ラスボス撃破語の継続シナリオも含めて楽しめたので、どうしてそういう意見が生じるのか、不思議に思いつつも、何か心に引っかかるものがあって、考え続けていました。

ドラゴンクエストシリーズで、ラスボス撃破後にシナリオが継続したり、真のラスボスのようなものが登場するのは、SFC版のドラクエ5からだったと思います。

ドラクエ5
ミルドラース撃破後に新たな洞窟の入り口が現れる。さらに強い武器防具が手に入り、新たなモンスターも仲間になる。最強の敵エスタークが登場する。ただし、物語としてはミルドラース撃破前に戻るため、再びミルドラースと戦うことは可能。
ドラクエ6
デスタムーア撃破後に、それまで登場しなかった新しい職業に就くことが可能。すべての職業をマスターすることで裏ダンジョンへの道が開け、その奥にいるボス「ダークドレアム」に挑戦できる。ダークドレアム撃破後は、ダークドレアムvsデスタムーアの戦闘が見られる。
物語としては、デスタムーア撃破前に戻るため、再びデスタムーアと戦うことは可能。
SFC版ドラクエ3
ゾーマ撃破後に、隠しダンジョンへ入れるようになる。ここで真のラスボス「しんりゅう」と戦うことができる。
物語としてはゾーマ撃破前に戻るため、再びゾーマと戦うことは可能。
また、エンディング後にゆうしゃをパーティから外すことができるようになる(これはFC版でも可能)。
ドラクエ7
オルゴ・デミーラ撃破後のエンディングの中で、新たな石版を入手できる。その石版を使う事で新たな世界に行くことができ、「かみさま」など様々なボスと戦うことができる。また、移民の街を広げることができる。
物語としては、オルゴ・デミーラ撃破前に戻るため、再びオルゴ・デミーラと戦うことは可能。
PS版ドラクエ4
デスピサロ撃破後に、ロザリーを生き返らせることができるようになる。デスピサロとロザリーを出会わせることで、デスピサロを正気に戻すことができるようになる。デスピサロは仲間になる。
デスピサロの武器防具を集めるために、裏ダンジョンへ挑戦可能になる。
この後、ロザリーを死に追いやった真のラスボス「エビルプリースト」と戦うことが可能。
デスピサロはパーティメンバーになってしまうため、再びデスピサロと戦うことはできない。
ドラクエ8
暗黒神ラプソーンの撃破後に、新たな洞窟に入れるようになる。その先にある場所で、主人公の生い立ちを知ることができる。裏ボスと戦闘が可能になる。裏ボスとの戦闘は回を追うごとに激しくなる。
物語としては、暗黒神ラプソーン撃破前に戻るため、再び暗黒神ラプソーンと戦うことは可能。
ドラクエ9
エルギオス撃破後、エンディングを終えても、そのまま何事も無かったように物語は継続する。
ストーリーは進行し、新しい女神の果実も手に入り、空を飛ぶためのアイテムも手に入る。
宝の地図による冒険が本格化する。
セレシアと会話することで、エルギオスとの再戦闘は可能になる。
ドラクエ11
魔王ウルノーガ/邪竜ウルナーガ撃破後、エンディングを終えても、そのまま物語が進行する。
冒険の途中で死んだ仲間と再会するために、平和になり復興しつつある世界を捨てて、時間を巻き戻すかどうかの判断を下すよう、プレイヤーに求められる。
時間を戻すと、世界を崩壊させることなくウルノーガを撃破できるが、その後、真のラスボス「邪神ニズセルファ」と戦うことになる。その過程で、様々な世界の謎を知ることになる。

ドラクエ11のシナリオ継続の仕組みは、ストーリーの中に「やり込み要素」を含ませた、面白い仕組みであったと思います。
それ以外は、ドラクエ9を除けば、後付け感がありました。

また、ドラクエ11の場合は、シナリオを継続させなくても、世界は平和になり、徐々に復興しつつあり、失った仲間の姉妹は強く成長しているのだから、そのままシナリオを終えても罪悪感はありません。シナリオを継続しないことも選択肢として可能にしたのです。

ただ、ゲーマーとして、やり込みをしないのはどうか?
知らないストーリーを残すのはどうか?という想いから、シナリオ継続を望まざるを得なかった人は多かったと思います。

ドラクエ4の場合、ラスボスに再挑戦できなくなるという制約はあるものの、世界の物語は、仲間との関係は、そのまま継続します。

ドラクエ11の場合は、世界を捨て、仲間を捨て、時間を巻き戻すことになります。勇者一人で戻ることになります。これは不可逆な選択です。
ゲームには壮大なシナリオが組み込まれています。そのシナリオに没入すればするほど、世界を捨て、仲間を捨て、勇者一人しか記憶を保っていない世界へ飛び出していくことの不可逆な選択をすることに悩み、苦しむことになります。

そこには、このゲームを進める事への、ある種の苦痛を感じる人もいるでしょう。
だから、こんなシナリオを組んでしまったことを批判したくなる人もいるでしょう。

それだけ、人の心に刺さるシナリオを書いてしまう堀井氏の技術力の高さに圧倒されているということかもしれません。

posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | ゲーム

2018年10月12日

CPUクロックを測る方法がちょっと間違ってたなぁ

昔、いじくるつくーるを作成していた際、利用者からの問合せの時にPC環境情報を効率よく収集してもらうための「環境情報の表示」(CCPU)という機能を付けていました。

このこともあり、「いじくるつくーる」は、「環境情報も表示できるカスタマイズツール」なんて言われたこともありました。
表示できる環境情報の中には、CPUのクロック周波数を表示する機能もありまして、先日、ちょっと懐かしくなって、改めてどんなことをやっていたのか振り返ってみようと思ったのですが、衝撃の事実が分かりました。

ちょっとやり方、間違ってたかも。

まぁ、CPUのクロック周波数が判明している色々な環境で試し、問題が露呈していなかったわけなので、現実的な問題とはならなかったみたいですけどね。今も当時みたいに頻繁にメンテナンスをしていたなら、慌てて直していたろうなぁ。


CPUのクロック周波数の調査は、Intelのx86系のCPUが持つ「RDTSC」(Read TimeStamp Counter)という命令を使っています。「環境情報の表示」(CCPU)で間違っていた箇所は、次の箇所でした。

  1. CPUには、動作効率化のため、命令の順序を入れ替えて実行する「アウト オブ オーダー実行」という機構がある。これにより、RDTSC周辺の実行順序が入れ替わると問題が生じることになる。そのため、意図通りの命令実行順とするため、直前にCPUID命令を入れなければならない。
  2. RDTSC命令の結果は、EAXレジスタとEDXレジスタに結果値を格納する。これは、C言語で64bit変数を戻り値とする場合のレジスタと一致する。よって、RDTSC命令の結果をがんばって組み立てて64bit変数にしてreturnに渡す必要はない。
もしかしたら、上記2の間違えを犯していたおかげで命令順が複雑になり、上記1の問題が生じなかった可能性もあるのかもしれないと思うし、上記2の間違えを犯していたとしてもVisual C++の高度な最適化機構により64bit変数の組み立てとreturnへの引き渡しは削除されていたのかもしれない。

だから、表面上問題は発生していないように見えていたのかもしれない。
将来的にコンパイラが変わったら、問題が発生していたのかもしれない。

いやぁ、怖いですね。
「アウト オブ オーダー実行」については、知識としては知っていましたが、情報処理試験で頻出するパイプライン実行と比べると「まだまだ他人事」くらいのことと考えていたので、全然身に染みて分かっていませんでした。

こういうコンピュータの世界って、情報処理試験のために習う知識が、実際に自分が使っているコンピュータの挙動が結び付かずに覚えていることが、結構ありますよね。

例えば、「Direct Memory Access」。
CPUを介さずに、メモリ-メモリ間や、ディスク-メモリ間で、直接データをやりとりする方式のことを指すんですが、これが、自作PC作成の時に散々出てきた「UltraDMA」という用語と、頭の中で結びついてなかった。

それから「シリアル信号」。
シリアル通信では1ビットずつデータを流し、パラレル通信では複数ビットずつデータを流す。
パラレル通信の方が複数ビットまとめて転送できる分、有利のはずだが、超高速通信時代ではノイズやケーブル内の不純物、ケーブル長の変化のせいで、当時到着を期待できなくなったため、シリアル通信が主流になってきている。
で、最近、スマホの充電等で大活躍の「USB」。PC等母艦機との通信の際は、シリアル通信するのか? パラレル通信するのか?

「USB」は「Universal Serial Bus」の略であり、2文字目のSは「シリアル」の略なわけだから、これはシリアル通信。
でも、頭の中でサッと結びついていなかったりする。

ちなみに、USBがシリアルかパラレルかを問う質問は、基本情報処理試験か第二種情報処理試験の試験でも出ていたような気がする。だいぶ前だけど。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング