コンピュータの日記です

目次

2017-10-27 Android Chromeでスクロールがおかしくなるバグの原因と修正
2017-10-23 P10 に乗り換え
2017-09-12 ヒューマン・リソース・マシーン
2017-08-08 スプラトゥーン2 その後
2017-07-24 スプラトゥーン2初感
2017-07-12 ジョージ・イーストマン 誕生日(1854)
2017-06-21 ゼルダ雑感
2017-06-13 遅い Javascript を iframe に追い出す方法
2017-05-28 CRT処分
2017-04-30 Switch 買った。
2017-04-14 フィル・カッツ 命日(2000)
2017-04-07 プラスとピリオドの取り違え
2017-03-31 西角友宏さん 誕生日(1944)
2017-03-30 ルータ不調
2017-03-28 X68000 発売日 (1987)
2017-03-22 2つの特許の出願日(1971)
2017-03-16 タネンバウム教授(1944) ストールマン(1953) 誕生日
2017-03-15 世界最初のドメイン登録(1985)
2017-03-10 QV-10 発売日(1995)
2017-03-09 BSD 初リリース日 (1978)
 …同じテーマのほかの記事
Android Chromeでスクロールがおかしくなるバグの原因と修正  2017-10-27 11:30:48  コンピュータ

▲目次へ ⇒この記事のURL

フリーのプログラマーとしてやっているので、仕事内容はどんどん変わる。

ここ数カ月は、ある企業の WEB サイトデザインの大規模変更を手伝っている。


すでに長年運用されているサイトで、Wordpress で構築されている。

プログラムは拡張を繰り返してスパゲッティ状態だが、今回は「デザイン改修」が趣旨なので、プログラムは出来るだけそのまま活かして…

という指示。


ほぼ完成していたのだが、今月の中ごろに、一部の Android 端末でスクロールがおかしい、というバグが報告された。




Chrome のアップデートで、スクロールがおかしくなるバグが混入したらしい


…と報じているサイトがあった。9月28日の記事で、アップデートは9月25日…ということになっているが、実際には19日。


#Android アプリを配布する Google Play ストアでは、バグやウィルス入りのアプリが一気に広まるのを防止するため、複数のサーバーで徐々に配信が開始される。

 アプリの登録・公開は19日だったが、実際にアップデートが入るのは端末ごとに接続するサーバーにより異なり、25日が嘘だということではない。



あぁ、Chrome のバグならしょうがない。そのうちアップデートされるだろうから、この件は一時保留…となったのだが、大きなバグに思える割になかなか修正されない。


クライアントからの強い修正依頼もあり、たとえ Chrome に原因があろうとも、多少別の機能に影響が出ても回避・修正せよ、となったのが昨日。

徹底的に原因の解明が始まった。




改めて確認すると、自分の端末でもバグが出た。


先日新しい端末にしたばかりで、以前の端末では問題が出なかった…と思う。

普段は PC の Chrome で、スマホエミュレートして確認をしているが、やはり問題は出ていない。


ともかく、手元でバグを再現できるようになった。こんなに心強いことはない。

しばらくいじって、バグの出る状況を確認。



スマホのブラウザの場合、スクロールによってアドレスバー…URL を表示したり、入力したりするところが、現れたり消えたりする。

この状態が切り替わった後、最初の Idle 状態にブラウザがなった時に、スクロール位置がトップに戻ってしまう、というバグが出現した。


Idle 状態って表現は説明がいるだろう。

アドレスバーはスクロールに合わせて出入りするが、スクロールが「止まって」も、指が放されるまではスクロールが続いている、と考える。

また、指を放す際にフリックすると、慣性スクロールが始まる。この慣性スクロールが終わるまでは、スクロールが続いている。


そして、スクロールが終わった時が「Idle 状態になった時」だ。

この瞬間にバグが出る。



多少の心当たりはあった。

作製しているサイトでは、画面上にある「ナビゲーションボタン」を、スクロールに合わせて表示を切り替えていた。


ページ表示時には、ページのヘッダ部分があり、その下にナビゲーションがついている。

文章を読み進め、下に向かってスクロールすると、当然ヘッダとナビゲーションは上に消えていく。


…はずなのだが、ナビゲーションがちょうど画面の上に貼りついたタイミングから、ナビゲーションだけがその位置に固定される。

CSS を position:fixed に変えているわけだが、これは画面スクロールに合わせて行っている。


スクロールのタイミングに合わせてバグが出る、というのは、この一連のプログラムと関係があるのかもしれない。

そこで、Javascript の該当プログラムを動かないようにしてみる。


…それでもバグは出た。




サイトはすでに古いものだし、Wordpress で構築されている。

他にも無数の Javascript プログラムが動いている。


このどこかでおかしくなっているのかもしれないし、全く違うバグかもしれない。


いろいろとプログラムや CSS など、外部から読み込むプログラムを外しては、リロードしてみる。

この最中、不思議なことに気が付いた。


ある程度スクロールを進めた状態でリロードを行うと、まず画面のトップ位置が表示され、続いてリロード前の位置にジャンプし、さらにまたトップ位置に戻される。


…普通は、直前まで読み進めた位置にジャンプして終わりのはずだ。最後の「トップ位置に戻る」が余計だ。


何度かリロードして観察して、このタイミングは、画面上の全要素を配置し終わったタイミング、いわゆる「window.load」だ、と見きわめた。

Javascript で何か処理が行われている可能性が高い。



無数の Javascript ファイルのどこで処理が行われているのかわからないが、ステップ実行を延々と…10分以上も繰り返して、やっと最後の「おかしな動作」をするタイミングを見極めた。


ウィンドウのロード、リサイズ時に、document.body.scrollTop を調べ 0 ならば window.scrollTo(0,1) する、というプログラムがあった。




このプログラム、5年くらい WEB サイト構築をしている人なら何かわかるだろう。


5年ほど前に、「ページを開いた瞬間から、アドレスバーが消えて画面が広く読みやすい」という WEB デザインが流行したことがある。


アドレスバーは、下にスクロールすれば消える。これを Javascript で実現するのが、上のプログラムだ。

ロード・リサイズ時に画面の一番上を表示していたら…つまり、ページ読み込み直後なら、1ドットだけ下にずらしてやる。

すると、アドレスバーが消えた。


しかし、アドレスバーが消えると表示中のサイトの URL もわからなくなるわけで、フィッシング詐欺には好都合だった。

他のサイトと同じような動作なら疑問に思う人もいない。そういう詐欺サイトが横行した。


これをうけて、スマホのブラウザでは、人が操作しない、Javascript でのスクロールはアドレスバーに影響を与えないようになった。



つまり、先のプログラムは今となっては無意味だ。

無意味だけど、やっぱり読み込み直後には1ドットスクロールする。

それ以外は何もせず、無害なプログラム、のはずだった。




スクロール位置は、古くは document.body.scrollTop で調べられた。

しかし、body 要素は「ドキュメントの表示部分」を意味する。それに対し、スクロール位置というのは、表示ウィンドウの問題とか、もっと別の次元のものだ。


この論理的なおかしさをただすため、document.documentElement.scrollTop でスクロール位置を調べる、という方法が標準化された。


Chrome の元となっていた webkit にもこの変更は反映された。

だけど、コンパイル時のオプション設定により、新しい「標準モード」と、古い「互換モード」を、切り替えられるようになっていた。


Chrome では過去との互換性のため、body.scrollTop が使い続けられていた。

しかし、9月頭にアップデートされた Chrome で、body.scrollTop から documentElement.scrollTop に切り替えられたらしい


こちらにgitログがある。

 …が、超巨大なページの上、技術者でないと意味が分からないので、特に興味が無ければ読まないのがお勧め。

 で、このログで scrollTopLeftInterop を検索すると、default が Enable され、WebView が Disable されているのがわかる)



これは、「いつか行う、と予定されていた変更」が実行されたに過ぎない。


すでに documentElement を使用していたブラウザもあるし、「ブラウザを調べて」ではなく、「環境を調べて」動作を変えるプログラムを作っておかなくてはならなかった。


そのための期間も十分に与えられていたにもかかわらず、動作がおかしくなったサイトがあったとすれば、そのサイトに潜在バグがあったと言わざるを得ないだろう。


これは Chrome のバグなどではなく、もちろん今後のアップデートで修正されるものでもない。




上に書いたのはデスクトップ版の話で、同じ変更が9月下旬に Android 版 Chrome に入った。


今後、body.scrollTop は、実際のスクロール位置を反映せず、常に 0 となる。



これが、2012 年ごろに流行った「アドレスバーを消す」ための Javascript と、非常に相性が悪い。


画面ロード時・リサイズ時には、本来「現在のスクロール位置が 0 なら」、scrollTo(0,1) でアドレスバーを消していた。

これが、現在のスクロール位置に関わらず、いつでも scrollTo(0,1) で、ページトップに戻ることになる。


いや、これでもまだ、PC 版で同じプログラムが動いていたとしてもあまり害をなさない。

ロード時に動くのは問題ないし、ページ中でのウィンドウリサイズも、それほど行わないからだ。



スマホだと、スクロールしただけで、アドレスバーが表示・消去される。

アドレスバーを消す理由は、コンテンツの表示領域を広げるためだ。


このため、Chrome ではスクロールしただけでリサイズイベントが発行されることがある。

どうも、このイベントの発行は、Scroll イベントが置き続けている時は避けて、Idle 状態になった時に行われるようだ。



これで、最初に書いたバグの条件がすべて整った。


スクロールに伴い、アドレスバーの表示・非表示が切り替わると、その後最初に Idle 状態になったタイミングで、現在のスクロール位置に関わらず、画面トップに戻される。




原因が理解できれば、修正も簡単。

幸いなことに、「1ドットスクロールさせる」というプログラムは、2012年頃には意味のあるものだったが、今では全く意味をなさない。

このプログラム自体を消してしまおう。


これで正常な動作に戻った。



今回の仕事ではこれで終わりだったが、「スクロール位置を変更したい」場合の動作も変わっているらしい。


jquery 的表現だと、今まで Chrome は $('body').scrollTop(y) などでスクロール位置を指定できた。

これを、$('html').scrollTop(y) にする必要がある。


…FireFox では、html に指定しなくてはならなかったので、$('html,body').scrollTop(y) としているサイトも多いかもしれない。

この場合、特に問題は出ず、今まで通り動き続ける。


機種判別して使い分けていた場合は、修正が必要だ。


▲目次へ ⇒この記事のURL

別年同日の日記

01年 10/27

02年 妹主演の劇を見る

04年 枝豆

11年 太陽電池

16年 ダイナマイト刑事


名前 内容

P10 に乗り換え  2017-10-23 15:40:13  コンピュータ 歯車

▲目次へ ⇒この記事のURL

P10ってわかりにくい商品名だな。Huawei P10。いわゆるスマートホンだ。


今まで使っていた Honor6 Plus と同じ会社の、比較的最新の上位機種に当たる。

買い替えになるのだけど、Honor6 Plus に不満があったわけではない。




Honor6 Plus を購入したのは2年近く前。妻も一緒にスマホを購入した。

妻のスマホは Zenfon2 Laser 。


購入時点でのネットでの評価は悪くなかったし、値段の割に性能が良くて当時のベストセラー機種の一つなのだけど、その後評価が落ちた機種でもある。

Pokemon Go がブームになった時に、この機種ではうまく遊べなかったから。


Zenfon2 Laser は GPS のアンテナが弱く、位置データ取得が怪しい。

どうも「GPS を ON にしてから最初の位置測定」までが時間がかかるようで、バックグラウンドで常に GPS 測定をしているとそれなりに正しい位置を測定してくれる。

でも、それだと無茶苦茶電池を食う。


Pokemon Go を快適に遊ぶための電子ガジェット「Pokemon Go Plus」も公式に対応しておらず、実際うまく接続できない。

もう1年以上前、発売したばかりで入手困難な時期に購入したにもかかわらず、1度も使えていないまま。



さらに加えて、Zenfon2 Laser はカメラ性能が低い。

「レーザー測位するから暗がりでもピント合わせが速く、良い写真が撮れる」というのが名前の由来の機種だけど、肝心のカメラが暗がりに弱く、明るくても写真写りが悪い。



そんなわけで、我慢して使っていたのだけど、半年くらい前から買い替えを検討していた。




上のような理由なので、できることなら Go Plus が動く機種がいい。

でも、これが非常に難しい。


Go Plus は、Android での動作が壊滅的だ。

動く機種もあるのだけど、動かない機種が多い。動作報告されている機種でも、動かないという報告もある。


これに対し、iPhone は安定して動く…とされていた。iOS 11 が出るまでは。

先日 iOS 11 が出てからは、動かなくなったという報告が相次いでいるのだ。


…えーとつまり、iPhone を買っても Android を買っても、Go Plus を使うのはギャンブルだということになる。


ずっと妻は悩んでいたが、本格的に「思い切って買い換えようと思う」と相談を受けたのが1か月ほど前。

調べてみると、Android なら「最近の」Huawei 系の端末は動作しやすい、とわかる。


僕が使っている Honor 6 Plus は最近の機種ではないのでダメだ。



Go Plus の動作がギャンブルなら、それ以外の観点で選ぼう。

カメラ性能にも不満があるのだから、せめてカメラが満足いきそうな機種を選んだらどうだろう。


こうやって調べていた中で、Honor 9 の発売のニュースを知った。




Honor 9 の性能を調べるうち、これが P10 の廉価版に当たる。ということも分かった。

P10 を調べると、カメラ性能が少し上で、値段も少し高い。


カメラ性能が満足できるものを買おう、と考えていたので、少し高くても P10 にすると決定。



…で、購入決定の翌日には届いたのだけど、結論から言えば Go Plus は使えなかった。


多くの動作報告があるのになぜ? と思ったが、調べると動かないという報告もあった。

さらに調べると、他の機種での報告なのだけど、「発売してすぐに買った Go Plus はつながらなかったけど、最近買ったのはつながった」という報告を発見。


つまり、Go Plus にはバージョン違いがあり、初期バージョンはとにかく接続性が悪いらしい。



じゃぁ、Go Plus 買い直せばよかったんや!

と調べてみるが、どうも生産を停止しているようだ。売っているのは転売屋ばかり。


…これはあれだな。あまりにも「不良品」というクレームが多いので、設計直すことにしたかなにかで生産停止しているんだな。



ちなみに、Go Plus は「たとえ初期不良でも修理・交換に応じない」と最初から明言して販売している、という不思議な販売方法を取っている。

多分、発売前から何らかの不良品であることを、発売側が認識していたのではないかと思う。


#解析したわけではないので正確なことは言えないが、おそらく Bluetooth の標準的な規格に沿っていない。

 iPhone しか繋がらなかったのは、iPhone のバグか何かに由来した接続方法をしていて、iOS 11 になって繋がらなくなった、というのはそのバグが修正されたためではないかと思う。

 Android で接続できる機種・できない機種があったのは、同じようなバグを抱えていたかどうかによるのだろう。

 (Huawei は、あるころのアップデートで Go Plus が動作するようになったので、わざわざバグを再現したのかもしれない。

  また、同じバグを持った機種が偶然でそれほど多いとも思わないので、どこかのチップメーカーが提供した標準デバイスドライバがバグ含みで、そのチップを使った機種を中心にバグがあった…と想像)




とりあえず仕方がないから P10 を使おう、それでも、Zenfone2 Laser よりは GPS 感度良いのだし…と決めた翌日、妻の方から提案があった。


僕が P10 を使うことにして、中古の honor 6 plus を譲ってくれないか。



僕としては最新機種を使わせてもらうのはありがたい。

特にガジェット好きではないし、honor 6 plus に不満はなかったのだけど。


妻が Go Plus を使いたい一番の理由は、手の小さな妻では、スマホを持ちながら走り回っていると、良く落としてしまうからだった。

Go Plus があれば、スマホはカバンなどの中に入れたままでゲームの操作ができる。


ここで、Go Plus が使えないまま P10 を使うと、折角の新しい端末を落としまくってしまい、もったいないことになりそうだ、という懸念。

それなら、中古機種を最初から使っていたほうが、落としたとしても気が楽だそうだ。



と、説明が長かったが、そんな経緯で急に P10 を使うことになった。




Honor 6 Plus は micro SIM だったが、P10 は nano SIM 。なので、SIM 交換が必要だった。

ちなみに、Zenfone2 Laser は micro SIM なので、妻はそのまま乗り換えられる。


新しい SIM を待ちながら、P10 に乗り換えの準備。

同じ会社の上位機種なので、使い勝手はほとんど変わらない。特に戸惑いもなく移行できた。


Huawei は、iPhone を強く意識して端末を作っている。Android としてはかなり使い勝手を改造していて、Androidに慣れた人が使うと戸惑うだろう。

しかし、iPhone から Android に乗り換える際には良い端末だと言える。


そして、この改造のついでに、普通の Android では使えない「ちょっとした機能」をたくさん搭載している。

機能が多すぎて、設定するのが大変ではあるのだけど、何も設定しなければ普通の Android と同じように動くので気にしないでもいい。


たとえば、登録されている WiFi 局がないときは、WiFi を OFF にしてしまい、時々確認のために ON にする、という機能がある。

これにより、電池の持ちをよくできる。僕は以前、この動作を Llama でプログラムしていたのだけど、P10 は OS で持っている。


例えば、画面ロック…画面が消えて、パスワードなどの認証が必要な画面に戻る際に、アプリを「閉じて」しまう機能がある。

アプリごとに ON / OFF を設定できるのだけど、使っていない時は閉じてしまえば、動作しなくなるので電池の持ちをよくできる。

僕は以前、この動作を Llama でプログラムしていたのだけど、P10 は OS で持っている。


例えば、アプリごとの通信許可。本来通信が必要ないアプリで、広告を出すためだけに通信するのを「許可しない」ことができる。

僕は以前、この動作を Llama でプログラムしていたのだけど(以下略)



まぁ、こんな調子で、今まで Llama を使って実現していた「ちょっと便利な使い方」を、ほとんど OS レベルで持ってしまっている。

とりあえず Llama は入れたのだけど、今のところ何も動作していない。

(これから使っているうちに、必要だと思ったらプログラムを組むのだけど)


まぁ、Llama は作者さんが「最近の Android では役割を終えた」と感じたようで、メンテナンスが止まったままだ。

僕としても、そろそろ使うのをやめるべきかと思っている。




全然 P10 のレポートらしいこと書いてないな…

でも、本当に honor 6 plus とあまり変わらない、という実感。


・上に挙げたように、細かな使い勝手の良さは上がっている。

・CPU が良くなったので、軽快な動作感になっている。

・指紋認証は素晴らしい。ポケットからつまみ出そうとしただけで指が触れる位置にあるので、出したときには使えるようになっている。逆に言うと電源を切ってポケットに入れるときにも起動することがある。

・カメラは、少し暗がりに強くなった。これはレンズの良さによるのだろう。でも、honor6 plus も結構カメラ性能良かったので、ライカすげー、というような感覚はない。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

別年同日の日記

03年 当たりました

15年 古くて非力なマシンをLinuxBeanで再生してみた

15年 マイケル・クライトン 誕生日(1942)


名前 内容

ヒューマン・リソース・マシーン  2017-09-12 17:28:45  コンピュータ

▲目次へ ⇒この記事のURL

Switch 購入時から遊んでみたかったゲームなのだけど、やっと購入して遊んでみた。

僕の周囲では評判の良いゲーム。


これがまぁ、変わったゲームではある。



課題を出されるのでアセンブラでプログラムを作る、というゲームだ。


…ゲームなのか? まぁ、楽しいのだけど、人を選ぶのは間違いない。




表面上は、小さな人がチョコマカと動き回ったりして、ゲームらしくなっている。

でも、これはあくまでも飾り。ゲームの本質はそこではない。


ゲーム内容的には純粋にプログラムをするだけだし、そのプログラムも「入力データを8倍して出力せよ」とか、「0 を区切りとする入力データ列の合計を出力せよ」とか、いかにもプログラム演習っぽい物。


使用言語はアセンブラ。それも、1950年代くらいの、飛び切り古いアセンブラだと思っていい。


アキュムレータ(レジスタ)は1つだけ。

条件分岐は「0」と「負」しかない。

メモリはあるけど、配列として使えない。

スタックなんてないからサブルーチンも呼び出せない。


いや、1950年代の計算機は、「計算機」なので掛け算や割り算の機能を持っている。

でも、このゲームではそれすらない。足し算引き算だけ。


ちなみに「直値」という概念もない。扱えるデータは、すべてあらかじめメモリに入っているもののみ。



#翌日追記

 途中のステージから命令が追加され、間接アドレッシングでメモリを配列として使えるようになりました。

 後の部分で書いてあるのだけど、この文章書いた時点で最後までゲームを終わらせていなかったための勘違い。

 もっとも、序盤のステージでは配列を使いたくても使えない、というのは事実。



しかし、この厳しすぎる制約の中でプログラムをする、というのが、適度に頭を使う心地よいものなのだ。

プログラムをするゲームというよりは、ちょっと複雑なパズルゲームだと言って良いだろう。


「A ÷ B の余りを求めよ」と言われたら、普通のプログラム言語なら1行で終わってしまう。

でも、こんなに制約が多いアセンブラだと、ちょっと工夫しないといけない。

そもそも割り算命令なんてないのだ。割り算って何だっけ? ってところから考える必要がある。



ゲーム的には、入力に対して正しい出力が得られれば「成功」となる。

各ステージは「成功」すれば次に進めるのだけど、さらに「十分小さいプログラム」と「十分速いプログラム」を作れたか、ということも評価される。


これがまた、アセンブラでゲームを作っているようで楽しい。




ゲームとしては、入力されるデータは毎回変わる。

そのため、入力を「決め打ち」して高速化するような姑息な手段はとれない。


その一方で、データはランダムに決められているわけではなく、非常に巧妙に作られている。


「0区切りデータの合計」であれば、あえてデータがない「nullデータ列」が入っていたりする。

データが無いから合計は 0 なのだけど、ちゃんとプログラムを組んでいないとおかしな出力を出してしまい「失敗」となる。



デバッグもプログラムの楽しさだと思うのだけど、わざとバグが出やすい課題とデータを用意してあるのだ。



昨日ダウンロードして遊び始めたところなので、まだ全部は遊んでいない。

昨日は、たった3つのデータをソートするプログラムで頭を悩まし、一端プレイを終了した。


ソートプログラムって、配列を前提に考えてしまうもので、配列がない環境でのアルゴリズムが思いつかなかった。

その後もお風呂に入りながら考えたり、家事をしながら考えたりして、「今晩試してみよう」というアルゴリズムは思いついている。


ゲームを離れている時間まで考え続けてしまうのだから、ゲームとしてはかなり成功していると思う。




僭越ながら、僕も過去に Z80 vs 6502 というページを作ったことがある。

Z80 と 6502 で、よくあるプログラムを「課題」として、高速なプログラムを作る競争で、結構盛り上がった。


もっとも、最初から競争を意図していたのではない。

僕がプログラムを作って公開したら、多くの人が改良案を送ってきてくれたので競争になってしまっただけ。



でもね、多くの人が参加してくれたというのは、つまり、「アセンブラの最適化は楽しい」ってことに他ならない。


そんなの、プログラマの中でもほんの一部の上級者だけが理解できる楽しみだと思っていた。

でも、それを多くの人に届けようというのがこのゲーム。


プログラム経験があったほうがすぐに楽しめるとは思うけど、最初は簡単な課題からなので、経験が無くても理解できる。

よくわからない時は、ゲーム中で「上司」に相談すると、回答例を教えてくれる。


(プログラムの正解例ではなく、こんな入力があったら、こんな出力になればいい、と教えてくれる)


足し算だけで「40倍するプログラムを作れ」というのは、アセンブラ経験者じゃないと悩むかもしれない。


同じものを足せば2倍になる。2回繰り返せば4倍になるし、3回繰り返せば8倍になる。

また、4倍になったものに元のデータを加えれば5倍になる。


8倍と5倍が作れるのだから、8*5で40倍も作り出せる。



フィボナッチ数列を作れ、に至っては、言っていることもわからないかもしれない。

一応簡単な説明はゲーム中にあるのだけど、フィボナッチ数列とは何か、と調べることも面白いだろう。


プログラムを組むって、対象を理解することだから。ゲームとはいえ、ゲーム機の前を離れて調査することも楽しみのうち。




おまけ的な要素だけど、このゲームは「ブラック企業」が舞台になっている。


ちょこまかと画面上を動く小さな人は、CPU でいえば「アキュムレータ」だ。

データをどうにかする単純作業を、延々と繰り返す社畜。


課題は上司から出されるし、よくわからない時は上司に聞けばいい。

だけど、この上司の受け答えがまた、ブラック企業感を出している。


英語が元のゲームのはずなのに「忖度」とか「プレミアムフライデー」とか、時事ネタもたくさん入っている。

この会話がいちいち面白い。


さらに、時々ストーリー進行があり、企業の外ではなにかとんでもないことが起きている、とわかってくる。

ブラック企業過ぎて、主人公は何年も本社ビルから外に出ていないようなのだ。

だから、外の世界がどうなっていても、会社で楽しく働いていられる。



「グーの惑星」を作った会社なのだけど、あれも楽しかった。

(Wii 版が発売されてすぐに買って遊んだ)


あちらも、少し陰のある独特の世界観だった。

今作も同じような雰囲気。


まぁ、このセンスも、好き嫌いがはっきり分かれそうなところではあるのだけど。

いろいろな意味で、すごく面白いのだけど人を選びそうなゲームです。




▲目次へ ⇒この記事のURL

関連ページ

続・ヒューマンリソースマシーン【日記 17/09/16】

別年同日の日記

02年 あれから1年

08年 家族旅行2日目

14年 「テレビテニス」が出荷された日(1975)

15年 レイ・ドルビー博士 命日(2013)


名前 内容

スプラトゥーン2 その後  2017-08-08 11:36:45  コンピュータ 家族

▲目次へ ⇒この記事のURL

1度目のフェスも終わり、ある程度遊んでからの感想。

まぁ、まだ1ヵ月も遊んでいないわけで、「やり込んでいる」状態ではないのだけど。



フェスはルールがよくわからなかったので、「チーム分けして戦うのだろう」程度の気持ちで参加した。

そしたら、チーム分けの時点で得票率で勝敗があるのね。


「マヨネーズ vs ケチャップ」というお題だったので、日本人なら多くがマヨネーズを選ぶと判断した。

しかし、長女と次女がマヨを選んだので、同じでは面白くないと思ってケチャップを選んだ。


人数に偏りが出たらどうするのだろう…と思ったのだけど、勝敗数を競うのであれば「マッチングした」ことが前提になる。

マッチングできなければノーカウントなので、人数の偏りは問題ではないのだろう。


実際遊んでいると、マヨ vs マヨとか、ケチャ vs ケチャのような試合が始まることがあった。

勝敗集計としてはノーカウントだろうけど、遊べないより遊べた方が良いということか。


で、結果は得票率、ソロ戦、チーム戦の3つでそれぞれ勝敗が出され、2つ以上勝ったほうの勝ち。

じゃぁ、得票率の時点で予想を立てて勝つほうに乗ったほうが良いだろうと思うのだけど、ヨーロッパとアメリカでは共に、得票率はケチャップが多く、勝敗はソロ・チームともマヨが勝つ、という結果になっていた。


もっとも、勝敗部分はいずれも僅差。スプラ2のシステム上、勝敗は運に左右される部分が多いので、必然的に僅差になるだろう。

予想の利く得票率は重視したほうがよさそうだ。


#余談。

 マヨネーズって、数あるドレッシングの一つだと思う。それに対し、ケチャップは仕様用途の広いソースの一つ。

 日本では、マヨネーズ会社の戦略もあり、バブル期に「マヨネーズ料理専門店」もできるほど流行し、ソースに格上げされた感がある。

 日本と海外で反応が違うのもその影響かと思っている。




遊んでいると経験値が入る。

勝つとボーナスもあるが、上に書いたように勝敗は時の運なので、このボーナスは平均半分、と考えてよいだろう。


すると、塗り面積が経験値を最も左右する。

塗りたくればいっぱい入る、というわけでもなくて上限も定まっているのだけど、そうなると結局経験値は「遊んだ回数」が最も重要になる。


そして、経験値によってランクが上がる。

ランクが上がると選べる武器(ゲーム中の表記では「ブキ」)が増えたり、遊べるモードが増える。



これ、ランクが上がったご褒美というより、慣れないうちはシンプルで判り易いゲーム、慣れると奥深いゲームになっていく、というデザインだ。


ランクが上がって使えるブキは、決して強いわけではない。

実は、一番最初に使える「わかばシューター」は非常にバランスがとれていて、後から使えるブキになるにしたがってバランスが崩れていく。


崩れていく、というのは使いにくいという意味でもあるのだけど、長所をうまく活かせば非常に強力だ。

そういう意味では「強いブキ」でもあるのだけど、実際ランクが高くても最初の頃に入手できるブキを使っている人もよく見かける。



僕は、多少戦えつつも、塗りやすいブキを使っている。

FPS はもともと苦手で、戦いたくないのだ。前線の後ろで細かな塗り残しを潰しているほうが楽しめる。


狙撃できるようなブキも存在する。敵側に狙撃手がいると、なかなか苦戦することもある。

でも、狙撃ブキは連射が効かない、塗りつぶしに適していない、などの弱点がある。


そして、このゲームは塗りつぶし面積で競うゲームだ。

狙撃手は怖いのだけど、実は狙撃手が多いチームは弱い。


このバランスが非常に面白いと思う。




先日の話。

夜子供が寝た後で遊んだら、そんな夜半に遊んでいるような人は「ガチ勢」ばかりだった。


僕は今ランク 15 なのだけど、僕以外で一番低いランクが 24。上は 35までいた。


「うわ、これはやられまくってつまらないゲームになりそうだ」とおもったら、そうではなかった。

敵味方含めて、全員が血気盛ん。一気に中央に登り、そこで前線が形成される。

やられた人も、すぐに前線に向かう。周囲を塗りつぶそうとする人はいない。


僕は、前線には登らずに自陣をせっせと塗りつぶした。チームは勝利し、塗りつぶし面積で評価されるチーム内の貢献者のトップに。


FPS でありながら、前線に行かずに逃げ続けている人が一番偉い、というのは面白いバランスだと思う。


ゲーム終了時に連戦すると、基本的に同じ顔触れでもう一戦となる。

誰も塗りつぶそうとしない不思議な試合を連戦、連勝してずいぶん稼がせてもらった。




ランクが上がると遊べる他のモードは「ガチバトル」と呼ばれる。

このモードでは、前線に行かないわけにいかない。


「シャチホコ」のようなものを奪い取り、相手陣地に運ぶ「ガチホコ」

乗ると相手側に向かって動き出す「ヤグラ」を奪い、これも相手陣地を目指す「ガチヤグラ」

ステージ中央付近の一定エリアの塗りつぶし・保守を狙う「ガチエリア」


の3種類がある。

いずれも、「全体の塗り潰し面積」というようなふんわりとした目標ではなく、明らかなターゲットが設定される。

これにより、全員がそこに向かい、戦闘が行われることになる。「ガチ」であるゆえんだ。



…先に書いた通り、僕は FPS が苦手なので、このモード遊んでいない。

でも、中1の長男が特にガチヤグラを気に入って遊んでいる。


というか、前回も書いたのだけど、長男のプレイがヘタレだ。

状況を理解しない行動をとりがちなので、普通の対戦をやっていてもなかなかチームの勝利に貢献できない。


ならば、目標物がわかりやすいガチバトルで…と思ってやっているようなのだけど、今度は目標物にばかり向かいすぎて、やはり周辺状況を理解しない。


ガチヤグラであれば、ヤグラに乗ったままでいると、周囲から狙われてすぐにやられてしまう。

自分が載っているならできるだけ「やられない」ようにすることが大切だし、載っていないなら周囲の敵を殲滅し、上の人を守るのが大切。


でも、長男のプレイは「がむしゃらに乗りに行く」ことが中心で、周囲を整えようとしない。

周囲を整えないといけない、と気づいたら、今度は進む道をあらかじめ塗ろうとしすぎて、敵側にヤグラを取られているのに奪回に向かおうとしない。




小4の長女のプレイは、相変わらず見ていて楽しい。


すっかり切り込み隊長だ。使用ブキは、比較的序盤から使えるスプラローラー。

ローラー系の武器は、塗りつぶしが目的で、戦闘に向いていない。にもかかわらず、敵をバッタバッタとなぎ倒す。


一度、敵陣の前に陣取り、やられて復活した敵を瞬殺、を繰り返したことがあった。

(スプラ2では、そういうプレイがしにくいようにデザインされているにもかかわらず!)


その間に見方が全体を塗りたくり、80% 近くを塗るという圧勝。相手側の人が気の毒になる。



長女は、ローラー系でも臆せず敵に突っ込み、なぎ倒す。

だけど、そもそも戦いに向いていないことは理解していて、ステージごとの「敵陣への侵入ルート」の研究を行っている。


通常通れないと思っている部分を、実はジャンプでギリギリ通れるとか、いや、ぎりぎり落ちるので、落ちる先の壁を軽く塗っておくことでよじ登れるとか、そういう無茶なルートで敵陣に侵入するのだ。


えー、そんなことできるの! って、見ていて驚く。



そして、敵陣をインクが切れるまで一気に塗りたくり、切れた瞬間に「スーパーチャクチ」作動。


これは、武器ごとに定められた「スーパーウェポン」で、一定の面積を塗るごとに使えるようになる。

スーパーチャクチをすると、周囲の一定範囲にインクを飛ばして塗ることができ、その範囲内にいる敵は即死する。


それだけでなく、これを使うと瞬時にインクが満タンになる。そして、また塗り進む。

もちろん、スーパーチャクチを、インク切れの前に敵の近くで作動させることもある。


敵にまわしたら怖い存在だ。



先日、長女にフレンド申請が来た。

一緒にプレイした人には、フレンド申請を送れるのね。ゲームの機能ではなく、OSの機能なので知らなかった。

フレンドになっておくと、一緒にチーム戦を行ったりできる。


長女は相手の名前を憶えていた。

同じように切り込んでいくタイプの人で、その人は塗るのには適さないけど戦闘に適したブキの使用者。

お互いの弱点を補うような形で、二人で敵陣を塗りたくって圧勝した、非常に楽しいゲームだったらしい。


メッセージのような機能はないので、子供でも安心。フレンド申請を受け付けておいた。




さて、最後に僕の話。


通常の対戦もやっているのだけど、ヒーローモードを非常に楽しく遊んでいる。

ヒーローモードは、ネットワークを使用しない、一人用のゲーム。


多くのサイトで「チュートリアル」だと書かれている。

まぁ、チュートリアルの側面があることは否定しない。


だけど、良く練り込まれていて、やり込み要素も多い。

チュートリアルというより、僕のように FPS 苦手な人でも楽しめるようにするための、サービスではないかと思う。



基本的には、ゴールを目指すだけのゲーム。時間制限はないけど、クリアタイムを競うようにはなっている。

各ステージに必ず「イリコニウム」と「ステッカー」が落ちているので、それを取得してあるかどうかも記録される。


ステージによっては、初プレイ時に「これを使え!」と、ブキを渡される。

一度はそのブキでクリアしないといけないのだけど、大抵そのステージは、そのブキの特性を活かしたものになっている。


そして、ステージには「どのブキでクリアしたか」も記録される。

コンプリートを目指すなら、すべてのブキでクリアしないといけない。


これが、ブキによっては先に進むのが非常に難しくなったりする。

一度クリアしているのでルートは知っているのだけど、ブキの違いで進み方を変える必要があるのだ。


遊ぶことでブキの特性を自然に覚えてしまう、という意味では、チュートリアルだろう。

でも、そこで使われる特性は、時には「対戦には全く使わない技術」だったりもする。


先に書いたようにチュートリアルというよりは、やり込みゲーとして作られているように思う。



ゼルダを楽しめている人なら、このモードは気に入るのではないかな。

僕は対戦に疲れたらこのモードで遊んでいる。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

別年同日の日記

02年 …てなわけで

04年 マハラージ

07年 おもちゃ


名前 内容

スプラトゥーン2初感  2017-07-24 17:16:12  コンピュータ 家族

▲目次へ ⇒この記事のURL

先日もゼルダ雑感書いていたし、Switch漬けだな、と思いながら。


前作「スプラトゥーン」はやっていない。WiiU 持ってないから。

そもそも、僕は3Dの「撃ち合い」ゲームは好きではなく、今回のスプラ2も興味はあったが、購入直前まで迷っていた。


子供が興味を持って遊びたがっていて、発売前までどうするか悩んでいた。

中学生の長男なら十分遊べそうだけど、小学校2年生の次女には遊べないんじゃないかな、という気持ちもあったから。


購入に踏み切ったのは、ゲームは好きだが詳しくはない妻が、発売日の夜に「スプラトゥーンっていつ発売なの?」と聞いてきたから。

ツイッターで周辺の人がみんな話題にしていて、そろそろ発売なのかな、と気になったのだそうだ。



#注:「撃ち合いゲーム」を、以下 FPS と書く。

 First Person Shooting、「自分視点の撃ち合い」の意味で、自分が画面に表示されるスプラトゥーンは、厳密には FPS ではなく、TPS (Third Person Shooting) だ。

 しかし、TPS という用語は FPS ほど一般的でないので、TPS も含めて FPS と言われてしまうことが多い。




で、購入後15分ほど遊んでみる。

3試合して、この段階ではまだ「思ったよりも悪くない」程度の感想だったけど、そもそも妻の言葉で購入に踏み切ったので、妻に交代する。


その後妻のプレイを見ながら…自分でやっているのではないので、冷静に分析しながら、思った以上に初心者に優しいゲームだと知る。



翌日は土曜日。

子供に購入を伝え、夏休み入ったし、土曜日なので思いっきり遊ぶのを許可する。



普段は、ゲーム時間は1人1日1時間半程度に制限している。

というか、学校もあるし、3人で時間を分け合うと、その程度しか遊べない。


でも、この日は朝からゲーム三昧。30分~1時間程度で交代しつつ、1人3時間づつ遊んだ。




先日、ゼルダの話を書いたときに、「触っていても面白いゲーム」を作るのは難しい、と書いた。


ゼルダは、触っているだけで面白い。

戦うのが怖いなら、敵から逃げ続けていてもゲームが成立する。


森の中でリンゴや鳥の卵、キノコなどを拾い、それらを組み合わせて料理しているだけで面白いから。


いや、そんな目的すら不要だ。

緻密に描かれた美しい風景は、歩き回っているだけで世界を観光している気分にさせてくれる。


「ガノン征伐」なんて目的は、些細なことだ。目的なんて気にしないでいい。ただいじっているだけで面白いゲーム。

それがゼルダだった。



それに対して、スプラトゥーンは、対戦ゲームだ。

触っているだけ、というわけにはいかない。「戦うのが怖い」なんて言っていられないし、相手に勝つ、という目的を強要される。


にもかかわらず、目的を忘れて「触っているだけで面白い」状態を作り出している。



こんなこと、1からやっている人は今さらだろうけど、僕が感心したので細かく説明する。


普通、FPS は「敵を倒した数」を中心とした評価を競う。

でも、スプラトゥーンでは敵を倒すことは、評価に一切関係しない。

(後で書くけど利点はある)


敵を倒した数になると、経験が最大の武器となる。

ゲーム慣れして、冷静沈着に敵を倒せる人が強いし、長い時間遊んで強い武器を持っている人が強い。

一番良いのは、やられた人が復活するポイント付近で物陰に隠れて待ち構え、倒し続けることだ。


これ、初心者お断りのゲームだ。

もちろん、様々な評価軸で強さを算出し、同じくらいの強さの人同士をマッチングするようなシステムにより、皆が楽しく遊べるようにする。


それでも、ゲームに十分に慣れたうえで、あえてアカウントを作り直して1から始める、などで「俺だけが最強の世界」を楽しもうとする人がいる。

もちろん、ゲーム制作者側はあまりこのような行為をしてほしくない。


初心者が嫌な思いをすればプレイヤーが先細りになるし、ひいては続編もなく打ち切り、ということになりかねないからだ。

ゲームが好きで、ハマり込んでいる人が自らの好きな世界を壊す、という悲しい例だが、事実として存在する。



スプラトゥーンは、1の時点から、このような「FPS の問題点」を克服するべく作られていた。


評価の軸は「塗りつぶした面積」だ。

だから、敵がいたら逃げ回わる、という戦略が可能になる。


敵の目をかいくぐり、敵地に侵入し、すでに敵が塗った部分を自分の色に染め上げていく…

「撃ち合い」のゲームであるにもかかわらず、撃たない鬼ごっこが成立する。


これが、思った以上に幅の広い遊びになっていることに感心した。




まだ2日しか遊んでいないが、家族のプレイの様子を書いてみよう。

ゼルダの記事も読んでもらうと、家族の性格がよくわかるかもしれない。


まず中一の長男。一番遊んでみたがっていた。

ゼルダでは、敵との戦いを極度に恐れる傾向にあった。


スプラ2でも、ヘタレぶりは変わらず。

なんとか「敵に見つからずに生き延びる方法」を見つけようとして、物陰に隠れていたりする。

それでは、塗り面積を広げられない。


詳細は後で書くけど、塗った面積は個人評価につながり、評価を溜めることでより強い武器などを入手できる。

だから、思い切って「塗り」に出ようとすると、今度は無防備に敵に突っ込み、討ち死に。


頭は良いのだけど、判断力が悪い。

「敵の色を塗りつぶせば、相手の陣地も減るし、こちらの陣地は増えるから、2倍の効果!」

と言って、敵の陣地に切り込みたがる。当然討ち死に。



最初は全然チームに貢献できていない感じだった。

でもまぁ、遊び続ければ慣れるもので、500pt程度は確実に塗れるようになってきた。




小4の長女。

ゼルダでは、人の話を聞かず、地図も入手せず、度胸だけで世界を突き進んで探検し、見つけたものは手持ち資金で買いあさっていた。


スプラ2でも同じプレイスタイル。

ただ、こちらはストーリーなどないので、人の話なんて聞かないでいい。地図のような、ゲーム中に入手するアイテムもない。


だから、度胸で敵陣に突っ込んでいく、というプレイスタイルは、スプラ2に向いている。

もっとも、これで討ち死にしていたら無謀な馬鹿なのだけど、勝負勘が良くて、自分よりランクが高い相手でもバタバタとなぎ倒す。


広い面積を塗ろうとするよりも、敵陣深くに続く道を開拓しようとする。

なので、後についてきて援護してくれる人が出る場合があって、そんなときは本当に…相手チームが可哀そうになる試合展開となる。



はっきり言って、我が家で一番「横から見ていて楽しい」プレイスタイルだ。

ついたあだ名が「切り込み隊長」。


#小学校4年生だから、「切り込みってなに?」と、言われていることを理解していない。教えたけど。




小2の次女。

彼女は、ゼルダはやっていない。「敵と戦うのが怖い」というのが理由。


同じ理由で、スプラ2も最初は見ているだけだった。

でも、あまりに長男・長女が楽しそうに遊んでいるので、ちょっと遊んでみる、と手を出して…十分楽しんでいる。


戦うのが怖い小2女児でも、「対戦シューティング」を遊べるのだ。これってすごいことだと思う。


プレイスタイルは、前線での戦いを避けるもの。

みな前線に突き進むし、そういうゲームなのだけど、最後の「塗り面積のジャッジ」を見ていると、結構「塗り残し」が勝負を分けるのがわかる。


プレイフィールドは基本的に四角く、出撃地点は辺の中央あたりか、角。

そこから、中央に作られる(であろう)前線にまっしぐらに進むと、どうしても自陣近くの角に塗り残しが出やすい。


こうした部分を着実に塗っていく。

自陣近くは、大抵自分の側の色になっているが、たまに「切り込んできた」相手によって、まだらに色が違う。

そうした部分も、着実に塗り戻していく。


この戦略は僕が教えたものだけど、細かな部分をちまちま塗るのは、ゲーム慣れしていない子でも楽しいようだ。


残り1分程度になったら、その後の身の振り方を決める。


自分のチームが勝つと、勝利ボーナス点が全員に入る。

だから、勝ちそうならそのまま細かな部分の塗りつぶしを続行し、勝ちを確実にする。


負けると、ボーナス点は入らず、個々人の「塗りつぶしポイント」が入るだけ。

だから、負けそうなら前線に進んで、思い切ってポイントを稼ぐ。


なに、やられてもかまわない。

負けているということは、前線は自陣側に寄っている。やられても、すぐに前線に復帰できる。


それでいて、すでに自分側の色の部分をちまちまと塗っているより、敵側の色の中で適当にインクをばら撒いているほうが、「塗りつぶした面積」は多いのでポイントが稼げる。


目標は、500pt 稼ぐこと。

慣れないうちは 300pt とか、ひどいときは 100pt で終わっていたのだけど、次女も2日遊ぶ間に慣れ、500pt は確実にとれるようになった。




さて、遊ぶ人によって幅広い戦略が可能になる、とわかってもらったところで、細かなルールの説明を行っておこう。


Switch のゲームには説明書が付いてこないので、僕もよく理解できていない部分があるのだけど。


試合中は、塗った面積が「ポイント」として表示されている。

壁は塗ってもポイントにならない。ただ、壁を塗ると登ることができ、周囲にインクをばら撒きやすくなるので、無意味ではない。


何も塗られていないところに塗っても、敵の色のところに塗ってもポイントは同じ。

すでに自分側の色のところを塗っても、何ももらえない。



まず、塗った「ポイント」は、そのままゲーム内で武器などを買える通貨となる。

勝利すると、ボーナスで 1000 ポイント上乗せされる。


通貨とは別に、経験値があり、経験値によってランクが上がる。

塗ったポイントは、100 の単位ごとにもらえる。100,200,300,400,500 で、それ以上はない。


また、参加者全員に、3分遊んだことに対する報酬 300pt が、勝利したチームならさらに 600pt がもらえる。


他にもボーナスはあるのだけど、以上が基本。


これが、次女の遊び方の話に書いた、「勝てそうなら勝ちを確実にするように動き、負けそうなら 500pt を超えることを目指す」という理由だ。




話は脇にそれるがここで書いておこう。


3分遊んだ報酬は、おそらく「途中で通信を切断されないため」のものだと思う。

ゲーム作成者として、途中で通信切断されるのは困るから、ポイントをちらつかせて最後まで遊んでもらおうとしているのだろう。


でも、実はこれ目当てで、遊ぶ気がない人も参加してくる。

全く動かず(スタート地点に棒立ちはおかしいから、適当な物陰に潜んでいる)、最後の戦績表示画面を見ても、全く塗っていない。

チームとしては迷惑な話で、子供たちはそういう人がいることに怒っているようだ。



しかし、ゲーム制作者の端くれとして言わせてもらうなら、そうすることで得をするシステムになっているのだから、そのプレイヤーは悪くない。

ゲームの遊びかたはそれぞれだ。「まじめにやれ」なんて強要される覚えもない。


ただ、運営側は遠からず対策をするんじゃないかな。

全くやる気がない人には、参加賞の 300pt や、たまたまチームが勝利した際のボーナスなどを一切与えなければよい。


次女が初めて遊んだ際でも 100pt は塗れていたから、100pt ボーナスを取得しなくては、それ以外のボーナスももらえない、とかね。




相手チームが強いと…というか、組み合わせは時の運だし、必ずしも強い人がいるチームが強いわけでもない。

だから、「うまく歯車がかみ合うと」くらいのイメージなのだけど、前線が中央付近からずいぶんと偏ることがある。


こんな時は、さすがに勝ち負けがはっきりする。


だけど、前線は案外中央付近にでき、動きにくいものだ。


当然な話で、倒されたキャラクターはそれぞれの陣地のスタート地点から復活するし、そこから前線まで行かなくてはならない。

自陣に前線が近づけば、前線に早く到達できる。遠いと遅くなる。


ということは、自陣に近い前線は相手側に押し戻しやすいし、自陣から遠い前線は、押し戻されやすい。

結果として中央付近が前線になる。



このことを前提とすると、前線までの「自陣側」を、塗り残しなく、より緻密に塗ったほうの勝ちだ。

これが、次女に授けた「塗り残しを無くす」作戦となる。



しかし、チームの勝ちなんて関係なく、自分がポイントを…仮想通貨を稼ぎたいのであれば、思い切って敵陣に飛び込むといい。

自分側の色はほとんどないので、どこを塗ってもポイントになる。


戦うことは目的ではないので、敵のいないところを狙って大量に塗りつぶせば、一気に大量得点。

もちろん、敵陣に近いのですぐに塗り返されることになる。


戦いが目的ではないとはいえ、倒されると復活までに数秒間(状況により短縮もされるが、5秒程度)かかるし、陣地一番奥のスタート地点に戻される。


だから、相手側に前線を進めるために、相手を倒すことは決して無駄ではない。

戦いが得意な人は前線で戦いつつ、陣地を広げる。


苦手な人は相手に塗られてしまった部分を後方で「修復」したり、戦いを避けつつも相手陣地に忍び込んで塗ってみたり、やれることは結構ある。



戦いはあまり起こらず、お互いに相手陣地を塗るような混戦になることがあるのだけど、そういう時は終了時のポイントも総じて高い。

みんなが「塗り続ける」わけだからね。


負けたとしても、結構稼げたので良しとしようか、と思える。


長女が「切り込んでいく」と、そういう試合展開になりやすい。

ランクを上げる経験値に関しては、500pt で頭打ち。それ以上稼ぐ必要はない。


でも、通貨としては、稼いだだけもらえる。大量に塗ることにはそれなりの利点がある。

買い物を楽しみたい人には良い戦法。


#そして、長女はゼルダと同じく、武器や服を買いまくる。




僕や妻がどうしているかというと、実は子供に時間を奪われて、あまり遊べていない。


まぁ、それでも遊んではいるけどね。

僕は、最初は突き進んで前線形成に加担して、その後は倒されて戻るたびに、すこし寄り道して塗り残しを消しながら前線に向かう、というスタイル。


500pt を超えるまでは前線に進むことを優先しているけど、それ以降は自陣の塗り残しをできるだけなくす。

残り一分を過ぎたら、思い切って敵陣に切り込んでいく…と言う感じ。


でも、塗りやすい武器を中心に使っているので、戦闘力は低い。

敵陣に切り込んだ場合でも、戦いは避けて、あまり人が通らない裏通りを塗る感じかな。


#自陣と敵陣は対称形。普段から塗り残しを気にしているので、人が入りにくいエリアも把握している。

 人が入りにくいなら奪い返されにくいので、この戦略は結構効く。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

関連ページ

スプラトゥーン2 その後【日記 17/08/08】

別年同日の日記

15年 マイコプラズマ肺炎


名前 内容

ジョージ・イーストマン 誕生日(1854)  2017-07-12 10:52:12  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日は、ジョージ・イーストマンの誕生日(1854)

写真で有名なコダック社…正確には、イーストマン・コダック社の創業者です。



写真は、19世紀の序盤…1826年に発明されています。

最初は、撮影に8時間もかかるものでした。


しかし10年ほどで撮影時間は 10~20分ほどに短縮されます。

ただし、この方法は「左右が反転してしまう」「高価」などの問題がありました。


さらに 15年ほど…1851年には、左右が正しく記録され、安価で、わずか15秒で撮影でき、しかも何枚でも複製が可能という方法が発明されます。


この方法の欠点は、撮影時にガラスに「薬品」を塗り、これが乾くまでに撮影・現像・定着などの作業を行わなくてはならないこと。

薬品の専門知識が必要ですし、写真館での撮影ならともかく、屋外での撮影にはたくさんの荷物を運ばなくてはなりませんでした。



そして、この方法からもたったの 20年で…1871年に、あらかじめ薬品を塗って乾かしたガラス板を使用する「写真乾板」が発明されます。

乾板の製造、撮影、現像が、遠く離れた場所でできるようになります。


「カメラ」自体はそれまでのものが使え、撮影のためのガラス板を変えればよいだけだったため、「写真乾板」は、あっという間に普及します。




ジョージ・イーストマンは、写真乾板の大量生産方法で特許を取得し、1880年に工場を設立しています。

翌年には会社組織化し、「イーストマン乾板会社」を設立。


1885年には、それまでガラスに塗るのが当たり前だった薬剤を、紙に塗って巻き取った「ロールフィルム」の製造を開始します。


エジソンとの共同研究によるもので、開発中だった「映画」での使用を想定していました。

後々までカメラ用フィルムとして使用される 35mm という幅は、このときに決定しています。


(この映画を見る機械、「キネトスコープ」は1891年に公開。その前に撮影機が完成しているようだが、一般公開したものではないので完成年不明)




そして、1888年。

イーストマンは、この「ロールフィルム」を使った新しい商売を始めます。


小型のカメラの中に、ロールフィルムがセットされた状態で売っています。

これで、100枚の写真が撮影できます。


フィルムが終わったら、カメラと 10ドルを現像所に送ると、すべての写真をプリントし、新しいフィルムを装填して返送されてきます。



これ以前は、カメラというのは専門知識が無くては扱えないものでした。


フィルムは光に弱く、取り出し・装填には間違えてはならない手順がありました。

そして、当時のカメラは、写真1枚ごとにフィルムを入れ替えていました。


また、フィルムの現像・プリントなども専門知識が必要でした。


これを、「100枚連続でとれる」ようにして、手間を無くしたのです。

そして、複雑な取り出し・現像は専門家に任せる、というサービスをセットで売ったのです。


それまで専門家しか撮れなかった写真を、一般に開放したと言えます。



このときのキャッチフレーズが「You press the button, we do the rest」。

意訳すると「ボタンを押すだけ。後は我々にお任せを」という感じかな。


このときに、カメラのブランドとして新しく作ったのが「Kodak」という単語です。

イーストマンが好きなアルファベットが K で、「K で始まり、K で終わる、短くて力強い音の言葉」として作り出した造語で、意味はありません。



ところで、フィルムを使い切ったらカメラごと現像所へ…って、1980年代後半に流行した「レンズ付きフィルム」と同じ感覚です。

レンズ付きフィルムは「新しい物」に思えたのですが、100年前に同じような商売があったのですね。




翌年、1889年には、フィルムを紙ではなく、透明なセルロイドで作成するようになります。

先にキネトスコープの話を書きましたが、実際のキネトスコープでは、こちらのセルロイドフィルムを使用しています。


セルロイドは、紙と同じように植物由来のシートです。

紙は物理的に繊維をほぐし、形を変えたものですが、セルロイドは科学的に溶かして生成します。


そのため、紙よりも表面が滑らかで、薬剤を均一に塗ることができますし、透明なので光を透過するという利点もあります。


#ガラス乾板では、光を透過させることで写真の複製を行いました。

 同じことができるようになったわけです。



問題点もいろいろあり、後にセルロイドは使われなくなるのですが、それはまた別の話。




1890年には、イーストマンは「折り畳みカメラ」を発売します。

カメラはその構造上、光を通さない頑丈な箱である必要がありますが、折り畳み式にしてポケットに入るようにしたものです。


高価なものだったようですが、気軽に使えることからヒット商品となります。


これで「コダック」の名前が知れ渡り、1892年には社名を「イーストマン・コダック」に変更。




ところで、1897年に、有名な小説「ドラキュラ」が刊行されています。


序盤で、ドラキュラ伯爵からロンドンにある邸宅を買いたい、という依頼を受けた主人公弁護士が、ペンシルバニアに行って伯爵と話をするシーンがあります。


ここで、遠い異国の邸宅の様子を詳しく聞きたいという伯爵に、主人公が


 I have taken with my kodak views of it from various points.

 いろいろな場所からの眺めを、私のコダックで取って来ましたよ。


答えるのです


当時、「コダック」が、カメラと同じ意味で使われていたことがよくわかります。


#作者のブラム・ストーカーは新し物好きだったようで、ドラキュラの中には、当時の最新の発明が次々出てくる。

 多くの人の日記を繋ぎ合わせる形で話は進行するのだけど、タイプライター(1890年頃から普及)や、蓄音機(1877年発明)で日記を記録する人々がいる。

 電話機も出てくるが、これも 1890年代に普及。

 「最新で科学的な世相」の中に、「中世から生きている化け物」が紛れ込む、という筋立てが当時の人には恐ろしかったのだと思うけど、今読むと全部古臭くてカッコいい。




実業家としては成功を収めたイーストマンですが、その生涯はあまり幸せそうではありません。


13歳の時に父が病死。16歳の時には、2番目の姉が病死。

イーストマンは、高校を中退して働き始め、コダック社の成功に至ります。


苦労しながら自分を育ててくれた母に孝行したい、と多くの贈り物をしたようですが、母は高価な贈り物を受け取ろうとはしなかったようです。

苦労したからこそ、子供が自分への贈り物にお金を使うよりも、自分のために使ってほしかったのかもしれません。


そして、1907年の母の死。

晩年は病気を患っており、少し動くと痛がり、車椅子生活だったようです。


結婚もしておらず、親族のいないイーストマンは、慈善活動にお金を使うようになります。

大学や病院などに多額の寄付を繰り返し、彼や、彼の母の名前を付けた施設がたくさん作られています。



1930年頃から背骨の病気を患います。立つことも歩くのも痛く、何もできない日々。

おそらくは母と同じ病気です。


そして、1932年 3月 14日に、ピストル自殺。


遺書にはただ短く、こう書かれていました。


 To my Friends, My work is done. Why wait?

 友へ、仕事は終わった。なぜ待つ?



待つ…何を待つ?


おそらくは、痛みを耐えながら迫りくる死を…でしょうね。

苦痛しかなく、その先に待つのが死であれば、待たずに今すぐ…ということなのでしょう。




彼は「仕事は終わった」と言葉を残しました。

確かに、十分すぎるほどの仕事を…世の中を大きく変えています。


カメラを作ったのは彼ではありませんが、カメラを誰でも使える道具にし、普及させたのは彼でした。



20世紀は「映像の世紀」「情報化時代」などと呼ばれます。

カメラは、遠い異国のニュースであっても、危険な戦争の前線の話であっても、文章よりも雄弁に情報を伝えてきました。


そして今も、情報機器…スマホなどの重要な機能として、カメラが組み込まれています。

この世の中は、ジョージ・イーストマンによって生み出されたのです。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

別年同日の日記

02年 納得?

15年 実装の苦労

16年 Chromebook購入

16年 Chromebook で子供ができること


名前 内容

あきよし】 誤字指摘ありがとうございます。無粋なんかではなく、ありがたいですよ :-) できるだけ読み返して推敲もしているのですが、趣味に使う時間も限られるもので、誤字脱字・そもそもの情報の勘違いも多いです。 (2017-07-26 09:15:13)

【セイ】 更新いつも楽しみにしています。無粋ではありますが誤字指摘です。「広告を中退して」→「高校を中退して」 (2017-07-13 11:28:42)

ゼルダ雑感  2017-06-21 11:31:42  コンピュータ 家族

▲目次へ ⇒この記事のURL

3日ほど前に、ゼルダの雑感を書いている個人blog を読んだ。


今回のゼルダは「自由度が高い」とされるのだけど、実際遊んでみると、そこかしこで任天堂の見えざるコントロールを感じられ、強制ではなくやんわりと、導かれているのがわかる、という内容。


「おせっかいおばさん」と表現していたけど、非常によくわかる。

このおせっかいが嫌な感じではなく、意図を感じたら信頼して乗っかれる安心感がある。


だから乗っかっていくと、自由だと言われながらもみんなが同じような進め方になる、というのも同意。




と、同意したうえで、我が家の話を書いておこう。

上の記事に倣い、僕のゼルダ遍歴から。



僕はファミコンゼルダ・リンクの冒険はリアルタイムに遊んだ。


スーファミは持ってなかったので遊んでないけど、後に「神々のトライフォース」の GBA 移植版は遊んだ。


GB の「夢を見る島」は、高校の後輩の「やるべき」という強力プッシュで借りて遊んだ。

でも、急いで遊んで返したので、あまり細かいことを覚えていない。


ゲームキューブ版は発売日前に予約し、予約特典でもらえた N64 のゼルダを1か月間遊び倒した。

裏ゼルダとムジュラもついてきたのだけど、GC 版が発売になったのでそちらに移行してしまい、遊んでない。


GC 版「風のタクト」は…N64 が面白かったので期待していたが、少し肩透かしと思った。

その後 Wii 版「トワイライトプリンセス」も買ったが、これは「面白くない」と感じて、途中で放棄した。


Wii版の「スカイウォードソード」は遊ぶ気にもならず、完全スルー。


近年の 3Dゼルダには、N64 の人気を超えようとして「がんばりすぎた」残念感を感じている。

プレイヤーに感動を与えようとしすぎて、押し付け気味に思えるのだ。



だから、今回のゼルダも、「あぁ、また出るんだ」程度でスルーのつもりだった。

…が、Switch 発売直前のインタビューなどで「近年の嫌な部分が払拭されている」ことを知り、遊びたくなった。


でも、Switch 大人気で入手できなかったのね。

入手は4月末。発売から2カ月たっていた。


で、いま2か月近く遊んだ状態。




「とりあえずの目的」である、ガノン征伐は果たした。


でも、このゲームは目的があってないようなもの。

「ミニチャレンジ」と呼ばれる、いわゆる RPG の「使いっぱしり」はゲーム中に大量に発生して、無視して進んでもいいのだけど、ゲームクリア後はこれをひとつづつ解決して楽しんでいる。


ミニチャレンジではないが、各地にある「祠」や、木の妖精「コログ」探しも楽しめる。

ストーリー上の目標はガノン征伐だけど、実際にはこちらの探索のほうがずっと楽しい。



ネタばれになるかもしれないけど、ガノン戦はまだ「近年のゼルダのいやらしさ」を感じた。


強いんじゃなくて、倒し方がわかるまでダメージを与えられない。

でも、こちらも逃げ回っていればダメージを受けない。

硬直した状態で延々と時間を浪費するゲームを「面白い」とはとても言えない。

ゼルダの嫌な部分がほとんどなくなっているとはいえ、完全ではなかったな、という感想。




家族中で遊んでいるが、暗黙の了解がある。

「先を進んでいる人のプレイは見ない」ということだ。


また、後から遊んでいる人にヒントを出すのもなし。

具体的に「はい」「いいえ」で答えられるくらい絞り込んだ、わずかな質問程度は答えるけど。


この結果、それぞれが自分の考えで進めているのだけど、「自由度」が非常に高いことがわかる。

この点において、「任天堂のコントロール」なんて存在していない。

(いや、もちろん道に迷わないような親切なサジェストはあるのだけど)



妻は僕よりも先を行っている。

自由時間の違いで、僕より多少長く遊んでいるためだ。


ただ、プレイスタイルは結構違う。

僕は敵を見るとできるだけ殲滅してから先に進む。

逃げ回っていて、前からも敵が来て挟み撃ち…というのが怖いから、着実に進みたいのだ。


そうやって、目的地に向けてどんどん進んでいった。



妻は、無視できそうな敵なら逃げ回って先に進む。

逃げる途中で道を外れてしまうこともあるし、逃げ回ることで節約した時間で、周囲を無駄に探索したりもする。


この結果、ストーリーの進行具合は同程度でも、妻のほうが多くの「なにか」を発見していた。

その一方で、闘うことで得られる報酬…強い武器などは、僕の方が持っていた。



長男は、中学1年生だがゲーム慣れしていないので、まだストーリーの中盤だ。


後ろから見ているとイライラするくらい、本筋と関係のない部分を楽しんでいる。

ゲーム慣れしていないので、触っているだけで楽しい段階なのだ。


例えば、稲刈りをすると米が手に入る、と知ると、延々と稲刈りだけをやり続ける。

その稲に火をつけると燃え広がり、上昇気流が起こって飛び上がれる、と知ると、面白がってそれを延々続ける。


とにかく「これやったらどうなるのだろう?」と思ったら試してみる。

さまざまな操作を試しているので、僕も妻も気づかなかったような「操作テクニック」を編み出している。


敵と戦うのを極度に恐れ、挟み撃ちにあったりするとワープして逃げかえる。

操作などの「ストーリー外の部分」を楽しみすぎて、ストーリー上、次に向かうべき場所を忘れてしまう。


だから、ストーリーはあまり進んでいない。



小学校4年生の長女は、「素材集め」と「買い物」が楽しい様で、そうしたゲームとして遊んでいる。


家族中で一番大胆な行動に出て、マップを入手していない土地でも闇雲にガンガン進んでみて、そこで見つけた「まだ見ぬもの」を、買えるものであればどんどん購入する。


なので、ストーリー進行や「マップの入手具合」とは関係なく、後半にならないと入手できないはずのものを持っていたりする。



進行度合いの割には、コログの発見率が非常に高い。

元々四葉のクローバー集めが特技で、「見た目のわずかな異常」に気付く能力が非常に高い。

それがゲーム中でも活かされているのだ。


闘うことも恐れないので、長男よりストーリーを進めているが、ボス戦などは怖いようだ。

ボスの前まで行くといったん退却し、長男がボスを超えるのを待って(ヒントを得て)ボス戦に挑む。


一方で、とにかく先に進むことが楽しいので、村などを見つけても人の話をちゃんと聞かない。

ヒントをくれる人を無視したまま先に進み、「あれぇ? これどうするの?」なんて言っている。


普段からも「人の話をちゃんと聞くように」と注意されている子なのだけど、ゲームを遊んでいる時にも同じ注意をするとは思わなかった。




ストーリーも…一応、4つの「小ボス」がいるのだけど、どこから倒してもかまわない。

いや、倒さずにいきなり大ボスに挑むこともできるのだけど、初回プレイでそれをやる人はいないだろう。


たぶん、最初の「小ボス」はみんな一緒だと思うんだ。

ここは「任天堂のコントロール」が利いている。うちでも、4人とも同じだった。


でも、その次のボスはもう、人によって違うのではないかと思う。

一応「これを2つ目に倒すべきなのだろう」というボスはいて、長男と長女は素直にそこに進んでいた。


でも、僕と妻は、気づかずに4番目のボスに進んでしまっていた。

余りの強さに泣きそうになりながら戦って、「2体目でこんなに強いのだと、この後どうなるんだ」と思って拍子抜けした。


「おせっかいおばさん」の話として書けば、いきなりこのボスのいる方向に進んだのも、それなりのサジェストがあったからなんだ。

詳しく書くとネタバレになるから書かないけど、理由を説明したら納得してもらえると思う。



だから、おせっかいおばさんは確かにいるのかもしれないけど、コントロールは絶対ではない。

4体中2体目のボス、という時点でかなり違いが出てくるし、そこに至るまでも遊び方が全く異なる。


買い物はせずに節約している人もいれば、ガンガン買い物をする人もいる。

さまざまな操作の可能性を試す人もいれば、そんなことよりストーリーを進めようとする人もいる。


これは十分に「ゲーム慣れしていない人にとっても、自由性が高い」ということかと思う。




じつは、この「ゲーム慣れしていない人にとっても」という部分で、舌を巻いている。


僕もゲーム業界の端っこにいた人間だから分かるけど、遊ぶ人ごとに遊び方が異なるゲームって、言うのは簡単だけど作るのは非常に難しい。


ましてや、「ゲーム初心者」と、「ゲーム慣れした上級者」が同じ世界で楽しめるなんてすごいことだ。


過去に、何度かそうしたゲームを見たことがある。

逆にいえば、いろいろなゲームを見ていても、初心者と上級者が共に楽しめるゲームなんて、数えるほどしかなかった。


絶対的な条件としてはゲームの目的を無視して、操作するだけで楽しめること。


敵が怖いなら戦わないでよい。ストーリーを進めるのが難しいなら、最初の場所にいればいい。

それでも楽しめる、というのは、本当にシステムがよくできていないといけない。


今回のゼルダは、そうしたゲームの中でもトップクラスであるように思う。




ところで、小学校2年生の次女は…いや、彼女は遊んでいない。

マリオカート8は大好きで遊んでいるので、ゲームができないわけではない。


ただ、「敵が出てくるゲーム」というだけで怖いようだ。

長男や長女が遊んでいるのを眺めているが、強い敵が出てくると緊張感に耐えかねて、別の部屋に逃げてしまう。


自分で遊んでなくても「緊張感に耐えられない」ほどにゲーム世界に入り込める。

遊んでいない子の行動をとっても、ゲームがよくできていることを意味している。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

関連ページ

スプラトゥーン2初感【日記 17/07/24】

別年同日の日記

02年 飲んだくれの日々

03年 なんだか色々入手

13年 「暗号の歴史」と、アメリカの盗聴問題

14年 ファミリーベーシックの発売日(1984)

15年 山歩き

16年 コンピューターが初めてプログラムを実行した日(1948)


名前 内容

遅い Javascript を iframe に追い出す方法  2017-06-13 12:18:54  コンピュータ

▲目次へ ⇒この記事のURL

お仕事で、すでにあるコンテンツに「広告」を入れることになった。


特に大変そうな話ではないのだけど、これが大変なことになっていたので僕が呼ばれた。

まぁ、それなりのお金をいただけるのでいいのだけど。


難点はいくつかあったのだけど、それは個別に解決した。

ざっくり書くと、設計の悪い「テンプレートシステム」がまともに働いておらず、1つのコンテンツのデータが1カ所にまとまっていない上に、1つのコンテンツ群のテンプレートが似て非なる複数に分散していて、さらにそれらを処理するプログラムがページの数だけある、という惨状だった。


なんでプログラムをデータと同じ数だけ複製して、少しづつ書き換えようと思ったのだろう。

html で全部べた書きしていたほうが、データが分散しないだけまだましだったと思うよ。



これを、まともな処理方法に改めないといけなかったのだけど、実のところ技術的な問題はそれほどなかった。

単純に、しっかりしたシステムを作ってデータを移行するだけだったから。


問題は、そうした手間を導入することに理解を得る必要があったことだな。

今までのシステムで動いているのに、手間をかけて(ということは金も時間もかけて)、なぜ大規模に改修を行う必要があるのか、ということの賛同を得るのが一番の難題。




しかしまぁ、そちらは解決した。技術話ではないので特に書かないけど。

テンプレートとプログラムは統一され、コンテンツデータは適切に集約された。

これで、全ページに広告を適用することができた。


最後に残った難題が、広告システムの動作が遅すぎる、という技術的な問題だった。



広告システムは「いろいろ試してみたい」というクライアントの意向で、3社用意された。


広告の表示場所は、いろいろな都合があって Javascript で生成することになっていた。

Javascript で生成する中に、広告表示のためのタグを埋め込む。


…埋め込めばいいんでしょ? と思ってタグを Javascript から生成したら、動かない。

なんで? とおもって、広告表示用の Javascipt を解析してみる。


document.write が入っていた。なんてこった。現代的なシステムとは思えない。




元々、Javascript は HTML 内に混ぜて書くような方法で考えられていた。

この際、document.write で何か「表示」すると、Javascript が埋め込まれた位置に、「表示」を生成する。


より詳しく言うと、HTML のパース中に Javascript コードを発見すると、その場で HTML のパース(文法解釈)は一時停止し、Javascript コードのパース、実行が始まる。


コードの実行が終わると、HTML のパースが再開する。

その際に、 document.write で書かれた内容があれば、その内容からパースが始まる。


ということは、「後から」Javascript で Javascript コードを埋め込んでも、document.write は動かない。




じゃぁ、最初から HTML に広告タグを埋め込んでおくしかない。

div で囲んで「表示しない」領域を作り、必要な広告をすべて読み込む。


これらの読み込みが終わるまで、HTML のパースは完了しない。

HTML のパースが完了すると、HTML 内容がいじれるようになるので、Javascript で広告を出したい位置にコピーする。


…という戦略で、document.write の問題を解決した。


そしたら、次の問題が出た。

この広告システムがすごく遅くて、数枚の広告を出すために、2秒以上待たされたのだ。

他の広告と合わせ、それまで1秒で表示できていたページが、4秒待たないと表示されないようになった。




すべては document.write のせいなのだ。

javascript で後から生成できれば、とりあえず画面の表示をしてしまい、ユーザーが読み始めてから周囲の広告などを整えればいい。

でも、document.write されているとそれができない。


じゃぁ、最初から広告を HTML 内に配置していると、document.write の結果を待つために HTML パースが停止し、画面表示が遅くなる。


こんな腐ったシステムを提供している広告会社も、それを使おうというクライアントもどうかしているとしか思えないが、それをどうにかするのが僕の仕事だ。




HTML の解釈が阻害されるなら、ユーザーに見せる HTML と、広告を呼び出す HTML を分離してしまえばよい。


具体的には、iframe を使う。


iframe タグを記述する HTML …「外側」と、iframe の中で読み込まれる HTML …「内側」は、別々の HTML だ。

外側にとっては「iframe がある」ということが HTML パースの情報であり、その iframe 内の HTML がどのような内容かは関知しない。


だから、内側で遅い Javascript が動いていても、外側はすぐに HTML パースを終わらせられる。



ただ、こうしたことで問題も出た。

広告を含めた各種情報を配置する Javascript が動き出したときに、まだ広告が読み終わってないのだ。



これは、仮に「広告が後で入るスペース」を埋め込むことにした。

そして、iframe 内の広告がすべて読み終わった、というタイミングを待って、実際の広告に差し替える。


実際にはもう少し問題解決しないと動かなかったのだけど、大体こんな感じ。


これで、ページ表示まで4秒かかっていたのが、1秒に短縮された。

劇的な高速化だ。


…というか、それが本来の速度だったのだけど。




しばらく運用していると、もう一つ問題が出た。

いくつかの広告は、ページに書かれたことを認識して、内容に合わせて表示を切り替えるようになっていた。

しかし、どうも内容が認識できないようで、汎用の広告ばかり出るのだ。


…と、文字で説明してしまうと、情報が整理されているので理由がわかってしまうな。

作業中は混沌としていて自分でも気づかなかったのだけど。



広告が読み込まれると、その時点でサーバーに「読み込み元」のページの URL が referrer として送られる。


サーバーはこの URL をクロールすることでページの内容を知るのだけど、iframe 内のページには広告しか入っていないので、適切な内容を読み出せない。



これはつまり、referrer を偽装して、外側ページの URL を返せばよい。


内側のページにとっては、外側のページは呼び出し元であり、referrer で知ることができる。

なのでこれを使って、内側のページが、外側のページの URL を名乗れるように環境を整えてやる。


これで、「現在のページを問われた際に、その呼び出し元の(実際の記事の) URL を返す」ようになる。解決。


#http のリクエストヘッダで送られるのは referer だけど、Javascript などで参照するときは referrer 。

 後者が正しい綴りだけど、http の RFC 書いた人が綴りミスして、公式にそのままになってしまった。

 上の文章では正しいつづりで揃えている。


#iframe 内だからこれで解決だけど、普通のページでこの referrer 偽装をやってはならない。

 なぜやってはならないか…が理解できないうちは、気軽に手を出さないこと。




同じ問題で悩んでいる人がいるかはわからないが、以下プログラム方法を示唆だけしておこう。

示唆だけ、というのは意地悪ではなく、実際のコードはそれぞれだと思うから。



・document.write が入っているような Javascript をどうしても動かさないといけないなら、別の HTML に押し込めてしまい、iframe 内に呼び出す。

 iframe は CSS などで非表示にしておき (display:none) 、得られた結果はあとで別の個所にコピーすることで表示する。


・iframe 内に表示する html には、URL を呼び出し元に偽装するための Javascript を仕込んで置く。

 history.replaceState(null,null,document.referrer);

 これで、iframe 内に書かれたプログラムは、URL 的には iframe に入れられたことに気付かなくなる。


・iframe の描画完了は、load イベントで知ることができる。

 jquery を使っているなら $("iframe").on("load",function(){~}); という感じ。

 iframe の部分は、もちろん #id などにしてよい。


・iframe 内のアクセスは、$("iframe").contents().find("#foobar") という感じ。

 これで、iframe 内の #foobar にアクセスできる。

 (iframe 内から外側にアクセスする方法はないので、外から操作すること)



これで、描画をとりあえず終わらせてしまい、遅いデータを後からゆっくり料理できるようになった。


あとは、煮るなり焼くなりお好きなように。



▲目次へ ⇒この記事のURL

関連ページ

Programming Tips

別年同日の日記

02年 アップデート完了

02年 サーバー完全復活

04年 夏至祭

07年 大人買い


名前 内容

CRT処分  2017-05-28 11:58:48  コンピュータ

▲目次へ ⇒この記事のURL

古いPCディスプレイを捨てた。

19インチのブラウン管のやつ。三菱製だった。


マルチスキャンで購入時にはそれなりに高かったのではないかな。

でも、X68kにつないでみたら周波数がギリギリだったようで、バチバチいうし不安定。

今の PC で使うには、解像度が低すぎて使えない。


つまりは無用の長物なのに置いてあったのは、単に捨てるのが面倒くさかったためだ。


古いパソコンは、大抵無料回収業者に引き取ってもらっている。

古くても東南アジアやアフリカ諸国では売れたりするし、売り物にならないレベルでも都市鉱山としての価値があるので、無料でも商売が成り立つようだ。


でも、これは基板などからそれなりのレアメタルが回収できる、パソコン本体や液晶ディスプレイが前提。

でかくて重くて基盤のほとんどないCRTなどは、回収対象外。


法律では、CRTは粗大ごみにもできない。

その昔、パソコンが一気に普及したしばらく後に、粗大ごみとしてのパソコンが増えすぎて社会問題化したためだ。


製造メーカーに問い合わせて、お金を払って引き取ってもらう必要がある。

この手間が面倒で、もう使わないのに家の片隅でほこりをかぶっていた。




重い腰を上げて、メーカーサイトを見てみる。


ん? NEC / サムソン / EIZO とともに4社共同でリサイクル事業をやっていたけど、今はこれを解消して単独で回収している、という趣旨のことが書いてあるな。


そうか、じゃぁ三菱にリサイクルを依頼すればよいのか、とおもって情報を探す。


ん? 今はパソコン3R推進協会(以下PC3R)に回収を委託していると書いてあるな。


じゃぁ、そちらを見に行ってみよう。


ん? パソコンメーカーが回収リサイクルします、と書いてあって、各メーカーへのリンクがあるな。


そこから三菱のページに飛ぶ。


どうも、さっき見ていた三菱は、「三菱電機インフォメーションネットワーク」という別会社で、ディスプレイを製造した三菱電機とは違ったようだ。


ここで、「家庭用ディスプレイの回収申し込み」というリンクがあり、規約などの表示・同意のうえで…

ふたたびPC3Rのページに飛ばされた。



えーと、つまり、「回収」自体は三菱がやっているのだけど、回収の申し込み自体は、PC3Rを通さなくてはならない、ということらしい。

何ともわかりにくいシステム。



ともかく、これでやっと回収の申し込みができた。




僕がCRTの型番を少し書き間違えたために、PC3Rから問い合わせの電話が来た。

そこで口頭で修正を行い、数日後に手紙が届く。


振り込み用紙が同封されているので、金融機関からリサイクル料金を払い込む。

すると、また数日後に手紙が届き、郵便局のゆうパック伝票が入っている。



「メーカーが回収」という言葉で、家まで引き取りに来てくれることを少し期待していたのだけど、自分で梱包しないといけない。

実はこれも面倒で捨てられなかった理由の一つで、19インチディスプレイを梱包できるような段ボール箱なんて、なかなか手に入らない。


同封の説明を読むと、伝票の有効期限は 30日以内。

今月はいろいろと忙しかったのだが、その合間を見て箱を調達せねばならない。




結局、非常に大きめの段ボールを調達し、ディスプレイが入るサイズに切って再加工した。


郵便局に持ち込むか、回収に来てもらうか選べるのだが、申し訳ないが回収を申し込む。

19インチディスプレイ、とにかく重い。運びたくない。


申し込んだら、その日のうちに回収に来てくれた。

真っ白い髪のおじいさんが回収に来てくれて、重いディスプレイを任せるのに申し訳なさがあったのだけど、普段から仕事で運びなれているのか重い荷物でも躊躇せず持って行ってくれた。




さて、これで長年の懸案だったCRT処分ができた。


まだ、古いPCと周辺機器などで段ボール2箱分ほど捨てたいものがあって、これは近いうちに無料回収業者に引き取ってもらわねばと思っている。


こちらはクロネコヤマトに持ち込めばいいのだけど…これまた重くて、持ち込みが大変なので箱に詰めたまま家に置いてあるのだった。



▲目次へ ⇒この記事のURL

別年同日の日記

03年 開発言語

03年 クレーマークレーマー

08年 風邪惹き

14年 世界初のMML


名前 内容

Switch 買った。  2017-04-30 12:15:47  コンピュータ 家族

▲目次へ ⇒この記事のURL

遅ればせながら Nintendo Switch 購入。

3月3日発売だけど、今現在、まだ品薄で入手困難。


発売前は様子見、と考えていた。

非常によくできたハードに見えるが、当面は面白そうなゲームがなさそうだったので。

その時点ではまだ発売日に予約入れられたのだけどね。


しかし、ふたを開けたら「今度のゼルダは面白い」と大評判で、一気に品薄状態へ。

ゲーム機っていうのは、欲しい人は事前に予約を入れているものだし、別に欲しくない人は発売されても買おうとしないので、発売初日がすごく売れる。

その後、徐々に売れ行きは落ちていく。


しかし、Switch は売れ行きが落ちずに売れ続けているようだ。

ちょっと珍しい売れ方。




Amazon が時々、急に「予約受付」を開始する。

たまたま別件の買い物をしようとしたときにそれに気づき、4月初旬に予約を入れる。お届けは2週間後予定。


そのころ、マリオカート8DELUX のテレビCMが始まり、長女が興味を示していた。

まず、誕生日に欲しいと言ってきたが、その時にはすでに長女のリクエストでキッザニアの予約を入れていた

誕生日プレゼントはそれでしょ?


そしたら、値段を確認して「溜めているお小遣いで買える値段だから買ってもいい?」と聞いてきた。

いや、ソフトだけ買っても本体無いから、と答える。



うちの子供たち、マリオカートが大好きだ。

…ただし、遊んでいるのはゲームキューブのマリオカート・ダブルダッシュ。

これを、Wii で遊んでいる。


長女は、仲の良い友達の家に Wii U があるそうで、マリオカート8を何度か遊んでいた。

それが、基本的に同じもので新発売、と聞いて遊びたくなったようだ。




予約していた Switch は、まず「ゼルダの伝説」のカートリッジから届いた。

これが、21日木曜日のこと。


お届け予定では、23日日曜日に追加購入した別売りコントローラーが届き、24日に本体が届くことになっていた。

遊びたくても遊べない状況をじわじわと整えられるのか…


しかし、これは Amazon の方で配送をまとめられたようだ。

コントローラーは24日に本体と一緒に届く。



コントローラーを買ったのは、もちろんマリオカートを子供たちと遊ぶためにだ。

でも、マリオカートの発売日は28日。ゼルダは子供にはちょっと難しいだろう、と思ったので、まずは子供に内緒で親だけ遊ぶ。


1日1時間くらいで、まだ1週間もたっていないので、やっと「チュートリアルを抜け出した」くらいの段階。

いや、このゲーム、「ここまでチュートリアルだったのか」と思わせる段階がいくつもあるので、まだチュートリアル内かもしれないのだけど。


出来はいいね。いろいろなところで語られているようなので語ろうとは思わないけど、初代ゼルダの気軽さを取り戻した気がする。

ゼルダ 64 の出来は良かったのだけど、その評価の高さに続編を「大作化」しすぎて、遊ぶのに気の重いシリーズになっていたからね。



子供にはまだ教えないので、居間のテレビに繋げたまま、段ボール箱で隠しておく。

いつもはなかった段ボール箱が増えたのだけど、子供たちは案外気付かない。




そして28日、マリオカート8が届いたのだけど、昼間は僕も仕事が忙しいので子供には黙っておく。


教えたら確実に遊びたがるとわかっているし、そうなると Switch の操作説明から始めないといけない。

おそらくはすぐにわからないことが出てきて、子供が聞いてきたら仕事にならない。



夜になり、風呂も入って寝る準備が整ったところで、「明日はお休みだから寝るの遅くなっていいよー」と言いつつ、郵便物の封を皆の目の前で切る。

マリオカートに喜びつつ、「本体は?」と当たり前の疑問が出たので、段ボールを開ける。


さっそく2回ほど遊んでみるが、さすがにダブルダッシュとはいろいろ違って、まだ「白熱のバトル」とはならない。

まぁ、それなりに楽しんだけど。




寝る時間も近いのだけど、他にもいろいろ気になるようだ。


まず、「いっしょにチョキッとスニッパーズ」を購入してあったのがホーム画面にあったのが気になったようだ。


遊ばしてみる。ふたりで遊ぶのが楽しいゲームなのだけど、4人でも遊べる。

チュートリアルは2人用にしかないので、僕が説明しながら遊ぶ。


協力しながら遊ぶパズルゲームなのだけど、答えは一通りではない。そもそも、何をするのかも示されない。


特徴的なのは、お互いの「体」を重ねた際に、ボタンを押すことで相手を「切る」ことができること。

重なった部分が切り取られて穴が開く。


切られても操作で戻せるし、完全になくなると、少したって復活するので何も問題はない。


「ボールを運ぶ」という目的があっても、体は板状なので運びにくい。

ここに、少し穴をあけてもらえば運びやすくなる。そういう工夫をしながら遊ぶゲームなのだけど、「切る」ことは出来ても「切られるのは」相手次第。


「誰か切って器にして~」とか「斜めに切って~」というような指示が飛ぶのだけど、言っている人がどのキャラを操作しているのか、斜めと言われてもどのような形なのか、などわからないことだらけ。


意思の疎通が大事なのだけど、「形」を言葉で表すのは難しいので、混乱必死。

大勢で楽しむのには楽しいゲームだ。




スニッパーズは、4人で「バトル」もできる。

これがまた、説明も何もないし、遊び方もラフすぎる。


2チームに分かれて戦ったりするのに、チーム分けについて何の説明もないのね。


バスケットボールは、赤チームと黄色チームに分かれていて、一応プレイヤーの二人はその色なのでなんとなくチーム分けになるのだけど、後の二人がどちらにつくかも決まっていない。

いや、そもそも赤プレイヤーが赤チームにつかないといけない、というルールすらないのだ。混乱必死。



ホッケーもあるのだけど、こちらはチーム分けがあるので混乱にはならない。

でも、ここでも相手の体を切れる。

ホッケーゲームで「相手を消す」という選択肢は今までになかったように思う。



そして、「道場」というゲーム。

とにかく、誰かの体を切って消してしまえばいい。自分は消されないようにする。

消すためには重ならないといけないけど、重なった瞬間に相手がボタンを押せば、自分が切られる。


もう、ボタン連打しながら相手に向かっていく、何が何だかわからない戦い。笑いが絶えない。




その後、もう寝ないと…と言いつつ、Mii で似顔絵を作る。

子供たちそれぞれが遊ぶためのアカウントを作りたいから。


子供3人分を作るのに、これまた大騒ぎ。

似ている髪型がない、とか、鼻の形がよくわからない、とか。


一応、Wii で子供の似顔絵を登録してはいたのだけど、みんな3歳くらいで「初めてゲーム機を触れるようになったころ」に作った似顔絵なんだよね。

今とは全然特徴が違うので、作り直し。


#そもそも Wii からの移行もできない。

 上に書いたのは、参考にすらしなかった、という意味。




中1の長男は、マニュアルとか読むのが好き。

でも、Switch のゲームにはマニュアルが付属しない。


そもそもダウンロード販売が基本で、ネット接続しない人や、「手元に有体物が欲しい」人向けにパッケージ販売があるのだろうね。


僕も古い人間なので、有体物が欲しい…と思っていた。

その上、Amazon で見ているとパッケージのほうが、ダウンロードより安い。


それでパッケージを買ったのだけど、ゼルダとマリオカートを切り替える際に、いちいちカードを抜き差しするの面倒くさい。


これは、ダウンロード版買ったほうが便利で価値あるわ。高いのも納得。

パッケージ版を買うメリットが、わずかに安いこと程度しか見当たらないのだ。



じゃぁ、付属マニュアルがないのだからゲーム内でヘルプが充実しているのかと言えば、そうでもない。

これはゲームの作り込み次第なのだろうけど、マリオカートのヘルプは「知りたい」ことをカバーできていない感じだった。


(ゲームの「テクニック」は書かれているのだけど、基本的な遊び方が書かれていない。

 初心者向けの「ハンドルアシスト」や「オートアクセル」という機能があるのだけど、設定方法などが書かれていない、など。

 基本部分は試行錯誤するのも楽しいとはいえ、あまりにも情報が少ないと感じた)


これは、紙のマニュアルでも情報が十分カバーできていない場合はあるので、媒体の違いは問題ではないのだけど。




昨日は、子供たちはマリオカートで楽しんでいた。


今朝、長男がゼルダに興味を持ったので遊ばせてみる。

長女・次女にはまだ難しい。でも、隣で見ているだけでも冒険を楽しめているようだ。


まぁ、ゴールデンウィークだし、のんびり遊ぶのに良いタイミングだったかな。


▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

家族

別年同日の日記

02年 4/30

08年 その後の事件

15年 クロード・シャノン 誕生日(1916)

16年 GAME ON 展関連書籍


名前 内容

フィル・カッツ 命日(2000)  2017-04-14 13:03:46  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、フィル・カッツの命日(2000)


Phillip Walter Katz。

彼は自分の作ったソフトに、名前の頭文字を取って PKZIP と名付けました。


今でも使われる、拡張子 ZIP の圧縮ファイルのフォーマットを決めたソフトです。



詳しい話は、誕生日記事で書いています。

興味を持たれましたら、そちらをお読みください。


この日記は、ただ命日の日付を記録する目的です。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

02年 4/14

10年 iPad を触ってみた

13年 草むしり


名前 内容

プラスとピリオドの取り違え  2017-04-07 11:57:37  コンピュータ

▲目次へ ⇒この記事のURL

恥ずかしながらケアレスミスによるバグを出した。

恥ずかしい話だし、黙っていればいいのだけど、思うところがあったので書いておこう。




PHP でサーバー側を、Javascript でクライアント側を動かすプログラムを組んでいた。

まぁ、良くある話だ。


両言語とも、いろいろと似たところのある言語だ。

データの型は比較的緩く、必要に応じて自動変換される。


たとえば、


32 + "1"


と書くと、33 になる。前の 32 は数値、後ろの 1 は文字列なのだけど、計算しようとしているのだから両辺を数値にしないといけない、と気を回してくれるのだ。


"32" - 1


と書くと、31 になる。これも、同じように文字列の 32 を数値に変換してくれるんだ。


では、次の式はどうなるだろう?


"32" + 1


これは、PHP では 33 で、Javascript では "321" だ。


PHP では + は計算に使われるものなので、左右にあるものを数値にする。


でも、Javascript では + は計算と文字列の連結の両方に使われる。

左側が優先されるので、左側にあるものが数値なら計算になるし、文字列なら連結になる。


PHP では、文字列の連結は . (ピリオド)で示す。


"32" . 1


これで、PHP では "321" になる。

同じことを Javascript でやると、エラーになる。




さて、PHP と Javascript では、文字列の連結方法が違う。

でも、同時に使っていたので、うっかりして Javascript で次のようなプログラムを書いてしまった。


var foo = "bar" . str;


ここで str は文字列の入った変数だ。

文字列を連結しようと思ったのだけど、間違えて PHP のやり方で書いている。


先に書いたように、Javascript では文字列の連結は + なのでエラーに…ならない。なってくれれば気づいたのだけど。



Javascript では、 . (ピリオド)はオブジェクトのプロパティへのアクセスを意味する。



オブジェクトっていうのは、まぁざっくりと言えば、名前を付けた複数のデータを保持する仕組みだ。

AWK や perl 、またはそれらの影響を受けた言語では「連想配列」や「ハッシュ」と呼ばれるものと同じだと思っていい。


var obj = {a:1,b:"Hi!"};


ここで obj.a は 1 になるし、obj.b は "Hi!" になる。


C言語系の言語では、配列のアクセスは [ ] で行われる。

Javascript では、こちらの方法も使えて、obj["a"] は 1 で、 obj["b"] は "Hi!" だ。

[ ] と . (ピリオド)は、少し違うけど「ほぼ」同じものなんだな。


「ほぼ」と括弧書きで書いたのは、完全に同じではないから。

ピリオドで書く場合、後ろに書かれるものが「名前」である必要がある。

[ ] で書く場合は、名前ではなく「リテラル」である必要がある。



多くの言語では、単語は「名前」と「直値(リテラル)」に分けられる。

リテラルには大きく分けて数値リテラルと文字列リテラルがある。


それ以外は、大体「名前」だと思っていいだろう。

(細かく見れば他にもいろいろあるのだけど)


さきに "32" . 1 という例を出したけど、"32" は文字列リテラルで、1 は数値リテラルだ。

だから、ピリオドの後ろには名前が来る、というルールに違反していて、エラーになる。



でも、ほぼ同じ書き方である "32"[1] ならエラーにはならない。"2" が返ってくる。


#最後の例はC言語と同じ動作を提供しているのだけど、案外知られていない。

 文字列を配列アクセスすると、0 から始まる「位置」に応じた文字を、文字列として取り出せる。




先に書いた間違い、


"bar" . str


の場合、 str は文字列リテラルでも数値リテラルでもない。

これは変数 str の指定…正確にいえば、変数の内容を参照するために、 str という「名前」を書いたのだ。


意図としては、文字列リテラル "bar" に、変数 str に入っている内容の文字列を連結、だった。

ただ、連結の演算子を間違えて、PHP 風に表記してしまった。


すると、オブジェクトのプロパティアクセス演算子となる。

str は変数ではなく、"bar" オブジェクトのプロパティとなってしまう。


Javascript では、すべてのものは「オブジェクト」だ。文字列リテラルであっても例外ではない。


先に書いたように、オブジェクトの正体は連想配列に過ぎない。

そして、文字列オブジェクトの場合、関連情報が連想配列として保持されている。


例えば、「文字列の長さ」という関連情報は、length という名前で保持されている。

だから "bar".length とすれば、 3 が返される。


"bar".str は、定義されていない情報を参照した、というだけで、文法エラーではない。

この場合、定義されていないことを意味する、 undefined という値を返す。




恥ずかしいバグ、というのはこれなのだけど、長いコードの中にこれが混ざっていた。


ここで作りだそうとしていたのは、別サーバーにアクセスする際に渡すパラメーターだった。

さらに、このパラメーターはアクセス自体には影響がなく、アクセス理由などをログに残して解析するためのものだった。


結果として、正しい値を渡せていないにも関わらず、プログラムは動作した。

そして、別サーバーは僕の管轄ではなかったため、ログに正しく記録できているかを調べる術はなかった。


つまり、僕は自分で作ったこのバグに気付かなかったんだ。




ログがうまく取れてない、という報告があって付近を見回し、str の内容などが正しく来ていることなどを確認しても、+ と . を間違えていることに気付かなかった。

僕としては「文字列を連結したい」ところに、PHP で文字の連結を行う . を正しく書いているので、おかしくないと思っていたんだ。


でも、ログがうまく取れていないのはどうやら事実らしいし、バグの可能性範囲を絞り込んでいって…30分くらいたって、やっと自分の過ちに気が付いた。


恥ずかしい、と思うけど、プログラマなら誰でも同じような経験を持っていると思う。

自分が「正しい」と思っていることは、間違えていてもなかなか気づくことができない。



で、思ったんだ。

FORTRAN のことを「古い言語」と笑えないぞ、と。


FORTRAN の有名な「おかしな言語仕様」として、, (カンマ)と . (ピリオド)を取り違えてしまってもエラーにならない、というものがある。

見た目も似ているので、見直していても気づきにくい。


そして、金星探査機を失うわけだ。…いや、これは都市伝説に過ぎないのだけど。




そもそも PHP と Javascript の記法を間違えたからいけない、という話ではある。

でも、それをエラーにできず、構文の間違いに気づく機会を失うのは、FORTRAN と同じような言語の不備だ。


Javascript の場合、アクセスできないとなんでも undefined にする。

ここで、アクセスできないならエラーになるのであれば、構文の間違いに気づいただろう。


もっとも、アクセス違反があってもプログラムが動き続けてくれる気軽さは Javascript のよさでもある。


strict モードをつかったらどうだろう…と思ったけど、これもエラーにはできないようだ。


"32"-1 は計算になるのに "32"+1 は文字列の連結になる、という対称性の悪さも気になる部分ではある。

ここは、連結に . (ピリオド)を割り当てた PHP のほうが良いように思うが、そのせいで PHP は、オブジェクトのプロパティアクセスに -> という面倒な記号を割り当てることになった。



FORTRAN の時代に比べて、言語は便利になったと思うのだけど、こうした「単語の解釈」で足元をすくわれる、というのはあまり変わっていないのかもしれない。


"bar" . str の例でいえば、後ろが「プロパティ名」ではなく「変数名」だと判れば、文法違反でエラーにできる。

でも、文字で書くとどちらも名前であり、情報が足りないために類推するしかない。


例えば、PHP であれば変数名は $ で始まり、プロパティ名には $ がつかないため、こうした文法違反を検出しやすい。

まぁ、変数が必ず $ で始まる、という古臭い仕様が良いとは言わないのだけど。


結局、文字を並べてプログラムする、というやり方の限界だとも思う。



Scratch が良いとは言わないけど、「ブロック」を選んで組み込む方式なら、選んだ時点でプロパティか変数かは確定する。

表示上は「名前」だけを示してすっきりとさせつつ、内部的に情報を保持しておけばよいだけだ。


情報の違いによって、表示の色を変えるなどすれば、ユーザーもミスした際に気付きやすいだろう。

語句解析で情報を「類推」するのではなく、語句の中に見えない情報を埋め込んだ言語だな。



その情報によって、プログラマーのケアレスミスを未然に検出する。

そもそも、Scratch の場合は、「組み込めない」場所には、ブロックが入れられないようになっている。

子供向けだからこその配慮だけど、ケアレスミスは起こせない。


いつまでもテキストだけで書こうとするのではなく、これからはそういう方向の言語だってありだと思う。




▲目次へ ⇒この記事のURL

別年同日の日記

05年 工事が遅くなるそうだ

10年 ポメラニアン

14年 オーレ・キアク・クリスチャンセンの誕生日

15年 プログラムは必要か

15年 女性向けのゲーム


名前 内容

西角友宏さん 誕生日(1944)  2017-03-31 15:28:30  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

西角友宏さん 誕生日(1944)

今日は、西角友宏さんの誕生日(1944)


名前はあまり有名ではありませんが、作り出したものは多くの人が知っている。

スペースインベーダーの開発者です。




過去に世界最初のゲームについて書いていますが、まぁ、多くの人が世界最初のゲームは PONG だと考えています。


これは商業用として最初にヒットし、ゲーム業界を作り出した作品。

でも、その前に同じ作者による、「COMPUTER SPACE」というゲームがあります。


PDP-1 で遊ばれていた「SPACE WAR!」を業務用にしたもの。

…なのですが、もちろん業務用にするためにルールは違いますし、最大の違いは、SAPCE WAR! がプログラムで作られていたのに対し、COMPUTER SPACE は回路で作られているということ。


当時、コンピューターはまだ非常に高価でしたし、プログラムを解釈して処理できる機械を作ろうとしたら大変でした。

だから、安くするためには回路で組まないといけなかったのです。


PONG も回路ですし、その後の多くのゲームも回路で作られています。



しかし、タイトーから発売されたスペースインベーダーは CPU 8080 を利用して作られ、回路では実現できないような複雑な内容を持っていました。

そのために大ヒットしますし、同じように「プログラムされた」ゲームが大量に作られ、ゲーム業界を作り出すことになります。


#ソフトウェアで作られた初の業務用機、ということではない。

 インベーダー以前に日本でもヒットした「サーカス」(風船割ゲーム)も 6502 を使用している。

 ただ、サーカスは絵がきれいになり、遊びに幅は出たものの、ブロック崩しの亜流に過ぎない。




インベーダーは、ブロック崩しのブロックが動いたら面白いのではないか、というアイディアから着想されたそうです。


ブロック崩しは、ただでさえ狙うのが難しいゲーム。

動いたらとても狙ってられないので、直接「撃つ」ことにします。


ということは、ボールがないのだから、「落としたらダメ」にはできない。

そこで、敵からも反撃があるようにします。


このままだと戦争ゲームになってしまい、なんだか血なまぐさい。

当時スターウォーズが流行していたので、宇宙戦争ということにします。


これで大体インベーダーゲームの骨子の出来上がり。

非常に論理的に組み立てられていますが、「全く新しいゲーム」を感じさせてくれました。



プログラムで作られたゲームとしては最初期のものなので、バグも多いです。


ミサイルがインベーダーの「下」ではなく、「2つ下」から出てしまうため、密着するとやられない。

いわゆる「名古屋撃ち」です。


インベーダーは左右に動きますが、右に進むときは、左に進むときよりもわずかに速いです。

これもバグだったそうですが、微妙な速度の緩急により、ゲームを単調ではなくしていました。


ビットマップの画面にキャラクターを描き、動かすときには消す必要があります。

でも、インベーダーは左右にしか動かないのだから、左右の余白を大きくしておけば、新しく「描く」時に、以前のものも消してくれる。

…はずでしたが、一番大きな 10点インベーダーが、上に書いたバグにより、最高速で右に進むと軌跡を残しました。

いわゆる「レインボー」。



バグかもしれませんが、すべてがいい方向に動きました。

他社からも真似をしたゲームが多数発売されましたが、バグをとってしまったゲームは「つまらない」と言われてしまう始末。




PONG のコピー基盤でアメリカのゲーム業界が形成されたように、日本ではインベーダーのコピー基盤でゲーム業界が形成されます。


コピーというより「パチモン」と言ったほうがいいかな。

まるっきりコピーする、いわゆる「デッドコピー」ではないです。

(デッドコピーもありましたが)


任天堂も、セガもコナミも、アイレムもニチブツも、インベーダーのコピーを作っています。



もちろん、今でも残るメーカーは「真似」だけで終わらずに、その後オリジナル作品などを作って生き残ってきたのですが。



インベーダー以前のゲーム機は、遊園地や、デパート屋上スペースや、映画館や、喫茶店などに置かれるようなものでした。


でも、インベーダーの大ヒットで、インベーダーだけをたくさん並べたお店、いわゆる「インベーダーハウス」が乱立します。

ブームの終焉と共に無くなった店も多いですが、これらの一部が「ゲームセンター」として生き残っていきます。



メーカー側、店舗側、どちらもインベーダーの出現で大きく変わったのです。

インベーダーが日本のゲーム業界を形成した、と言ってよいかと思います。




西角友宏さん個人については、実のところ僕はそれほど知りません。

まだ精力的に活動しておられる方で、実際にあって話をしたような人の記事も、ネットを探せばたくさん見つかります。


インベーダーが大ヒットしてしまったがゆえに、「アフターサービス」で、インベーダー基盤の交換用ソフトをしばらく作っていた…なんて話もあります。



他社製品ではスプライトが使えるようになったりする中ですから、羨ましくもあったようです。

でも、制約の中で作ったゲームは大ヒットとはいかずとも、よく考えられた面白いゲームだったと聞いたことがあります。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

テニスとインベーダー【日記 16/01/04】

別年同日の日記

04年 びっくりした

08年 花見

14年 長女卒園

14年 カップヌードルミュージアム

15年 春の家族旅行

15年 ペンション とうてんぽーる

15年 バナナワニ園

15年 ぐらんぱる公園

15年 帰り道


名前 内容

ルータ不調  2017-03-30 18:35:30  コンピュータ

▲目次へ ⇒この記事のURL

先日、なんだかネットの調子が悪いことに気付いた。

サーバーの調子かな、と思って調べてみたり、いろいろ絞り込むうちに、どうやらルータが何か変だ、と気づく。


ルータの設定が何かおかしいのかな、と見直してみる。

項目をいじったら、リセットを促された。そして…再接続しない。


げ! 困った。設定をいじってみたり、いろいろするけどなかなか接続できない。


使っていたルーターは、webCaster V120。NTT の純正品(?)だ。

ちなみに、この前は V110 を使っていた。順調なバージョンアップ。


でも、購入は9年前、機種としては10年前のものだった。




何かおかしい。設定はあっているはずなのに接続できない。

「すでにその ID でログインしている」と怒られる。


スマホで(LTE 電波で)情報を探す。


使っているプロバイダのページに、「接続できないくらいは10分くらいたってから再接続」と書かれていた。

えーと、切断しても「ログインしている」とみなされてしまうような場合でも、10分くらいで強制切断されたりするのかな。


試してみると、接続できた。が、すぐ直後にまた切れてしまう。

やはり調子が悪い。いじった設定のせいかもしれない、と設定を元に戻し、また10分待ち、再接続。

しかし接続できない。



おかしい、と思っていじり始めたのが夜10時過ぎ。

何かするたびに 10 分まつ、というようなやり方をしているので、あっという間に深夜1時を過ぎた。


違うことを試してみる。


ルータは PPPoE で上流に接続しているが、この接続を2つ作れる。

1番目のプロファイルを2番目にコピーし、2番目で接続して見ると…接続できた。


全く同じ内容のはず。もう一度1番目で接続すると、接続できない。


PPPoE はソフト的に処理されていると思うので、この2つは等価であるはずなのだけど、なんで?

実はソフトではなく、それぞれの回路が作り込まれていて、片方だけおかしくなった? なんて考える。



しかし、もう夜は遅い。

外部公開しているサーバーなどは、どちらの接続を使っているかの影響を受けてしまう。

この設定を書き換え、問題なくなったところで就寝。深夜3時近かった。


#主夫なので朝5時には起きないといけない。

 でも、春休みで子供の学校もないし、6時まで寝てしまった。




さて、翌朝。

ルータの調子が悪いのは事実だし、新しいルータを買うことにする。


V120 には IP 電話の機能がついていて、プロバイダの提供する、NTTコミュニケーションズ系(以下NTTC)の IP 電話を使用していた。


だから新しいルータにも同じ機能が欲しいが…ない。

NTT純正品は、古いものをいまだに売っていて、低性能で高い。


高性能なものを選ぶと、値段に関わらず、IP 電話機能は付いていない。


その代わりと言っては何だけど、今のルータには WiFi 機能がついているのが普通だ。

V120 はオプションで、このオプションが妙に高いので別の WiFi ステーションを使っていた。


そして、探すと IP 電話のアダプタはそれほど高くない。

今ルータのそばにある WiFi ステーションを無くし、代わりに IP 電話アダプタを置けばよい。


というわけで、ルータと IP 電話アダプタを購入。




ルータの置き換えは おおごと になるので、まずは IP 電話を設定しようと思った。


…設定がわからない。


詳しく書くと長くなるので書かないけど、NTT純正の IP 電話機能は、NTTCの設定に特化することで、使いやすくしてあった。

この言葉は嫌いだけど、「ガラパゴス化」だ。だから、新しい機種も出ない状態になっていたのだ、と気づいた。


NTTCが悪い、というのではなくて、電話って各国で少しづつ規格が違って、対応するのが大変なのだ。

購入したのは海外製のアダプタで、どこの国でも使えるようにやたら設定項目が多い。


それよりは、NTTCがNTT純正品として、国内用の設定を「固定化」させた機種を売っていても、良いサービスだと思う。



まぁ、ともかくたくさん情報を調べたのだけど、今のところ設定方法がわからずに頓挫している。


で、仕方がないからこの部分だけ今まで使っていた V120 を使えないか、と思った。

ルータの内側に、ルータ機能を殺した V120 を置いて、IP 電話アダプタとして使う、という案だ。



ここで調べていて、意外な一文と出会う。


「IP 電話機能は、PPPoE の1番目で接続している時のみ使用できます」


ルータとして動いていないといけない、というのであればまだ理解できる。

でも、1番目の接続でないと動かない。


ということは、PPPoE はソフトウェア処理で、1番目と2番目は等価である…と思っていたのが間違いなのかな。

1番目と2番目は別の回路で処理されていて、1番目の回路に IP 電話の機能がつけられている。


これなら、1番目が調子が悪くて2番目なら動く、というのも説明が行く。


いろいろと腑に落ちたのだけど、IP 電話は当面使えない、ということが確定した。

この電話、仕事用で、仕事では大抵メールを使っているので、数少ない相手が年に1度かけてくるかどうか、という程度のものなので、ダメならあきらめもつくのだけど。


#仕事電話番号にしていて、名刺に番号を印刷してしまっているのが一番の問題。

 この名刺も、ほとんど配らないのだけどね。




ルータは、とりあえず家の中の WiFi ステーションとしては動き出している。

5Ghz 帯も使えるようになり、快適に動くね。


ルータを変えることで「固定 IP 接続」の IP が変わってしまうと困るので、DNS の ttl を短く設定し直した。

キャッシュが無くなったころに切り替えを行おうと思う。




▲目次へ ⇒この記事のURL

関連ページ

ルータ交換【日記 17/04/03】

別年同日の日記

12年 ロボットゆうえんち


名前 内容

X68000 発売日 (1987)  2017-03-28 11:40:52  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は X68000 発売日(1987)


ちょうど 30 年だ、というので記録しておきます。


X68k については、もう 20年前に言いたいこと言っているので、いまさら言うことは何もないです。





公開してから気づいた。


2年前にも X68k の発売日書いてるじゃないか…


鳥頭にもほどがある。




公開当日の内の追記。


シャープ公式の人のツイート。



20年前に書いた僕の記事では、「春発売」と書いている。

当時の記憶では、発売日が明確になってはいなかったからだ。


2年前の日記は、公式に「3/28」となっていたのでその日に書いた。

僕が知らなかっただけで、ちゃんと発売日設定があったのかな、と思って。


しかし、上のツイートで疑問が解消した。

どうやら、今日が発売日、と明確に定まるわけではないようだ。



後日追記 2017.4.7

2月1日…

WebArchive





▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

02年 3/28

03年 布団

04年 花見

11年 何がデマで、何がデマでないのか。

15年 ファミベ、MSX、X68k

15年 家庭用と業務用

15年 X68000発売日(1987)


名前 内容

2つの特許の出願日(1971)  2017-03-22 12:57:52  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

1971年の今日、アメリカで2つの特許が出願されています。


まずは、米国特許番号 3,728,480


「Television gaming and training apparatus」

 テレビ受像機による、ゲーム・訓練装置


出願者は、ラルフ・ベア


彼が、テレビ受像機を、放送を見る以外に使えないか? というアイディアを思い付き、ゲーム機の研究を行ったのが、1967~1968年。

最終的に「Brown BOX」としてまとまります。


これを量産品として販売した Odyssey は 1972年。

発売前に特許を出願したようです。まぁ、普通の判断。


世界で最初のテレビゲームの一つですが、詳細は上のリンク先をお読みください。




もうひとつは、米国特許番号 3,842,194


「Information records and recording/playback systems therefor」

 情報保持、記録/再生のためのシステム


出願者は、RCA の研究者であった、ジョン・クレメンス。


「静電容量ディスク」の特許です。

今では聞きなれない方式ですが、一時期非常に注目され、テレビゲームとも縁が深いです。



1959年には、RCA のトーマス・スタンレーによって「静電容量ディスク」のアイディアが考案されていたそうです。

これは、普通のレコード盤にビデオ信号を記録する、というもの。


レコードは、音…つまり、空気の揺らぎを、レコードの「溝」の揺らぎとして記録します。

しかし、ビデオ信号は音よりももっと周波数の高い「光」の波であり、この方式では記録できません。


光と電気・磁気信号は近いものなので、せめて電気・磁気で信号を記録できれば…というところ。

実際、ビデオテープなどは磁気を使いますし、DVD などはレーザー光線を使い、光で記録を行います。


#DVD は前段階として、デジタルによる信号圧縮も行われているので単純ではないですが。



静電容量ディスクは、レコードのような「ビニール樹脂」が、静電気を溜めやすい性質を利用したものです。

小さな穴を作り、そこに「静電気」を溜めようとすると、穴のサイズによって溜められる量が変わります。


この「静電容量」を信号として取り出せれば、電気的な記録が可能です。

物理的な溝の揺らぎで記録するよりも、高密度で、高速に読み出せる記録が可能でした。


1964 年には RCA で本格的に研究が始まり、1971 年までに技術を確立し、特許が出願されたのです。




アメリカでは、RCA から CED(Capacitance Electronic Disc :電気容量ディスク、の意味)として発売されています。


日本では、この方式をさらに改良した、VHD(Video High Density Disc :高密度ビデオディスク)として 1981年に発売されました。

ちなみに、根本的な部分の改良なので、CED との互換性はありません。



CED では、レコードのように1本のらせん状の溝があり、その溝に従う形で信号記録のための穴があけられていました。

しかし、VHD には溝がありません。完全に平らなディスク上に穴があけられ、読み出し針は自由に動くことができます。


これによって、ランダムアクセス…頭出しが可能なことが VHD の特徴でした。

また、溝がないことから「針が溝を削る」こともなく、摩耗しにくい…ともされましたが、それでも物理的な接触はあるため摩耗します。




ところで、CED/VHD のライバル規格として、レーザーディスク (LD) があります。

フィリップス/MCA が企画したもので、日本ではパイオニア1社のみが製造していました。


こちらは 1978年にはアメリカで発売、1980年に日本で発売しています。


名前の通り、レーザーで読み取ります。接触しないので摩耗はなく、ランダムアクセスも可能です。

ただし、記録時間は LD が30分、VHD が1時間でした。


LD は「両面ディスク」を発売し、1枚で1時間として欠点をカバーしましたが、途中で裏返すという手間が増えます。

(のちに記録方式を拡張し、片面1時間にも対応。)


レーザーという「新技術」を使っていたため、機械が高価なのも普及を妨げていました。



しかし…ここからが、今日の本題。

1983 年、「ドラゴンズレア」が発表となります。


世界初の、レーザーディスクを使用したテレビゲームでした。



まだゼビウスが「最も美しい」テレビゲームだった時代に、ディズニー風のセルアニメで遊ぶゲームは、まさに異次元のものでした。


LD の機械が高価でも、業務用として売れない値段ではありません。

例え 30分しか記録できなくても、業務用ゲームのプレイ時間としては十分です。


そして、すぐに再生画面が切り替えられる、というランダムアクセス性を活かし、操作に成功すればアニメが続き、失敗すればすぐに「やられた」画面を表示するようになっていました。



LD の欠点をカバーし、長所を伸ばす形で応用したゲームにより、LD の存在感を示したのです。




ドラゴンズレアは大ヒットゲームとなり、日本でも、サンダーストーム(DATA EAST)、タイムギャル(TAITO)、バッドランズ(KONAMI)などなど、多数の LD ゲームが発売されます。


#アストロンベルト(SEGA)は微妙な所。

 ドラゴンズレア以前から開発されていた一方、背景を LD に任せただけの普通のシューティングゲームだから。



そして、これらの「家庭用」は、主に VHD で発売されました。

LD よりも VHD のほうが、本体価格が安くて普及していましたから。


#もちろん、LD でも出ましたけど。


ただし、ゲームで遊ぶにはそれなりの設備が必要になります。

主に、テレビとの親和性が重視されたパソコンだった、シャープの X1 と、VHD の開発元であるビクターも製造していた MSX 用にソフトが発売され、パソコンから制御できる機能を持った VHD プレイヤーも必要でした。


参考:VHD サンダーストーム



ランダムアクセスと言っても、読み取りヘッダの移動時間は物理的に必要です。

LD や VHD のゲームでは、特殊なフォーマットで記録を行うことで、こうした「移動時間」を最小にしています。


確か、当時のベーマガで、この技術を説明していました。


VHD は普通らせん状に1本にデータが記録されているのだけど、この「らせん」を2本にする、というもの。

通常映像のすぐ横の溝に、「失敗した時の分岐先」を用意することで、ヘッダの移動時間を最小化するのです。



これ、昔の「ひもを引くとランダムにしゃべる人形」…トイストーリーのウッディみたいなおもちゃで使われていた技術と似ています。

…って書いて判る人はほとんどいないでしょうね (^^;;


ウッディみたいなおもちゃは、中に非常に小さなレコードが入っています。

レコードには普通溝が1本ですが、4つの溝が刻まれていて、ひもを引いてバネを巻いたときに、たまたま針が落ちたところの音声が再生されます。




VHD ゲームは「オリジナルソフト」も多少はあったのですが、VHD ゲームを作るのは手間がかかるため、ほとんどは業務用の移植でした。


ただ、ビクターもパソコンとセットにできる VHD プレイヤー、なんて高価なものを売った以上はソフト供給の責任があるわけで、いろいろ変わり種も発売していました。


ゼビウスの背景が延々と流れるだけのディスク、というのがあったのを覚えています。

通常そんな画面が出るわけはないので、ゼビウスのソフトを書き換えて、わざわざ専用に収録したものだったそうです。



当時、ゼビウスは「移植不可能」と言われていましたが、最大の問題が背景のスクロールでした。

当時のパソコンにはスクロールのハードウェアなんてなかったため、すべてのドットをソフトウェアで書き換える必要があったのです。


ここに、ゼビウスの背景 VHD を垂れ流して、ゲームに関係するキャラクターだけ書けばよいとしたらどうでしょう?

きっとそんなソフトが発売されるに違いない、と思ったのですが…


…出るわけありませんでしたね。

パソコンだけでも高価だった時代、特殊な VHD本体と接続キット、さらにゼビウスの背景 VHD まで買った人しか遊べないゲーム、なんて需要あるわけありませんし。




LD ゲームは、画面はきれいかもしれませんが、その特性上「自由に動く」ようなことは出来ず、画面の指示に従ってタイミングよく操作を行うだけの、覚えるだけのゲームでした。


そのため、あっという間にジャンル自体が廃れます。

1984~1985 のわずかな期間に、ほとんどのゲームが発売されたのではないかな。



ちょっと特殊な所では、1990 年のギャラクシアン3。

あまり LD ゲームとはされません。


セガの「アストロンベルト」と同じで、背景が LD で、その上にキャラクターを重ねて3Dシューティングゲームを行う。

ただ、7年もたっているので技術は格段に上がっていて、背景とキャラクターの間に違和感を感じません。


1990年の、いわゆる「花の万博」で披露されたもので、28人が 360度スクリーンで同時に遊ぶという、大規模なものです。

後に6人で遊べるバージョンが作られ、ゲームセンターに置かれました。


…といっても、これも非常に高価で、置かれた店は限られていましたけど。

(大学の近くにあったので、仲間と一緒に遊びに行きました)


こんな大型機で、しかも LD なんて特殊なものを使っているので、保存しておくのも大変なようです。


2010年に大規模な「LD エミュレーション」を作成するプロジェクトが行われています。


LDプレイヤーが入手困難になっているので、全動画を PC に取り込み、LD 制御信号を解釈するプログラムを作ることで、PC に LD プレイヤーの代わりをさせる、というものでした。


これは、「アーケードゲーム博物館計画」さんの所有物で、年に数回開放しています。

そのタイミングで倉庫に行けば遊ぶことができるそうです。


僕も、昨年秋に友達と遊びに行ってみようと計画していたのですが、残念ながら昨年秋の開放は中止になってしまいました。



#今回「静電容量ディスク」の話のはずが、すっかり脱線してしまいました。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

03年 久しぶりに日記

07年 忙しい


名前 内容

タネンバウム教授(1944) ストールマン(1953) 誕生日  2017-03-16 13:19:11  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は、アンドリュー・タネンバウム教授(1944)と、リチャード・ストールマン(1953)の誕生日。


この二人が同じ誕生日、というのはすごい偶然だと思います。


タネンバウム教授は、MINIX の設計者。

MIT の卒業生で、カリフォルニア大学バークレー校で博士号を得ています。


その後、オランダのアムステルダム自由大学で計算機科学の教授を行っています。

この過程で、学生にコンピューターOSの仕組みを教える教材として、MINIX を設計。1987年に完成させます。


UNIX は、そもそもミニコンピューター(と書くと小さそうですが、パソコン=マイクロコンピューターより巨大なもの)で動くOSでした。

MINIX は、その機能を厳選し、IBM-PC で動くようにしたOSです。


MIT のハッカー風土を知り、バークレー校のBSDを知っている教授が作った、誰でも使える UNIX でした。




と言っても、MINIX は機能を限定した UNIX です。

MINIX でOSの仕組みを学んだリーヌス・トーバルズが、後に「ハイエンドな」IBM-PC で動く、フルセットの UNIX を作ります。


これが現在の Linux

ただし、Linux はOSの一番重要な部分、「カーネル」だけです。

周辺ソフトなどを整え、OSとして使えるようにするには、別のソフト群が必要でした。




話は変わって、リチャード・ストールマン。RMS とも呼ばれます。(ミドルネームは「マシュー」)


ストールマンも MIT の学生でした。ただし、卒業はせず、中退。

MIT のハッカー文化が消えつつあるときの学生で、書籍「ハッカーズ」の中では、最後の章でやっと登場します。

ハッカー最後の生き残りとして。


ハッカーの倫理は、当時のブームであった「ヒッピー文化」に深く根差しています。


誰かが作ったものは、皆で共有されるべき。すべてを公開し、秘密を無くすべき。

金もうけのために働き、稼ぎを自分一人の財産にする、なんていうのは、最も忌むべきことでした。


しかし、学生の時はそのような理想を口にしても、社会人になれば金もうけのために働く必要があります。

ハッカーたちの多くは、MIT 内の「AI研究所」に所属し、政府の助成金で研究をするモラトリアムを送っていましたが、その助成金すらも制限があります。


そして、みな自分たちの技術や知恵を「商品」として、商売をし始めるのです。


特に決定的だったのが、先日も書いた「Lispマシン」でした。

AI研究所では Lisp マシンを開発しましたが、この商品化のために Symbolics 社が作られます。


そして、「金儲けは許さない」とした一派と分裂。

許さないとした一派もLMI (Lisp Machine Inc) という会社を作り、結局は Lisp マシンで商売を始めるのです。


これが、ハッカー文化の終焉でした。



ストールマンはハッカー文化の中心となった人達よりも若く、このどちらの行動も許せませんでした。

…まだ若かったのですね。


そこで MIT を飛び出し、「すべてのコンピューターソフトをフリー(自由、無料)にする」という活動を始めます。


これが GNU 活動。

UNIX の複製品を作り、無料で配布することが当初の目的でした。




OS自体を作るのはなかなか難しいことです。

そこで、GNU は「周辺ソフト」から活動を開始します。


UNIX の標準コマンドは、すべて GNU 製品として用意しました。

一般的な標準コマンドよりも性能が良く、機能が多く、ソースコードも配布され、改造も自由で、無料です。


ソースコードは「Cコンパイラ」で処理すると、コマンドとして使える「実行ファイル」が出来上がります。

このCコンパイラも、GNU 製品で用意しました。


ソースコードの作成には、テキストエディタが必要です。

実は、ストールマンは GNU 活動を始める前から、Emacs というエディタを作っていました

これも GNU 製品として使えるようにします。


UNIX 上では、OSは「カーネル」の部分と、ユーザーが操作を行う「シェル」の部分に分かれます。

このシェルも、従来より高性能なものを作成しました。




とにかく、UNIX のありとあらゆるソフトを無料で使えるように。

ただ、周辺ソフトは全部そろえられても、カーネルだけは作れません。


カーネルというのは、ハードウェアに密着し、その違いを隠す部分です。

上に書いたようなソフトは、そうした「違いが隠された」上で動作するものなので、OSが整っていれば、ある意味どこででも動作します。


しかし、OSのカーネルは、マシンごとに作成しなくてはならず、手間もかかるし泥沼の作業になりやすいのです。




さて、ここで先ほどタネンバウム教授のところで出てきた話に繋がります。


タネンバウム教授の MINIX で勉強したリーヌスが、Linux という新しい UNIX 準拠のOSを作りました。

ただし、カーネルだけで、周辺部分が一切ありません。


ストールマンは、UNIX 準拠のOSを用意しようとして、周辺一式を揃えました。

しかし、カーネルの部分がありません。



この二つを組み合わせれば、UNIX として使えるようになるわけです。

実際、現在の Linux は組み合わせた状態で「配布」されています。



ストールマンとしては、リーヌスの名前を付けた「Linux」という名前でこのセットが呼ばれることを、快く思っていないようです。

GNU/Linux と呼んでほしい、と呼び掛けていますが、あまりこの呼び方をする人はいません。



リーヌスとしては、Linux を GNU のライセンスに従って配布することにしています。

だから、ここでも GNU 製品と呼んでも差し支えないことになる。


もっとも、GNU の考え方も一枚岩ではなくて、GPL の解釈だって、リーヌスとストールマンで違います。


ここら辺、GNU に関してはいろいろな話があるのですが、長くなるのでまたの機会に。



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

別年同日の日記

05年 大忙し

09年 辻堂海浜公園

15年 ドットリ君


名前 内容

世界最初のドメイン登録(1985)  2017-03-15 11:00:15  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

今日は、世界最初のドメイン名が登録された日(1985)


…と言ってしまって良いものかどうか。

一応、この前から「ドメイン名」は存在していました。


ただ、登録機関が作られ、最初に正規の手続きが取られたのは、 SYMBOLICS.COM で、1985年3月15日に登録されているのです。




インターネットは、初期の頃に IPv4 が完成し、IP アドレスを直接使ってコンピューターを指定していました。

しかし、これは覚えにくく、不便です。


そこで、HOSTS.TXT という仕組みが考えられます。

テキストファイルで、IP アドレスとホスト名(コンピューターの名前)の組を書いただけのファイル。


ホスト名を指定すると、自動的に HOSTS.TXT を調べて IP アドレスにアクセスを行います。


この HOSTS.TXT は、マウスの発明者としても知られるダグラス・エンゲルバートが管理していました。


彼はスタンフォード研究所(Stanford Research Institute)に所属していましたが、自分のマシンで、この HOSTS.TXT を FTP 公開していました。

ですから、時々 FTP で最新の HOSTS.TXT を取り出し、自分のマシンに入れる必要があります。


Stanford Research Institute's Network Information Center


「スタンフォード研究所 ネットワーク情報センター」の頭文字をとって、SRI-NIC と呼ばれます。



しかし、このやり方は、1980年代の初頭にはホスト名が数百件を超え、破綻気味でした。


そこで、ポール・モカペトリスが、ホスト名の分散管理を考案します。

Domain Name System …いわゆるDNSです。


1983年11月に構想の概要が公表されています。(RFC882,883)

1984年10月には、ドメイン名の名付け規則が決められます。(RFC920


1987年11月には、プロトコルなどの詳細などが決まって実装されます。(RFC1034,1035



SRI-NIC では、命名規則が決まった後の 1985年にはドメイン名の登録受付を始めています。

そして、現存している「一番最初の登録」が、1985年3月15日登録の、SYMBOLICS.COM なのです。




さて、話としてはこれでおしまい。

でも、折角なので SYMBOLICS.COM について書いておきましょう。



MIT にジョン・マッカーシーという計算機学者がいました。

人工知能の生みの親の一人であり、タイムシェアリングを普及させた人で、Lisp 言語の設計者です。


さて、Lisp という言語、非常にシンプル、かつ強力な処理構造を持ちます。

面白いので紹介したいところなのですが、長くなるのでそれはまたの機会にしましょう。


ここで重要なのは、Lisp は List Processor の略である、ということです。


List 構造は、プログラマーならご存知かもしれません。

1つのデータの塊に、次のデータの塊への「ポインタ」を用意し、次々繋げていくデータ形式です。

データを移動したい際に、実際のメモリ上から動かす必要はなく、ポインタのつなぎ変えだけで済む、という利点があります。


Lisp は List Processor なので、すべて…データだけでなく、プログラムもこの List 構造で作られています。


さらに詳細にいえば、Lisp では、ポインタのつなぎ方がすべて二進木になっています。

ポインタの2つ組みが非常に重要なのです。




さて、Lisp は非常に柔軟なデータ形式を持っているのですが、そのぶん処理は遅いです。


たとえば、Lisp では整数型と浮動小数点型の数値は区別はされていますが、問題なく加算できます。

これ、今の言語では当たり前ですが、当時としては画期的なこと。

代償として、加算の前に「型チェック」や、必要なら「型の変換」が必要になるので、速度が遅いです。


そこで、Lisp 処理に特化したコンピューターが、MIT で開発されました。

後に多くのメーカーがこの市場に参入し、一般に「Lisp マシン」と呼ばれます。


Lisp マシンでは、word を保持するのに必要なメモリよりも若干大きめのビット数を確保してあって、データと型を一緒に保持していたりします。(タグ付きアーキテクチャ)

これにより、ハードウェアが型チェック・変換をサポートし、速度の低下を抑えます。



先に書きましたが、List 処理では「ポインタ」の操作が非常に多いです。

Lisp マシンでは、型の一つとしてポインタを持っていて、データを読んだ時に「次のメモリ」を参照すると、自動的にポインタの示す先に進んだりもします。


アドレスの概念がハードウェア的に隠蔽されているのです。


#Lisp マシンは Lisp を効率よく実行できるようにはなっていますが、他の言語、例えばCだって動かせます。

 しかし、アドレスを持たないため、「ポインタ」概念は混乱があります




やっと今日の話に戻れます。

世界最古のドメイン、SYMBOLICS.COM を取得した Symbolics は、MIT で開発された Lisp マシンを商用で販売する会社です。


実際には MIT の研究所内で活動し、その代償として成果は MIT に無償提供されました。

つまるところ、商用販売するから組織を分けただけで、実体は MIT の人工知能研究所なのですね。


ちなみに、現在はこのドメインは売却され、ドメイン名管理会社が所有しています。

「最古のドメイン」を知らせるページが設置されていますが、その会社の宣伝を兼ねているのでしょうね。



ところで、Symbolics のキーボードは…なんというか、とても個性的です。


画像は、Retro Computing Societyから引用させてもらっています。

クリックすると別ウィンドウで同じ画像を開くので、細部まで拡大してご覧ください。


このキーボード、「Space Cadet Keyboard」と呼ばれます。


Cadet というのは「士官候補生」の意味。

このキーボードを使う君は、将来宇宙で活躍するヒーローの候補だ! ってことですかね。

SF映画に出てくる、すごい装置っぽさはあるよね。



キーボードには謎の記号がいっぱいついています。

∞⊂∀∂みたいな数学記号はまだいいとして、👍👎👈👉とかありますからね。


Shift や Ctrl に当たるような修飾キーにも、「SUPER」「HYPER」「GREEK」とか、いっぱいある。


注目すべきは「META」かな。これ、Emacs ユーザーなら知っている「METAキー」の本物です。

今のキーボードでは ESC で代用するのが普通だけど。



このキーボード、{ } …いわゆる「弓括弧」もある。

以前、弓括弧が使えた最初のマシンはどれか、という調査をやったのだけど、その時にこのキーボードを発見して「すごい!」って思いました。


リンク先に書いてあるけど、MIT の Lincoln Keybord も数学記号とか { } とか入れてあるんだよね。

Symbolics も、先に書いたように実態は MIT の人工知能研究室です。同じような記号が使えるのは、多分関係あるんじゃないかな。




ドメイン名を登録開始した 1985年中には、5つのドメインしか登録されていません。

2番目は bbn.com。これも MIT と関係の深い、初期のインターネットを形作った企業です。


続いて、think.com mcc.com dec.com …やっぱり、全部 MIT と関連のある企業。


5番目の northrop.com が、やっと関連のない企業(航空機製造業)です。

でも、空軍がらみの企業だよね。MIT って、空軍や航空業界ともつながりがあるので、やっぱその関係かも。



ドメイン登録は SRI の仕事でしたが、SRI 自体は 1986年になってから、7番目に登録しています。

6番目は Xerox 、8番目は Hewlett-Packard。1986年は、シリコンバレー企業が続々登録しています



▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

関連ページ

タネンバウム教授(1944) ストールマン(1953) 誕生日【日記 17/03/16】

別年同日の日記

04年 作っちゃいました

10年 V60 設計者にお会いした。

14年 さよなら遠足

15年 手相開発時の技術話(2)

15年 さよなら遠足


名前 内容

QV-10 発売日(1995)  2017-03-10 11:45:05  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

QV-10 発売日(1995)

今日は QV-10 の発売日(1995)

大ヒットし、「デジタルカメラ」を普及させた機械です。


写真は、QV-10 のマイナーバージョンアップ、QV-10A ね。

小さな改良があるのと、本体色が違います。

後で書くけど、初代も持っていたのだけど、壊れて今は 10A しか残ってない。



僕はいつも古いコンピューターの話ばかり書いているけど、今日は比較的新しい。

といっても 22年前の話だけど。(普段は 60年前とか…僕が生まれる前の話書いてるからね)




実のところ、QV-10 以前にも「電子カメラ」は存在しています。

ソニーのマビカが有名ですね。


これが市販された最初、ではないのですが、研究開発としてはソニーが最初(1981~)なので、製品としては人気が出ました。



マビカが発売された当時、僕は大学生で、 Oh!X という雑誌が愛読書でした。

ライターの一人(荻窪圭だったはず)がマビカを購入して、これがいかにパソコンと相性の良い、遊べる機械であるかを、楽しそうに書いてました。


マビカは電子カメラだけど、アナログ記録でした。

2inch フロッピーディスクにアナログで記録して、見るときにはオプションのアダプター経由でテレビに接続して見るのね。


X68000 はテレビと組み合わせて使うことを前提に設計されたパソコンで、オプションで「カラーイメージユニット」がありました。

テレビ画面をパソコンに取り込むための周辺機器。


だから、マビカとイメージユニットを組み合わせることで、撮影したものをそのまま X68000 で扱えます。

これが、パソコンと相性が良い、という理由でした。


…でも、イメージユニットは高価だったし(¥69,800)、マビカも本体だけでは使えず、テレビ信号を作り出すプレイバックアダプターなどを買うと10万円を超えます。


当時はまだ大学生だったので、楽しそうだと思う反面、とても手が出ませんでした。




1994 年には「世界初のデジカメ」である、Apple Quicktake 100 が発売されています。

…へー、そうだったんだ、ってくらいの話。


Mac の周辺機器として設定されていたので、Mac ユーザー以外には話題にならなかったみたい。

11万8,000円」という情報が得られたので、国内でも販売されたのでしょう。


640x480 ピクセルなら 8枚、320x240 ピクセルなら 32枚撮影できます。

ズームもない、フォーカスも固定、写真を見るにはパソコンが必要、という純粋な「画像を取り込むための周辺機器」でした。



…なぜか一時期持っていたのだよね。

たしか、ヤフオクで Mac の周辺機器探していたら、Quicktake 100 も付属したセットで出品されていたのではなかったかな。


そのころはすでにデジカメの普及機で、こんな低性能な機械に興味はなかったので、即刻売り払ったと思います。




そして QV-10 の発売。

¥65,000 だったようです。


320x240 の画像が、96枚撮影できます。

液晶ディスプレイがついていて、撮影したその場で写真を見ることもできたし、パソコン側から画像を送り込んで、ビューワーとしても使えました。


発売前から情報を知り、先に書いたマビカの話などもあって、「ぜひ欲しい」と思ってました。

この頃はスキャナも欲しかったのだけど、とにかく画像が取り込めるのだから、本の挿絵とか取り込みたいなら接写すれば何とかなるだろう、とも期待を込めて。


でも、正直なところ、値段も結構高いし、画質も悪い。

こんな変なものを買う人は少ないだろう…と、発売日に量販店に行くと「大人気であっという間に売り切れました」と店員さんに言われます。


驚きました。こんな変なものを欲しがる人が、僕以外にもたくさんいるんだ、って。

次の入荷はいつになるかわかりません、多分1か月くらい後です、と言われましたが、その場で予約して帰ります。


…2日後に、「入荷しました」という連絡が来ました。

ずいぶんと速いな。



#当然ですが、スキャナ代わりにはなりませんでした。

 スキャナは後で買った。




高校時代は写真部に在籍していました。かけもちの幽霊部員ですが。

一応文化祭の時には写真を出展していたし、暗室作業も一通りはやりました。


でも、写真ってたくさん撮らないとダメね。

上手な人は、躊躇せずにシャッターを押す。大量にとった中から厳選して、本当にいい写真を公開する。


もちろん、最初から構図を決める能力も必要ですよ。

どの写真も上手に取れていて、その中から厳選するのだから、人を感動させられるレベルの写真が生まれる。


でも、僕にはどちらもなかった。

構図を決める能力も、フィルムを湯水のように使う財力も。


#財力は、パソコンにつぎ込んでいたからだとも言えます。

 写真やる人が金持ちなわけではなく、配分の問題。



そんなわけで、「フィルムを使わないから気軽に録れる」「96枚も録れる」というのは、なかなか快適でした。

普段から QV-10 を持ち歩き、何か面白いものがあれば気軽に撮影します。


バスの時刻表とか、メモしたいものを気軽にパシャリ。

今では当たり前ですが、フィルムカメラの頃には考えられない使い方でした。



QV-10 はフラッシュなんかついていませんでしたが、暗がりに強く、夜の街灯の下でも撮影できました。


電池食いではありましたね。

その上、電圧が足りないから充電池は使えない。




液晶の付いた本体部分とカメラ部分の角度が変えられる…カメラ部分が「回る」ことに関しては、今だと「独創的だった」とする解説が多いのですが、「液晶ビューカムの真似」というのが当時の率直な感想。


デジタルカメラに液晶を付けたのは世界初だったし、それによって気軽さが強調され、大ヒットしたのは事実です。

今のデジカメの方向性を示したのは、Apple Quicktake100 ではなく、QV-10 とされるのもそのため。


だけど、ビデオカメラで「液晶ビューカム」という機種をシャープが 1992年に発売していて、QV-10 と形がそっくりです。

QV-10 は安くするために、普及していたビデオカメラ用 CCD を使用した、というのも相まって「動画の撮れない、小さな液晶ビューカム」だと思っていました。



真似が悪いというのではないよ。

この「カメラ部分に角度がつけられる」というのは非常に便利で、QV-10 の後に続いたデジカメブームでは真似した会社も多かったし、むしろこの機能がついていない、普通のカメラのような形状だと不便だと感じていた。



ところで、ビデオカメラ用 CCD は、NTSC ですからデジタルに換算すると 640x480 程度の画像を撮影できます。

でも、縦方向はインターレース…奇数ラインと偶数ラインを交互に読む仕組みです。


だから、縦 480 で撮影すると、奇数ラインと偶数ラインの間に 1/60秒のずれが生じてします。

「静止画」としては、妙なことになってしまうのです。


これが、QV-10 が 320x240 で撮影する理由。

記憶容量を節約する意味ももちろんあるのだけど、安くするために「仕方ない」理由があるのです。



このWEBサイトは 1996年に作り始めていますが、初期の写真は QV-10 で撮影されています。

当時のインターネットは回線速度も遅く、320x240 でも「大きすぎる」くらいだったので、十分な性能でした。


でも、QV-10 だと料理中の写真撮りにくいのね。

赤外線フィルタが不十分で、熱い部分が「緑色」になってしまうの。



いろいろと欠点もあったけど、欠点を補って余りある楽しさもありました。




QV-10 がヒットすると、カメラ会社からもっと本格的なデジカメが発売され始めました。

デジカメの黎明期ですね。


カメラ会社としては、ちゃんとした「写真」を撮れないといけない。

最低 640x480 以上の画質にしたいのですが、そのためには CCD から専用品を設計しないといけない。


当然高価になります。

高画質にするためには、ピクセル数を増やす必要もありますが、それは「1ピクセルの面積」を減らすことでもあります。


そうすると、暗がりに弱くなる。

フラッシュを搭載しても、気軽な撮影は難しくなります。



何よりも、慌てて QV-10 の後を追ったカメラは、搭載しているソフトウェアがこなれていないものが多く、使いにくい印象でした。


僕も QV-10 のしばらく後に「もっといいカメラを」と思って DC-3 とか買いましたけど、使いにくかった。

暗いと撮れないし、撮影後にすぐ電源を切ると、画像が保存されていないことがある。

(電源はソフトウェア制御しているはずなのに、「データ保存」よりも「電源処理」を優先してしまっている)



そのころ、まだ結婚する前の妻から「デジカメ買いたい」と相談を持ち掛けられ、QV-10 を勧めました。

主な想定用途は WEB サイト作成だったから画質は十分だったし、何よりもそのころには安くなっていたから。


これが、冒頭画像の QV-10A です。

僕の QV-10 は、使い込みすぎて壊れてしまって捨てたのだけど、妻の QV-10A はまだ残っています。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

歯車

今日は何の日

別年同日の日記

02年 3/10

15年 カラオケ


名前 内容

BSD 初リリース日 (1978)  2017-03-09 15:30:18  コンピュータ 今日は何の日

▲目次へ ⇒この記事のURL

今日は BSD 初リリースの日(1978)


UNIX は、AT&T ベル研究所で作成されました。

別に商品として作られたわけではなく、ケン・トンプソンが「ゲームを遊びたい」という素敵な理由で作り始めた、趣味のシステムです。


でも、ベル研究所は「研究所」だけあって優れた人材が集まっていました。

仲間が寄ってたかって UNIX を改良し、優れた OS へと育ちます。


当初 PDP-7 でアセンブラで作られれていた UNIX は、PDP-11 に移植され、新たな言語「C」ですべてを書き直されます。

これにより、OS自体の構造も他の人に判り易くなりました。


この頃になると、ベル研究所も UNIX の商品価値に気付き始めたみたい。

でも、AT&T はあまりに巨大企業で、独占禁止法により本来の業務…電話以外の商売を禁じられていました。


だから、UNIX は「無償」で、ソースコードが大学などの研究機関に配布されます。

OSの研究用、という名目でした。


特に、カリフォルニア大学バークレー校では、UNIX の生みの親であるケン・トンプソンが直接出向いて講義を行うなど、積極的に UNIX を導入しました。




バークレー校に、ビル・ジョイという学生がいました。


彼は UNIX を積極的に改良し、オリジナルにはなかった各種機能を追加します。

そして、ある程度改良が溜まった時点で、これらをまとめて公開しました。


オリジナルに対するパッチ集です。そのため、使用するにはオリジナルが必要です。

しかし、これが「バークレイ・ソフトウェア・ディストリビューション」(Berkeley Software Distribution)、略してBSDです。


1978年の3月9日に配布された first BSD (1BSD) では、Pascal コンパイラと、ex エディタが含まれています。


この ex エディタ、以前に書いています

UNIX の標準エディタだった ed を改良して、豊富な機能を持たせたものです。


特筆すべきは、ビデオテレタイプ…ブラウン管を使用した端末用に、「ビジュアルモード」を持っていたこと。


通常の「ラインエディタ」モードなら、テレタイプでも使用できます。

ビジュアルモードはビデオテレタイプでしか使えませんが、前後の行を同時に参照しながらファイル編集が行え、しかも編集位置を示すカーソルを、自由に動かすことができるのです。


…いわゆるスクリーンエディタ、今我々が「エディタ」と呼んでいるものの元祖ですね。


このモードは、起動後に切り替えることもできましたが、コマンドファイルの名前を変え(シンボリックリンクを作ればいい)、起動時からビジュアルモードにすることもできました。


ビジュアルモードの際は、コマンドを vi とします。Visual の先頭2文字です。




BSD はその後も版を重ね、便利になっていきます。

UNIX に初めて「仮想記憶」を取り入れたのは、3BSD。

UNIX はすべてを「ファイル」として統一しようという思想があるのですが、ネットワークすらも「ファイル」の一つにしてしまったのが 4.2BSD 。


BSD は本家 AT&T の UNIX を超え、広く使われ始めていました。

しかし、BSD は AT&T UNIX の派生品であり、AT&T のライセンスを受けたものしか使用できませんでした。


この不便を無くすため、AT&T 由来のコードが徹底的に排除されていきます。

1989 年には、4.3BSD Net/1 として、完全ライセンスフリーな BSD が作成されています。



こうした改良には DARPA も資金を提供し、バークレー校だけではなく、多くの大学から専門家が協力しています。

4.2BSD には、マスコットキャラも用意されました。




しかし、BSD が改良を続ける間にも、AT&T は「独占禁止法」により解体され、分社化しました。


分社化した AT&T は、もう大企業ではなく、「電話事業のみ」の縛りも無くなりました。

UNIX を商品化しようとする AT&T と BSD の間に訴訟が起こります(1992~1994)。


結局、この訴訟では UNIX の商標権が AT&T にあることが認められ、BSD は「UNIX」という名前を捨てます。

これ以前、BSD は「BSD UNIX」と呼ばれていたのですが、以降は単に BSD となります。



AT&T の UNIX … System V は、この間にも着々と「標準化」を進めていました。

ヒューレットパッカード、IBM、SCO、NEC、アップル、そして Sun など、多くのメーカーが「System V 準拠」の UNIX を作っていました。


特に Sun の System V 陣営への参加は決定的でした。

Sun は、もともと最初の BSD を作った学生たちが起業した会社で、BSD を搭載したワークステーションを作り続けてきた会社です。


その Sun が技術協力することで、 SystemV には BSD 由来の機能も数多く搭載され、それまでの「本家対元祖」のような戦いに終止符が打たれるのです。




1990年前後は、上に書いたように System V 対 BSD という構図が見られたのですが、90年代後半に入って Linux が勢力を持ち始めると、この構図も有耶無耶になってしまいました。


2大勢力がいがみ合っている間に、横からきて人気をかっさらう…漁夫の利の構図ですね。


でも、実際 Linux は、System V 互換を目指して開発が始まりながらも、最終的には両者のいいとこどり。

趣味で初めてプライドなんてなかったから、節操はないけど使いやすい実装を行いました。


BSD と System V がそれぞれのプライドで互換性が悪かったころには、これがウケた。



今でも、BSD の流れを汲む PC BSD はあります。


FreeBSD、NetBSD、OpenBSD が主な勢力だったのだけど、今では「Mac OS X」が一大勢力かな。

あまり、これを BSD だと思っている人いないのだけど。




▲目次へ ⇒この記事のURL

同じテーマの日記(最近の一覧)

今日は何の日

関連ページ

タネンバウム教授(1944) ストールマン(1953) 誕生日【日記 17/03/16】

別年同日の日記

03年 セイジョウキヨ エイエンナレ

04年 泥沼…

05年 引越し時期

15年 10年目点検

15年 ガルボとジョイポリス

16年 クララ・ロックモア 誕生日(1911)


名前 内容


戻る
トップページへ

-- share --

10000

-- follow --




- Reverse Link -