目次
前のページ
2025-07-02 akamai の CDN
2025-08-04 昔のプログラマ
2025-09-19 続・プログラム中級者からの質問
2026-03-23 Oh!X 令和版
2026-05-16 展示会
2026-06-29 ホットリセット・コールドリセット
2026-07-26 花王のゲーム
2026-08-04 寝落ち
2026-10-08 うろ覚えだけど
2026-10-13 LINEのオープンチャットで発言禁止措置を受けた
2026-10-25 趣味プログラム
2026-10-30 漢字 ROM
先日、uniqlo のシャツの話題で「akamai」という企業を取り上げた。
話の腰が折れるので、この企業が提供しているサービスについては割愛した。
しかし、面白い技術なので知ってほしい、と思って説明しているページを探してみたものの、的確に書かれたものが見当たらない。
CDN という仕組みを提供している、ということと、その技術について非常に「ふわっと」書かれたページは多い。
ふわっと、というのは書いている人も理解していない、ということだ。
こんなに面白い技術、是非知ってほしいのだけど、書かれたページがないのか…
となれば、自分で書くしかあるまい。
最初に断っておくが、僕自身は akamai の中の人でも何でもないし、ページ提供者側として利用したこともない。
以前にどこかで聞いて技術概要は知っているが、細かな部分は間違っているかもしれない。
また、以前の Akamai は「CDNの企業」だったのだが、現在はセキュリティなども含めたサーバ運用全般を扱っているようだ。
それに伴い、CDN もどんどん新技術が導入されているようだが、僕はそうした細かなことは知らない。
これから書く話は「基本的な」ものに過ぎない。
現状を正しく表しているものではない、という反面、まだ単純だからわかりやすくもあると思う。
まず、CDN について。Content Delivery Network の略で、コンテンツを届けるネットワーク、という意味になる。
コンテンツという概念はまた微妙なものなのだが、この文脈の中では「WEB ページで提供されるデータ」だと思ってもらってよい。
通常は通信して取得するもので、わざわざ「届けて」もらう必要はないものだ。
ところで、インターネットは世界中と通信できる。
たとえば、海外旅行に行きたくてアフリカの観光サイトを見たとしよう。
もちろん通信できる。でも、ページが表示されるまでに時間がかかる。遅い。
理由は、遠いからだ。世界中と通信できると言っても、遠ければ時間はかかる。
通信は電気で行われていて、光の速さ…とよくいわれるが、途中で何度も中継が入る。
中継点ではコンピューターが処理していて、処理速度は光の速度よりずっと遅い。
距離に応じて中継点も増えるので、遠くへの通信は遅くなるのだ。
CDN は、こうした状況を改善する手段だ。
遠くへ通信するから遅いのだ。
ならば、世界中にサーバーを用意し、キャッシュ(データのコピー)を置いておけばよい。
アフリカのサイトを見ようと思った時に、実際にアフリカに接続するのではなく、日本国内から同じデータを取り寄せられる。
つまり、データが世界中にあらかじめ届けられているわけだ。これが CDN 。
…と、akamai や CDN で検索すると、ここまでの話を書いてあるだけのページが非常に多い。
ただ、そのアイディアが簡単に実現できるほど世の中は甘くない。
キャッシュを行おうとすれば、世界中にそのためのサーバが必要だ。誰がそのサーバの設置・維持料金を払うんだ?
すぐにページが取得できる、というのは、ネット利用者にとってはありがたいけど、それだけでは足りないのだ。
ここで、コンテンツ提供側の立場で考えてみよう。
コンテンツ提供者は、サーバを世界に向けて公開する。
公開する意図があってそうしているのだから、できるだけ多くの人に見てもらいたい。
しかし、ここにいくつかの問題がある。
まず、本当に世界中の人からアクセスが来ると、サーバの処理能力が問題となるのだ。
サーバを、強力な処理能力を持つものに交換しなくてはならない。
実際にはそんなに強力なサーバはないので、「負荷分散」という技術を使って、複数台のサーバで処理することになる。
通信速度の問題も付きまとう。
先にアフリカと通信する例を挙げたが、世界中に配信したとしても、遠くから見てもらうのは遅いのだ。
多くの人に見てもらいたいが、大抵の人はページを開いて、3秒待っても表示されなければ見るのを諦めてしまう。
サーバの処理能力をいくら上げたとしても、距離の問題はいかんともしがたい。
もう一つ、通信料金の問題がある。
個人でネットプロバイダと契約していると、定額制ということが多いのだが、インターネットというのは通信の量によってコストが決まるのだ。(従量制)
つまり、コンテンツ提供側には以下の問題がある
・サーバ増強コストの問題
・「距離」による通信速度の問題
・通信量に応じたコストの問題
このうち、特に距離の問題なんて解決するのが難しくて、世界中にホストを設置しなくてはならない。
これは同時に回線契約の数も増やさないといけないわけで、かかるコストは簡単には見通せない。青天井と言ってよいだろう。
CDN はこれを解決できる。
先に書いたが、世界の各所にキャッシュサーバを置いて、誰かがデータを必要とした際に、近いところからデータを得ようというものだからだ。
自分で設置しようと思えばコストは青天井でも、誰かの設置したものを借りるのであれば、現実的な金額に収まる。
つまり、少なくともコンテンツ提供側は、 akamai と契約してお金を払うだけの価値があるのだ。
ネットには、コンテンツ提供者がいて、それを見たい閲覧者がいる。
しかし、akamai を理解するには、もう一人の登場人物が必要だ。一番重要な役割を担っている。
それが、接続事業者、ネットプロバイダだ。
我々は、ネットに接続するときにネットプロバイダのサービスを使う。
勘違いされやすいのだけど、「回線業者」とは違う。回線業者は NTT など物理的な回線を提供する会社だ。
ネットプロバイダは、この回線を利用して、インターネットに接続するサービスを提供する。
ケーブルテレビのインターネットサービスなど、回線とプロバイダ事業を一体化して提供している場合もある。
携帯電話なども、docomo は回線業者であり、ネットプロバイダでもある。
でも、docomo 回線を借りてネットプロバイダ事業を行う、MVNO 業者のようなところもある。
ともかく、ネットプロバイダはインターネットへの接続サービスを行うのだが、ここで「ネットプロバイダ内」にもネットワークがある。
同じネットプロバイダを利用する顧客は、まずネットプロバイダの小さなネットワークに入り、そこからインターネットに接続しているのだ。
こうした、小さなネットワークが相互接続したもの、というのが「インターネット」のそもそもの語源だ。
さて、ネットプロバイダは通常月額料金を徴収して顧客にネット接続を提供している。
しかし、プロバイダのネットワークの外側にある「インターネット」への接続は、月額固定などではない。
データ通信量に応じて決まる、従量制だ。
つまり、ネットプロバイダにとっては、「社内の」ネットワークへのアクセスで完結してくれればありがたい。
インターネットへの接続コストが減るからだ。
でも、顧客はインターネットに接続したいからこそ、ネットプロバイダと契約している。
ここで akamai の登場だ。
akamai は、ネットプロバイダの「社内ネットワークに」キャッシュサーバを設置する。
すると、世界のどこかにあるはずのコンテンツが、社内にあることになるのだ。
外部へのアクセスが生じないので、ネットプロバイダのコストは減る。
これには副次的な効果もある。
ネットワークは、通信するデータ量が増えれば、より「太い」線が必要になる。
そして、太い線は月額の「基本料」が高い。先ほど従量課金と書いたが、基本料はそれとは別に必ず発生するものだ。
顧客が増え、通信量が増えれば、より太い線が必要になる。
しかし、キャッシュサーバの設置で外部への通信が行われないなら、太い線の契約をしないでも済む。
最初に、akamai のサーバの設置・維持費用は誰が出すのか? と問いかけた。
この答えがここにある。
ネットプロバイダは、社内にサーバを設置することに意味があるので、設置場所を提供し、お金を払ってでも設置を依頼する。
先に書いたように、お金はコンテンツ提供側からももらっているので、設置費用は「設置しない場合の回線利用コスト」よりも安い程度に設定できる。
利用者、コンテンツ提供者、ネットプロバイダ。
ここで、3者の思惑が一致し、キャッシュサーバーを設置すればだれもが幸せになれる状態が出来上がる。
しかし、まだ問題はあるのだ。これを「どうやって」技術的に実現するのだろう?
いちばん簡単な方法は、「すべての」 URL に対するアクセスを受け取るサーバーを作ることだ。
ネットプロバイダ内部からのアクセスを、すべて一旦キャッシュサーバーが受け取る。
キャッシュがあればそれを返し、なければ実際のコンテンツを取りに行く。取得した内容はキャッシュする。
じつは、これは「キャッシュプロクシ」と呼ばれる手法で、akamai 以前から実際に存在した。
そして、特定の目的では非常に有用だったが、一般的に使うには問題の多い方法でもあった。
まず、「プロクシ」について説明しよう。
キャッシュプロクシは、プロクシにキャッシュの機能を後付けしたものだからだ。
そもそもは proxy とは「代理人」の意味だ。
会社など、セキュリティを守る目的で外部のネットワークに直接接続したくない場合に、基本的には全員インターネットへのアクセスを禁止する。
そのうえで、「特定のサーバ」にだけアクセス可能な権限を与え、外部にアクセスしたい場合はそのサーバを経由するようにする。
つまり、外部へのアクセスは、すべて「代理人」に依頼するわけだ。
この特定サーバの事を、「プロクシサーバ」と呼ぶ。
これはもともとアクセスを制限するためのものだ。
全ての通信はプロクシを経由する。だから、ここにキャッシュを入れたり、様々な便利機能を入れることもできる。
その反面、プロクシを使用するといろいろと制限がある。
たとえば、動画を見ることはできないかもしれない。ネットゲームは遊べないかもしれない。
というより、もともとプロクシは前提として「ネット利用禁止」の時に使うのだ。それでも使いたい機能だけを提供する。
会社ならそうした制限はむしろ有用かもしれないが、ネットアクセスを提供することが仕事の「ネットプロバイダ」としては、この手段を使うわけには行かない。
ところで、ネットではプロクシの事を「串」という隠語で呼ぶことがある。
隠語を使う、というのは、悪いことに使う人も多いためだ。
プロクシは「代理人」なので、相手に自分の正体を明かさないでアクセスすることができる…場合がある。プロクシの設定にもよるけど。
何かの理由があって、存在を隠したい人にはとても良い仕組みだ。だから隠語になってしまうのだが。
そういう、何らかの事情がある人には、あえて制限は受け入れたうえで、メリットを得る必要があるのだ。
つまりはメリットとデメリットを秤にかけて、利用者が使うかどうかを選ばないといけない。
決して「自動で使われる」ものであってはならない。
一応、Windows の Chrome や Edge 等でもプロクシの利用は可能だ。
でも、いったいどれだけの人が設定方法を知っているだろう? 普通は使わないで良いものなのだ。
キャッシュサーバーを使うと便利だ、という環境を作りだせたとして、じゃぁ利用するのにはプロクシの設定をお願いね、というのではダメなのだ。
そんな状況では誰も利用しない。
そこで、akamai は巧妙な方法を編み出した。DNS を利用するのだ。
インターネット上のサーバには、IP アドレスが割り振られている。インターネット上の住所、と言われることが多い。
通信を行うときは、「必ず」相手の IP アドレスが必要となる。
でも、URL には IP アドレスは含まれていない。
どうなっているのかというと、「ドメイン名」を元に IP アドレスを調べる方法があるのだ。
その仕組みが DNS だ。
たとえば当ページは www.wizforest.com というドメイン名を使用している。
今ここをアクセスしている人は、DNS を使用してこのドメイン名を IP アドレスに変換し、アクセスしているのだ。
ところで、この DNS というデータベースが、データの登録方法に面白いやりかたを取っている。
話をするうえで必要なので、長くなるが説明しよう。
データベースというのは、普通はデータを1カ所に集約したものだ。
このページの例でいえば、www.wizforest.com 、というドメインに対しての IP アドレスを、どこかに登録しておけばよい。
そうすれば、すぐにドメインから IP アドレスを知ることができる。
実際、ドメインから IP アドレスへの変換は、初期のころは1つのデータベースで行われていたのだ。
たった1つのファイルにすべてのデータを入れ、ネットワークに接続するコンピューターは、そのファイルを取得して使用していた。
(この頃の話は過去に書いている)
しかし、ネット上のホストが増えるに従い、この方法は破綻した。
ホストが増えたり減ったりするたびにデータを変更しなくてはならないし、何よりも「世界中の」コンピューターに、最新情報を即座に届けないといけない。
それはもう無理だった。その状況を打開するために考えられたのが、DNS という「分散データベース」だ。
まず、データベースは組織ごとに準備する。
このページでいえば wizforest.com が「組織」であり、そこに www というコンピューターが公開されている、という形式になる。
他にも、メールサーバとか、DNS サーバとか、いろいろなコンピューターが組織内にある。
今、組織内のコンピューターとして「DNS サーバ」と書いた。
僕は自分の DNS サーバに、これら「組織内のサーバ」のデータを記入する。
そして、さらに上の組織… .com の DNS サーバに対して、wizfores.com の DNS サーバアドレスを通達しておく。
これで準備は完了。
誰かが www.wizforest.com にアクセスしたいと思ったら、まず、「その人の端末」に登録された DNS サーバに問い合わせを行う。
これは、その端末から一番近くにある DNS サーバのはずだ。
しかし、すぐ近くの DNS サーバが、世界中のコンピューター全てを知っていることなどまずないだろう。
でも、有名な .com の DNS サーバなら知っている。
そこに問い合わせると、www.wizforest.com は知らなくても、wizforest.com の DNS サーバなら知っている、と返答がある。
そして、wizforest.com の DNS サーバに問い合わせると、www.wizforest.com の IP アドレスが得られる。
DNS サーバはこうした分散管理により、非常に巨大なデータベースを作り上げている。
ところで、最初に問い合わせたサーバが「偶然知っている」こともあり得る。
僕のサイトなんかはともかく、google.com とか youtube.com の場合、問い合わせる人が非常に多い。
そうした問い合わせのたびにいちいち上のような長い手順は踏んでいられない。
DNS サーバは、一度問い合わせた内容はしばらく覚えておいて、次の問い合わせにはすぐ答えられる、という機能も持っている。
ところで、分散管理している、ということは、全体の整合性は誰も管理していない、ということでもある。
これは DNS の重大なセキュリティ―ホールだ。
上に、www.wizforest.com を問い合わせる際の、問い合わせのリレーを書いた。
最終的には、wizforest.com まで問い合わせが来て、正しい IP アドレスを得られる。
じゃぁ、最初に尋ねるネットプロバイダ内の DNS サーバが、聞かれたとたんに嘘の IP アドレスを教えたらどうなるだろう?
「問い合わせた内容は覚えておく」という機能があるので、すぐに IP アドレスを教えてもらえることはある。
だから、それが嘘かどうかなんて気にもせず、本当のアドレスだと信じてしまう。
これは「DNS ポイズニング」と呼ばれる、 DNS の仕組み自体が持つセキュリティホールだ。
(プログラムのバグなどによるセキュリティホールではなく、基本的な仕様自体に欠陥がある)
DNS サーバは「多数のサーバに問い合わせて」IP アドレスを調べるので、その経路のどこか1カ所でもハックされ、嘘を教えるようになっていたら、その問い合わせに関連したすべてのサーバは嘘を信じてしまうのだ。
誰かがどこかの DNS サーバをハッキングして、偽サイトにユーザーを誘導してクレジットカード番号を盗む…なんて犯罪が実際にある。
でも、この仕組みを使って、本物のサイトではなく「キャッシュサーバー」にアクセスさせてしまえば?
ここで、DNS ポイズニングのターゲットは、ネットプロバイダの利用者限定だ。
利用者が外部のサイトを見ようとしたときに、DNS がネットプロバイダ内に設置されたキャッシュサーバの IP アドレスを教える。
「偽のサイト」を教えているのだから DNS ポイズニングなのだが、そのサイトはキャッシュされたもので、寸分たがわず元のサイトと同じだ。
何の被害もないし、むしろメリットだらけなのだ。
セキュリティホールを使うのは褒められたことではないのだが、これは「良い使い方」だ。
akamai のシステム概要としては、以上のようなものだ。
まとめると、キャッシュにより、
・利用者は通信速度が上がる
・コンテンツ提供者は、サーバの負荷が下がる
・ネットプロバイダは回線利用料が下がる
特に、ネットプロバイダが回線利用料を下げるためには「自社にキャッシュサーバを置く」必要があるので、設置場所を提供してくれる。
また、この仕組みを維持するために、DNS という既存の仕組みを巧妙に利用している。
新しい技術ではないので、すぐに使い始めることができる。
誰もが得をする技術で、そのために誰もが喜んでお金を払う。
技術的にも経済的にもよくできている。
こんなシステムを設計したことが、すごいと思う。
おまけ
いい加減話が長いので終わりたいのだが、途中で DNS ポイズニングの話を書いたので、おまけ。
不安にさせたままじゃ申し訳ないからね。
フィッシング詐欺に注意、という呼びかけを見たことはあるだろうか?
メールなどのリンクで偽サイトに誘導されるので、そういうリンクを使わないことが対策とされる。
必要であれば、自分でサイトの URL をブックマークして置いたり、検索したりして入れば大丈夫、と…
でも、DNS ポイズニングは「正しい URL に対して」偽の IP アドレスを教える手法なので、上に書いた方法では対策できない。
DNS ポイズニングの対策はちゃんと用意されていて、誰でも簡単に利用できる。
DNS は普通自動設定されるが、手動で 8.8.8.8 と 8.8.4.4 という二つのアドレスを設定すると良い。
これは google が行っているサービスで、ややこしいので技術説明はしないが、DNS ポイズニングを防いでくれる。
google DNS が公開されて初期のころは、DNS ポイズニングを防いでしまうため、akamai の CDN が使えなくなる、という問題があった。
しかし、現在は akamai と google で協力しており、google DNS でも問題なく CDN が使用できるようになっている。
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
かなりどうでもよい話です。
度々書いているが、町内会の仕事をやっている。
基本的には頼まれて仕方なく。
でも、任期を超えても積極的にやっているので、周囲から見れば「好きでやっている」部類だろう。
まぁ、それはいいんだ。
基本的には町内会の仕事は任期のある物で、頻繁に人が入れ替わる。
そして、今年一緒に仕事しているのは、80越えのおばあちゃんだ。
僕が「ご出生お祝い会」や「子育てサロン」の仕事をしているので、女性の方が適役だろう、という判断。
やっているのは福祉関連で、敬老の日にお祝いの品を配布するのも大切な仕事だ。
回覧板でアンケートを配布し、後期高齢者にあたる 75歳以上の人で申請があった場合はお祝の品を配布する。
この集計作業はほぼ僕が行っているのだが、人がやるのでミスもある。
ミスがあって配布漏れ、とかなるとお祝にケチが付くので、集計データをエクセルにいれたら、別の人の目も入れてダブルチェックを行う。
ここで、一緒に仕事をしている方に手伝ってもらった。
ここまでが前置き。
エクセルとか、最近のパソコンわからないわー、というおばあちゃん。
まぁ普通の反応なのだけど、「最近のパソコン」というのがミソ。
昔フォートランのプログラム作ってたらしいのだ。
キーパンチャーなどではなく、プログラマ。
以前パソコンでもプログラムしようと思って Visual Basic をやってみたのだけど、フォートランと違い過ぎて挫折したらしい。
エクセルはもっと簡単ですよー、なんて話をしながら、せっかくなので昔はなんのマシンを使っていたのか訊いてみた。
CDC 160A らしい。あまり知らない機械。
「もう、古い機械よ。最近は 6500 とか、そういうの使ってるんじゃないかしら」
と言われたのだが、6500 は 1960年代の中ごろに発売され、80年代までサポートされていた機械だ。
さすがにもう使われていないと思う。
6000シリーズなら、今年の春に調べていたので、少しわかる。
いや、話としてはこれだけで終わりです。
「自分の生まれる前の機械」として興味を持って資料を漁っていた 6500 を、その時代に実際使っていた人が身近に居た、というだけ。
(6500 を使ってたわけではないけど、160A はその頃の廉価機)
町内会のご老人方、話聞くと面白いんだよね。
国鉄時代に鉄道員やってて駅長まで務めた人とか、携帯電話黎明期にシステム設計して料金体系定めた人とかいる。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
以前、知人がプログラム勉強中、という話を書いた。
これが、すごい勢いで上達中。
半年前には「ポインタって何?」みたいなレベルだったのが、昔の雑誌の BASIC のプログラムを C 言語に変換して移植する、くらいのことはできるようになった。
といっても、数か月かかって1本のゲームを移植した、というレベルだけど。
そして、その最中に何度も質問されたのだけど、どんどん質問が具体的になる。
面白かったので、最近受けた質問を書いてみよう。
▼教科書に載っているプログラムと、ゲームの違いについて
言語の教科書に載っているようなプログラムは、1本道で別の処理が間に挟まることはない。
たとえば、繰り返し計算が必要な場合、for 文などでループして一気に計算してしまう。
でも、ゲームだと、1回の処理では少しづつ計算して、すべてのキャラについてそれを繰り返す。
こういうことは教科書には載ってないけど、いったいどこで学んだの?
僕の答え。
「言語の教科書」には載ってないけど、ゲーム作りの教科書みたいな本には書いてある。
また、昔のパソコン少年の多くが呼んでいた雑誌、「ベーマガ」こと、マイコン BASIC マガジンには、ゲーム作りのコツが書かれた連載が繰り返し掲載されていた。
コンピューターは本来計算の道具で、計算をするプログラムを作るのであれば、一気に計算して結果を出せばよい。
普通はこちらの使い方になるので、教科書もこのやり方で書かれている。
でも、ゲームに限らず、リアルタイムでコンピューターを使う用途…たとえば家電品なんかのプログラムは、一気に計算しないで、長い時間繰り返し少しづつ処理を繰り返している。
例えば洗濯機は、洗濯中でも蓋が明けられたら危険がないように緊急停止しないといけない。
洗濯機だから洗濯に専念する、というわけには行かず、少しづついろいろな処理を同時に行っている。
ゲームもそうしたプログラムの作り方の一種。
微小時間に区切って、その時間の中で必要な計算だけをするので、「時間で微分している」ともいえる。
そして、これを何回も処理して、実際の時間の中で連続させることで「積分」して、本来得たかった結果を得る。
▼ゲームのキャラ制御について
元の移植ゲームは、ずっと同じ内容を繰り返しているようなゲームだった。
構造がわかってきたので改造して、ボスを出そうとしたらしい。
ボスは最後だけしか出てこないが、メインループの中で処理はしないといけない。
ここで、ボスがいるかどうかをフラグに持っていて、「ボス登場時だけ、ボスを動かす関数を呼ぶ」という処理にしたらしい。
ここで疑問。
ゲーム中のほとんどの時間ボスは出てないのだが、毎回ループの中でフラグをチェックしているのが無駄な気がする。
こういうやり方しかないの?
また、新しいボスを1体出そうとしただけで、その「出現」管理フラグだけでなく、ボスの位置や現在の状態など、管理しないといけない変数が大量に増えた。
普通のゲームだと、いろいろな種類の敵が出るのが普通だけど、こういうデータを全部管理している物なの?
僕の答え。
この疑問を持つようになったら、もう C 言語ではなくて C++ に進むタイミング(笑)
C++ では、変数とプログラムを強く結びつけることで、変数管理の手間を感じにくいようにしている。
また、フラグをもって処理を制御するのではなく、以下のような方法もある。
まず、ゲーム中の各種の処理の関数は「呼び出すだけ」で良いようにしておく。
必要な時は、毎ループ呼び出される。引数などは持たない。
(もしくは、すべての関数で引数の持ち方を共通化しておく)
ポインタはデータの入っている配列などを示すもの、と思われがちだが、プログラムもメモリにあるのでポインタに入れることができる。
(と話したら、この知人はそのことは知っていた。ただ、そんなこともできる、というだけで使い方の具体例はわからないようだった)
例えばポインタの配列を用意して、最初は全部 0 を入れておく。
新しく処理したい敵などが出現した場合、この配列に、敵の処理関数のポインタを入れる。
0 の所を探して入れるようにする。
そして、敵が撃破されたり退場したりした場合、配列を 0 に戻す。
あとは、メインループの中で、配列の値を取り出して、0 なら無視、そうでなければ関数として呼び出す。
これで、フラグなしで敵の関数呼び出しを制御できる。
実際にはもう少し工夫しないと使いにくいのだけど、これと C++ のデータ領域の持ち方を組み合わせてやると、非常にゲームを作りやすくなる。
最初にリンクした半年前の質問と比べて、質問のレベルが段違いなのがお分かりいただけるだろうか。
彼が移植したゲームは、BASIC の移植なので「テキスト文字」の組み合わせで作られている、1980年代っぽさが強いゲームだ。
でも、内部処理については十分な勉強になったようだ。
次は、スプライトライブラリを使ってもう少しグラフィカルなゲームを作りたいらしい。
自分で手を動かして、十分悩んでから質問してくるので、その質問がいつも鋭い。物事の核心を突いてくるのだ。
彼から質問されて答えるのが、結構楽しみだ。
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
3連休だった週末の間に、Oh!X 令和版が届いた。
あ、そうか。もう発売だったのか。
予約したの、たしか1年半くらい前だったので忘れてた。
シャープが 1987 年に X68000 というコンピューターを発売する。
それ以前から、シャープには X1 という 8bit コンピューターのシリーズがあった。
8bit のころは、コンピューターはまだ全く新しいホビー。1つの会社の中でもどこが扱うか決まっておらず、部署ごとに互換性のない機械を別々に作っていたりするのが当たり前。
NEC は LSI 部門が TK-80 を作ったことから PC-8801 に至る流れがあり、子会社のホームエレクトロニクスは PC-6001 のシリーズを作り、コンピューター部門は 16bit の PC-9801 を作っていた。
シャープも、MZ-80 から始まる MZ シリーズを電子機器事業部が作っていたが、パソコンの出力はテレビなのだからと、テレビ部門が画像機能を強化した X1 シリーズを作り出す。
そして、X1 シリーズの「 16bit 版」が X68000 だ。いきなり数字が大きくなったが、68000 というのは当時「ホビー用の最高峰」と目されていた CPU の型番で、すごい CPU を搭載しているとのアピールだ。
以降、X68000 は長いので X68k と表記する。k はキロで 1000 の意味だ。
この X68k シリーズ、僕は所有していたし大好きだった。人生を方向づけた、と言っても過言ではない。
でも、世間的には「売れなかったマイナー機種」に過ぎない。
当時、各社から出ているコンピューターは互換性がなかったので、「会社ごとのパソコン専門誌」が発売されていた。
シャープの専門誌は Oh!MZ だったのだが、X68k の発売を機に、Oh!X と名前が変わる。
MZ にも 16bit 機は発売されたのだが、ホビー用ではなく仕事用の位置づけだった。
専門誌を購入する個人は「ホビー」を求めているので、誌名も MZ から X に変わったのだ。
そして、この Oh!X は他の機種向け専門誌と大きく違う編集方針だった。
なんと、記事の多くは X68k とは関係がないのだ。
なにせ、マイナーコンピューターでソフトがないのだから、ソフトレビューなどで記事を埋められない。
記事の多くは、ホビー向けとしてプログラムを自作する人のための、アルゴリズム解説だった。
グラフィック特集、ゲーム特集なんかは人気があったように思う。同じ内容の特集でも年に一度くらいは載せていたと思うが、少しづつ切り口が違う。
グラフィック特集としても、画像フィルタの作り方のような解説もあれば、レイトレーシングのアルゴリズム解説、プリントアウトのためのプリンタ制御方法、物理演算エンジンの考え方、などなど。
ゲーム特集だって、初歩的なゲームの作り方から、乱数の使いどころや、シューティングゲーム、RPG、カード(トランプゲーム)、3D、などなど。
それはもう、プログラムしない人には面白くない内容なのだ。そして僕はプログラムが趣味だったので、めっぽう好きだった。
しかし、X68k は先に書いたようにマイナーパソコンで、「後継機」と呼べるようなものがなかった。
クロックアップしただけ、CPU を次世代に乗せ換えただけ、の機械はあったが、全体設計が変わらないため、CPU が速くなっても別の部分が足を引っ張る感じで、驚くような性能にはならない。
後継機がないままシャープはオリジナルのパソコン事業から撤退し、IBM 互換機を作り始めた。
Oh!X も休刊となった。
今回の Oh!X 令和版は、3回目の復刊。
1回目は買った。単に X68k を懐かしみ、古い機械をメンテナンスして使い続けるような「後ろ向きな」記事が多かった。
これで幻滅してしまい、2回目の復刊は買わなかった。
2016 年…もう10年も前だ。「ミニファミコン」が発売された。
以前はある程度性能のある PC でないとできなかった「エミュレーション」が、おもちゃのような CPU でもできるようになり、小型化したファミコンのケースに内蔵ソフトを入れて販売したものだ。
これが大人気で、メガドラや PC エンジン、プレステなどの「公式エミュレーション機」が発売される。
そして、その流れで X68k のエミュレータが企画される。X68000 Z という名前だった。
発売は2年前。僕も購入し、日記に書いている。
その半年ほど後に、Oh!X が復刊する、という話が出てきた。
まだ内容は何も決まっていないのに、アマゾンが予約を始めたので、購入することに決めた。
…と、前振りが長いのだが、1年半前に予約した雑誌が、数日前に届いたのだ。
ハッキリ言って、注文したのも忘れていたレベルだよ。
購入時にしばらく遊んでいた X68kZ も、片付けてしまった。
付属ソフトとして X68kZ 用のゲームがついているのだが、まだ遊んでいない。
本誌の内容を読んでみた。
第一特集が AI の話だった。X68k と一切関係ない。素晴らしい。
大ボリュームなのでまだ詳細読んでおらず、流し読みしただけ。
昨今、生成 AI はブームになっているが、ちゃんと理解している人は少ない。
勘違いしたまま誤信している人も多いので、自分で解説記事書いたものかどうか…としばらくもやもやしていた時期があるのだが、基礎的な部分、歴史的な部分も含めてしっかり書いてある。
うん。素晴らしい。AI について興味がある人は、Oh!X 令和版を買って読むべきだ。
(受注生産なので、すでにプレミア価格付き始めているけど)
ただ、先日 元Twitter で見た限りでは、X68kZ 関連の記事を期待していたので、AI 関連いらない、と言っている人もいた。
まぁ、専門誌だと思って購入したのであれば、そうなるよね。
僕としては、こうした技術解説こそ Oh!X らしいと思ってしまうのだけど。
第二特集が、その X68kZ 。これがきっかけで復刊したのだから、当然扱わないとね。
内容は X68kZ をどう活用するか、という内容で、今更 X68k の開発環境を整えてプログラムするような話。
…いや、僕には今更だな。あまり興味ない。
いまからプログラムをしたい人は、今時の環境を学習したほうが良い。
DoGA CGA コンテストの軌跡が書かれたページもあった。
DoGA とは、もともと大阪大学と京都大学のマイコンクラブが共同で始めた「コンピューターアニメのための」プロジェクトだった。その成果発表場として、Oh!X に連載を持っていた。
そして、X68k 用の「3D CG アニメツール」が作られたときは、Oh!X の付録として配布された。
ただ、勘違いしてはいけないのは、DoGA は Oh!X とは独立した組織だし、X68k 以外のコンピューター用にもツールを開発していた。CGA コンテストも、機種もツールも問わない。
CGA コンテストは、1990 年代にはあまりにも無謀な夢だった「個人でアニメを作成」を後押しするためのものだった。
アニメは大量の絵を描く必要があり、個人で作ることは無謀、と思われていた。
それを、コンピューターのパワーでどうにかできるのではないか、というのが DoGA の考えだった。
このコンテスト、2023年の第32回で終了したそうだ。知らなかった。まだ続いているのだと思っていた。
終了理由は、コンテストの設立目的が果たせたから。
今は一人でアニメ作成するクリエイターが、それなりにいる。
質を高める目的で競い合わせる必要はない、ということだろう。
新海誠監督がまだ無名だった頃にDoGA CGA コンテストで受賞していることは有名だ。
付属 DVD に全受賞作のダイジェストが入っているらしいので、今度見てみよう。
とにかく分厚いし、X68kZ 用のゲームの SD カードと、DVD-ROM が付録になっている。大ボリュームだ。
一気に見る時間はないので、少しづつ楽しみたいと思う。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
仕事をもらっている会社が、東京ビッグサイトで行われる展示会にブースを出すことになり、手伝いを依頼された。
普段僕がプログラムを作っているものを展示するわけで、参加させていただいた。
教育関係の仕事であれば何でも展示可能な展示会だ。
僕はここ数年、教育関連のサービスのプログラムを手伝っている。
基本的には3日間ブースに詰めていて、興味を持ってくれた方に商品を説明する。
普段の仕事とは全く違うが、文化祭のようでなかなか楽しい。
あと、すでに商品を使った経験のある人から、学生の時使ってました、なんて言われるのは嬉しい。
休憩時間に他のブースを回るのも楽しかった。
結構、教育とは関係なさそうな展示もある。
しかし、説明を聞いてみると、うまい具合に関係しているのだ。
たとえば、味噌製造業が参加していた。
まぁ、うちの子供が保育園の時も、食育教育として、みそづくり体験とかやってたし、そういうものかな…と思い、少し話を聞いてみた。
子供の食育だけでなく、小学生くらいでも家庭科の一環としてやったり、高校生でも生物による発酵として授業をやったり、老人ホームで体験教室をやったり、いろいろあるのだそうだ。
「発行と腐敗の違い」を教えるために、2つ作ってわざと片方腐らせたりすることもあるらしい。みそメーカーとしては少し残念なので、できればやりたくないそうだが。
なるほどー、と感心していると、そのメーカーさんのある九州は麦みそ文化の地域で、麦みそなら夏場は1か月で味噌になるという。関東では豆味噌で3か月程度、愛知の赤みそなら3年、と聞いた。
保育園で作っていたのは豆味噌で、12月ごろ仕込んで、卒業前の3月には給食に出していた。
冬に作るのは、その方が腐敗する可能性が低いため。
でも、発酵が十分でなく、豆の粒がまだ残っていたな。夏場で3か月、冬なら半年は置かないといけなかったのか。
麦みそは発酵が速いので、夏休みの宿題にみそづくりの観察日記とか書けるそうだ。これは、地の利を生かして他のメーカーではできない差別化を図れているのだ。素晴らしい。
JAMSTEC もブースを出していた。
僕の日記には以前よく JAMSTEC が出てきていたが、妻の友達が JAMSTEC の関連会社に勤めていて、公開日に見に行ったり、非売品のグッズをもらったりしていたためだ。
今回の展示会では JAMSTEC はまったく関連無さそうに思えたが、最近新しい部署が作られ、教育関連に乗り出したのだという。
以前、テレビ番組で見たことがあった「電子黒板」が、メーカーのブースで展示されていた。
通常、電子黒板というと大型モニターの事だ。
ただし、モニターに最初からソフトウェアが内蔵されいて、タッチペンで文字や線を描くことができる。
何らかの方法でデータを渡せば、スライドのように表示することもできるし、動画を出すこともできる。
実際には、黒板の代わりにいきなり電子黒板に変わる、ということはあまりないようで、電子黒板が教室に新しく配置されることになる。
…のだが、黒板もあるし電子黒板もある、という状態では狭くて使いにくいそうなのだ。
そこで、黒板メーカーが新しい「電子黒板」に乗り出した。
黒板に直接投影し、電子黒板相当のことができる「プロジェクター」を開発したのだ。
最初から用途を絞り込んでいるため、普通のプロジェクターと違って、黒板付近の天井に設置する。
真上から投影する形になるため、先生が近づいても影ができない。
また、黒板に投影しているので、画像の投影と黒板の文字を共存できる。
既存の黒板でも使えるが、よりプロジェクター投影に向いている黒板もセットで開発している。
「新しい商品に軸足を移す」とかではなく、従来の黒板も一緒に売り込んでいるのだ。
これ、テレビで見たときに発想のすごさに驚いていたので、実際にどの程度まで近づいても影ができないのか、など知りたかった。
まぁ、さすがに黒板に手を使づけて文字を書こうとすれば影になる。でも、前に立って話をするレベルなら影はない。通常のプロジェクターだと、前に立てば影になるので、これだけでも十分すごい。
感心しながら見てたら、対応してくれた人が僕が見たテレビ番組をちゃんと覚えてくれていた。
というよりも、「2年前に放映されたその番組を見て、この会社に就職したんですよ」とのこと。
番組見てすごいと感じる人、僕だけでなく、ちゃんといたんだなぁ。
最近の新商品として、普通の電子黒板…薄型テレビも開発しているらしいのだが、こちらはホワイトボードマーカーに画面に文字が書ける。
「タッチペンで電子的に書く」などではなく、物理的にアナログの文字が書けることにこだわりがあるらしい。
オルゴールの缶詰、というものを売っているメーカーがあった。
缶を開けると中にムーブメントが入っている。
僕自身がオルゴール好きなので話を聞いてみた。これ、缶が共鳴箱になって音が大きく聞こえたりしますか?
残念ながらそうではないという。ムーブメントのみなので音は小さく、しっかりした木のテーブルなどの上に置くと共鳴して大きくなる。
でも、缶は小さいし金属板も薄いので、共鳴するほどにはならないらしい。
共鳴させるような缶を開発してしまうと、コストがかかり過ぎてしまいますから、とのこと。
缶のラベルも請け負えるし、少し高くなるが曲も自由に作れるそうだ。
学校の卒業記念品として校歌のオルゴールを作り、校章デザインの缶に入れる、などするようだ。
(この話、家に帰ってから家族にしたところ、長女が「そういう記念品の方がいいなぁ」と言っていた。
長女は中学卒業時に学校の銘が入った「モバイルバッテリー」をもらったのだが、使っているうちに膨れて、記念品なのに捨てざるを得なかった。)
自分が出店側に回った、というのも面白い体験だったのですが、いろいろな考え方の商品があることが楽しめました。
もちろん、GIGA スクール教育向けなどで Lenovo や Apple 、Google for Educations 等のブースもありましたが、感想としては「普通」としか言いようがないです。大会社は、すでに知っていることを展示しているだけであまり面白くはない。
以降、翌日追記
展示会の各社ブースで貰ったグッズなど。
▼ソフトバンクが、ミルキーの小箱を配布していた。
配布時は、ぺこちゃんのパッケージが見えるように配布していたのだが、裏返すと「お父さん」(白い犬のイラスト)だった。ソフトバンクらしい。
これはそれだけで、特に面白いことはない。
▼新学社が、「うちのタマ知りませんか?」デザインのバッグを配布していた。
もちろん、バッグの中には宣伝チラシが詰まっている。バッグ自体も、不織布の安物。
しかし、ぼくこのキャラ好きだったんだよね。見てたら「ぜひ」と渡されたのでもらっておいた。
中のチラシによれば、新学社は、「うちのタマ」のキャラを使用した、小学生向けの教材などを作っているらしい。
…と、家で確認していたら、長女に「小学生の時の計算ドリルがタマだったよ」と言われた。
そうか、すでに我が家ではお世話になっていたか。
バッグはかわいいので置いとくけど、薄い安物だし、特に使い道ないかな…
▼アライドテレシス(ネットワーク機器の会社)が、サランラップの短いやつ(22cm)を配布していた。
ノベルティとして外箱が特別な印刷になっているもの。
これが、24ポートのスイッチングハブを模している。
RJ45ポートのサイズなど実寸大のようだし、これくらいのサイズ感ということ?
…と思って検索したところ、そうでも無いようだ。
22cm のサランラップサイズでは、ラックマウントもできなくなってしまうが、実際の機種は普通に 1U サイズ。
ラックマウントの 1U は高さが 44.5mm ほどで、サランラップの箱は、今測ったところでは 40mm ほど。
大体同じ高さだから、ポート部分だけ再現してみた、という感じか。
しかし、スイッチングハブ柄のサランラップ、というのはちょっとおもしろい。
▼プリンストンが、缶ペンケースのようなものを配布していた。
「中にスタイラスペンが入っています」とのこと。
配布するくらいだから、100円ショップで売ってるような静電容量式のペンかな…と思ったら、確認してびっくり。
サクラクレパスと共同開発の、クーピーペンシル型アクティブスタイラスだった。サクラクレパスのショップ価格では、6,600円。
充電して使ってみる。
iPad モードと汎用モードを切り替えられるらしい。自分の Chromebook (ペン対応)で、汎用モードで動作することを確認。
次女にみせたところ、かわいい、とすっかり貰う気でいる。
まずは自分のスマホで試している。…ん? スマホはペン対応ではないが動いている。
ということは、汎用モードというのは、単に静電容量ペンとして動いているだけか。
静電容量ペン、というのはつまり「指先を細くしたもの」に過ぎない。
ただ、静電容量、というのは、「画面と指先の静電気の移動」を確認する仕組みなのだ。細くすると移動の量が減るため、感知しづらくなる。
そのため、100円で売っているようなものは、ある程度ペン先が太い。
細く見える場合でも、透明なディスクなどが付いていて、静電気の移動経路を十分に確保している。
どうやら、このペンの「互換モード」では、ペン先に微弱電流を流すことで、細いペン先でも十分感知できるようにするもの、ということらしい。
細いことで位置指定などは正確にできるようになるが、いわゆる「スタイラスペン」として、筆圧感知や傾き検知をする機能はない。
汎用モード、というのが本当に静電容量だけなのか、あらためて Chromebook を使って確認。
もしかしたら、ペン対応端末の場合、特有の何かを拾って動作を変更したりするかもしれないからね。
…そんなことはなかった。ペン対応の Chromebook でも、静電容量として動作していた。
こちらの WEBページは、WEB で動く簡単なお絵描きツールを提供しているが、デバイスがマウスなのか、ペンなのか、指なのかを自動で検知する。
使用しているペンは、指として検知された。つまり、静電容量としてしか動作しない。
確認したところ、汎用モードはともかく、iPad モードでは Apple pencil の互換品のようにふるまうらしい。
ただし、この場合も筆圧検知や傾き検知はない。
先に「かわいい」と言っていた次女は、我が家で唯一の iPad 所有者。
高校の指定で iPad を使う必要があったので、購入したのだ。
(長女の高校は Chromebook 、長男の入学時は GIGA スクール以前だったが、途中から Windows が必要となった)
長女、すでに Applepencil互換品は持ってるんだよね。筆圧も傾きも検知できるやつ。
そんなわけで、6,600円もする品をもらってきたけど、「かわいい」という以外に使い道がないなぁ…
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
以前書いた、プログラム勉強中の知人から聞かれた話。
以前はC言語の勉強の話が多かったのだが、最近はエミュレータで 8bit 機時代の雑誌プログラムとかを楽しんでいる。
その時代のプログラムって、雑誌に 16進数で書かれたマシン語のゲームとか公開されていた。
それで、質問の際に、「ホットリセットとコールドリセットって何?」という話が出たのだ。
雑誌のプログラムを打ち込んだのだが何か間違いがあったのか暴走してしまい、リセットをかけてメモリ内を覗いたら(エミュレータなのでそういうことができる)、プログラムは消えないで残っていた。
リセットしたのだからメモリの中も消えるのでは? と不思議に思ったらしいのだが、そういえば「ホットリセット」「コールドリセット」という単語が雑誌内に時々出てきたことを思い出し、メモリが消えないことと関係があるのか知りたい、ということだった。
今時のコンピューターは「暴走してリセット」とかあまりやることがないから、リセットボタンを押すことも少ない。
ゲーム機だって、昔は「失敗したらリセット」とか普通だったのだけど、そもそもリセットボタンがついていないものが多くなっている。
だから、リセットについて知らなくても、特に問題は無い。
でも、彼は勉強中だから気になって知りたかった、というだけだ。
ホットリセット・コールドリセットの話をする前に、そもそも「リセット」とはなにか、ということから始めよう。
CPU のなかでは、いくつかの「数値を覚えておく機構」…一般に「レジスタ」と呼ばれる仕組みがある。
レジスタはフリップフロップという回路で作られている。
この回路は、2つの状態を持ち、通電している限り直前の状態を維持しているが、外からの信号によって状態を変えることができる。
これで「0と1」を表現し、沢山並べることで数を保持しているんだ。
さて、「通電している限り」と書いたが、通電「していない」状態から通電するとどうなるだろう?
これは、電気が供給され始めた瞬間の電気的なノイズなどにより最初の状態が決まり、それを維持することになる。
現代的な CPU は、メモリ内にプログラムを保持していて、今どこのメモリのプログラムを実行中かを示す「レジスタ」を持っている。このレジスタは「プログラムカウンタ」、略して PC と呼ばれる。
さて、PC もフリップフロップなのだから、電源を入れると「ランダムな」アドレスを示し、そのアドレスのプログラムを実行し始める。
ランダムなアドレスなのだから、何が書いてあるかわからない。でも、CPU はそれをプログラムだと思って実行するんだ。人間から見ると全く無意味な動作。いわゆる「暴走」状態だ。
ここで、CPU には「リセット」という信号線がある。ここの電圧を変化させて信号を送り込むと、CPU は PC の内容を規定の方法で強制的に「整える」。
規定の方法、というのは、CPU 毎に異なる。0 にする、というのもあるし、一番大きな番地のメモリに書かれた値を入れる、というものもある。
とにかく、CPU ごとに細かな方法は異なるが、PC を整えることができる、という動作は変わらない。
昔のマイコンの中には、電源投入後にリセットスイッチを明示的に押す必要がある物もあった。
でも、大抵は「通電すると、電源が安定するくらいの時間を待った後で、1度だけリセット信号を発信する」という回路と組み合わせる。
これで、電源を入れれば、ROM に書かれた内容が実行され、コンピューターを起動させることができる。
通常は、ROM に入っていて最初に実行されるプログラムは、外部記憶メディアからプログラムをメインメモリに読み込んで実行させるものだ。これを Initial Program Loader (IPL)と呼ぶ。後でまた出てくる。
昔は「外部メディア」は紙パンチテープや磁気カセットテーブだった。または、ROM の BASIC が直接起動される場合もある。
最近ではハードディスクやSSD、フラッシュロムからプログラムを読み込むことになる。
これが起動時の流れだが、起動後でも暴走した際など、リセットボタンを押せば、電源投入時と同じように IPL に処理を移して、最初から動作させることができる。
ここで、リセット信号が「CPU 内の PC レジスタを規定値にする」という役割しかないことに注目。
メモリの内容などはそのままだ。
もともとこの質問は「リセットしてもメモリの中は消えないの?」という疑問だった。今書いたことが答えで、コンピューターのリセットは、CPU 内の PC レジスタをリセットするだけなので、メモリの内容は消えない。
そして、この「周辺回路はすでに稼働している状態でのリセット」のことを、ホットリセットという。周辺はすでにいつでも動ける、「あたたまった」状態にあるリセットだな。
ただ、コンピューターの不調は周辺回路のせい、という場合もある。周辺回路が暴走して一切の信号を受け付けなくなっていたとすると、ホットリセットをかけても信号を受け付けないまま、ということがある。
この場合は、一度電源を切って、周辺回路の暴走状態も解消する必要がある。これをコールドリセットと呼ぶ。
今のコンピューターだと、よほどの問題がない限り、ホットリセットとコールドリセットに違いはない。
どちらでも IPL が起動され、一連の動作の中で周辺機器もすべて「リセット」されるためだ。
しかし、初期のマイコンなどでは、そんな気の利いたプログラムは無かった。周辺機器を使えるようにセットアップするプログラムは自己責任で動かす必要があったため、ホットリセットで「周辺機器は使える状態のまま」であることには、大きな意味があった。
だから言葉を分けていたのだが、今となってはこんな意味は失われているので、言葉の意味が分からなくても特に問題は無い。
これで最初に書いた「ホットリセットとコールドリセット」の説明としては十分なのだが、もう少し書こう。
リセット信号は「CPU に信号を送ると PC の値が変化する」という基本的なものだが、現代の CPU ではこの仕組みは拡張されている。
「割り込み」がそれだ。
CPU に対して外部から割り込み信号を送ると、CPU は実行中のプログラムをいったん中断して…あとで元に戻せるように PC の値をスタックに退避してから、PC の値を「あらかじめ設定したもの」に変更する。
リセットの場合は PC の値の「退避」がないことが大きく違うが、仕組みとしては似たようなものだし、実際割り込みをリセットの一種として使うこともある。また、通常のリセットを割り込みのように使うプログラムも見たことがある。
8bit 機時代のパソコンとして、Sharp の X1 シリーズの後期機種には、「IPL」と「NMI」の二つのリセットボタンがあった。
IPL は通常のリセットボタンだ。先にも書いたが、パソコンは起動するとまず IPL を実行する。
その IPL をすぐに実行させるためのボタン、というのは、つまりリセットボタンなのだ。
NMI とは Non-Maskable Interrupt (マスク不能割り込み)の意味で、詳細は書かないが「いつでも使える割り込み機能」のことだ。
こちらは、直前に実行していたプログラムが指定したアドレスに処理を移す。
IPL では動かすプログラムが決まっていたが、NMI は動かすプログラムを設定できる、という違いになる。
たとえば、マシン語モニタを使用中に、実行したプログラムが暴走してしまったとしよう。
NMI リセットを行うと、マシン語モニタのプログラムがコマンド待ちの状態に戻ってくる。
パソコンがリセットされるわけではないが、暴走したプログラムを中断して「なかったことにする」のだから、リセットだ。
でも、先ほど実行しようとして暴走したプログラムはまだメモリの中にあり、そのメモリを確認できるマシン語モニタのプログラムが動いている。デバッグするには非常に便利だ。
ゲーム機でも、PS2 のリセットスイッチは「リセット」だったが、同時期のゲーム機であるゲームキューブのリセットスイッチは「割り込み」だった。
攻略するようなゲームで、少し失敗したとしよう。PS2 でリセットを行うと、起動画面が出て、ゲームをロードして、タイトルに戻る。
でも、ゲームキューブでは瞬時にタイトルが表示される。すでにゲームを読み込んであるのだから、その最初の画面に処理を移したのだ。
光学ディスクのゲーム機なのに、ROM ゲーム機のように気軽にリセットできた。
この機能がなかったら、ピクミンは攻略ゲームとしてあそこまで高い評価にならなかっただろうね。攻略中は、ちょっと失敗するとリセットだから。
「リセット」は当たり前に使っている機能なのだが、その動作は結構多様で奥が深い。
最後に、話を聞いた知人が「こんな細かな話って、プログラマならみんな知ってるものなの?」と聞いてきた。
いやー、知らない人が多いと思うし、知らなくてよいと思う。
パソコンがリセット時にどんな動作をしているかなんて、OS を作るプログラマならともかく、普通のプログラマが知る必要はない。
僕がゲームプログラマやっていた時代は、ゲーム機の性能も低かったので、ハードウェアの性能を十分に引き出すプログラムが求められた。OS なんてなくて、ゲームのプログラムがハードウェアを直接駆動していた。
だから細かなハードウェアの仕組みまで調べて作っていたわけだけど、今はゲームも OS の上で動くような時代だし、プログラマがみんなこんな知識を持っている必要はない。
なので、ここに書いた話は、知っていても特に役立ちません。
年寄りが昔の武勇伝をひけらかしているようなものだと思ってください。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
石鹸・洗剤メーカーの「花王」がゲームを作って話題なのだそうだ。
僕がこのことを知ったのは24日。
その前の23日に、Switch 版が発売された、という記事を読んだのだが、もともと Steam 版で昨年8月頭に無料公開されていたそうだ。ほぼ1年前。
面白そう、って話を家族にしたら、Youtube 好きの次女だけ知っていた。ゲーム配信者の定番の一つになっているらしい。
というか、今調べたら、ゲーム配信の回数が多かったゲームとして、YouTube を使用した広告の年間グランプリまで受賞している。
そんなわけで、Switch 版を遊んでみる。200円。Steam なら無料で遊べるわけだが、ゲーム機に発売されているゲームならそちらを買うことにしている。その方が家族で遊びやすいから。
内容はホラーゲーム。
相続した家を不動産業者に売却する前に、査定額を上げるためにも掃除をしておこうと訪れた主人公。しかし、家には怪異が住み着いていた。
この怪異から逃げながら「脱出」しなくてはならないのだが、脱出するためには様々な「家に隠された秘密」を解く必要があり、そのためにもお掃除をしなくてはならない。
そして、この掃除のためにも、実在の花王製品を使いこなさなくてはならないのだ。
で、ひとまず1度エンディングまでたどり着いたが、掃除を「やり残した箇所」がいっぱいあるのにうっかり脱出してしまったという、納得いかない終わり方。
脱出後、簡単なストーリー展開が示され、査定額が出る。なるほど、ちゃんと掃除をしたうえで、できるだけ早く脱出すれば査定額が上がる、というやり込みゲームなのか。
Switch 版では、子供向けの「怖さ控えめモード」というのが付いたというのでそちらも遊んでみる。
ストーリーが最初から違っていた。夏休みにおばあちゃんちに遊びに来た子供、という設定。
通常モードでは、電気のない夜の家を懐中電灯で照らしながら進むような視点だが、こわさ控えめでは夕暮れ時の薄暗い家、になっている。暗くはないから怖くないし、遠くからでもアイテムなどを発見できてわかりやすい。
その上、おばけが歩く足跡がかわいいし、おばけに見つかって追いかけっこになるときに運動会のような BGM が流れる。こわさ控えめというより、コミカル。
一度謎解きを終わらせているのですぐに脱出できた。初回プレイより点は高くなったが、速度重視にしたせいで取ってないアイテムなどもある。
なるほど、先を急ぐだけでなく、隠されたものを探さないといけないのもあるのか。謎を知ってもみっちり歩き回る必要がありそう。
しばらく遊べそうだ。
さて、今回記事のネタにしようとしたのは、このゲームの事ではなく「昔も花王はゲーム作ってた時期あるよね」という話。
1990年代、花王がフロッピーディスクの販売に乗り出したことがあった。
すでに多くの会社がフロッピーディスクを販売しており、かなり後発。しかし、「界面活性技術により表面が滑らかでヘッドの滑りが良く、モーターの負荷が減るので省電力になる」とメリットを宣伝していた。
えーと、今時フロッピーディスクの話をしてもわからない人もいるから解説しておこう。
情報記録媒体としてのディスクは、磁性体が塗られたフィルムを円盤状にしたものを回転させ、「磁気ヘッド」で情報を読み書きする。
磁性体というのは小さな鉄の粉だ。鉄くぎに、磁石を一方向にこすりつけると弱い磁石になる、という遊びをやったことがある人もいると思うのだが、鉄の粉でも同じことができる。
磁石にこすりつけると、弱い磁石になるのだ。この時、こすりつける磁石の S N の向きで、鉄の S N の向きも決められる。
磁気ヘッドというのは電磁石で、電気によって好きな向きに S N を変えられる。これで 0 1 を記録すれば、コンピューターの記録媒体になる。
読み取るときは、電気を通していないヘッド…電磁石というのは電気を通さないと「コイル」なのだが、これでディスクの S N を読み取れる。
コイルの近くで磁石を動かすと、コイルに電流が流れる、という現象の応用だ。この時流れる電流は、磁石の S N の向きによって電流の向きが変わるので、0 1 を読み出せる。
話が長くなったが、当時のフロッピーディスクというのはこういう原理だったので、ヘッドがディスク表面を「擦り続けている」ものだった。
ここに洗剤で培った界面活性の技術を導入し、滑らかに滑らせれば、モーターも抵抗が減るので省電力になる、というのが花王のディスクの売り文句だったのだ。
本当かどうかは知らない。というか、当時のパソコンマニアはそんなこと気にして無かったと思う。
まだノートパソコンは高価で、デスクトップが中心に使われていた時代だ。電力はコンセントから供給され続けているので、省電力である必要はないのだ。
まぁ、それはともかく、花王は 10枚入りのフロッピーディスクに「おまけ」をつけていた。
当時はコンピューターとしてのシェア No.1 だった、NEC の PC-9801 用のゲーム。最初のころは小粒だがオリジナルゲームが中心だった。もちろん花王の内製ではなく、外注だが。
今確認したところ、後期には市販ゲームの体験版や、古いゲームのリメイク、ビジネスソフトの体験版などもあったようだ。
僕のページでも、過去にこちらの記事で花王のゲームの話書いてますね。大学のころのアルバイト先で、必要があってわざわざ花王の相撲ゲームを探して買ってきたが、当時人気だった格闘ゲームのような作りで、全然相撲ではなかった…という話。
当時のゲームも、今回 Switch で発売になったゲームも、宣伝として作られている。
花王の宣伝部門はかなり頭が柔らかいと思うし、その「突拍子もないアイディア」に GO サインを出せる上層部も素晴らしい。
日用品の会社って、性能では他社とそれほど差をつけにくいから、売るためには宣伝力がものをいう世界。
うちでも、Switch のゲームを見てた妻が早速感化されて、花王の洗剤買ってみようかとか言い出してるし…
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
寝落ち、って言葉。
意味変わったなーと思ったのが2年くらい前だったかな。
寝具の CM だったと思う。「きちんと寝落ちしよ?」ってキャッチコピーになっていた。
そこでの意味合いは、単に「眠りに落ちる」だった。
ちょっと違和感を持ったけど、CM なんていうのは違和感を持ってもらって「記憶に残る」ことが出来れば成功だ。
とやかく言うのは野暮というもの。この時はそのままスルーした。
「昔はそんな意味じゃなかった」なんて言うのは、老害に過ぎない。
言葉は時代と共に意味が変わるものだし、そもそも「寝落ち」なんて言うのは元々正しい日本語ではなく、流行語の一種。すぐに消え去ったり、意味が変わったりする。
先の CM の例はともかくとして、「寝落ち」というと、現代的な意味合いでは、寝てはならないところで寝てしまう、ということかと思う。
場所であれ、タイミングであれ。少なくとも、寝てはならないと思っているのに寝てしまうのが「寝落ち」だ。
で、老害かもと思いながらも今回この話を書いているのは、「最初の意味」ってまだ覚えている人いるのかな? と思ったため。
誰かが記録しておかないと、意味が分からないまま謎の言葉になってしまいそうだ。
寝落ちという言葉が使われていたのは、インターネット以前の「パソコン通信」の時代。
大体、日本では 1980年代末からだけど、必要な機材が安くなってパソコン通信が一般化するのは 1990年代の初頭。
95年くらいになると、同じ機材でそのままインターネットに接続できるようになる。
2000年代初頭くらいまでは、パソコン通信とインターネットは「似て非なるもの」として共存していた。
大事なのは、パソコン通信というのは「電話回線」で行われたことだ。
今のように常時接続などではない。使おうと思った時に、パソコンから電話回線につなげる機械(モデム)を使って、電話をかける。相手につながるとパソコン通信が開始できる。
電話なので、データは音としてやり取りされる。デジタルデータをアナログの音に変換して通信するのだが、そもそも電話回線というのは結構音が歪むので、余り高速な通信はできなかった。
それはともかく、パソコン通信にはチャットというサービスがあった。
あった、と書くのも語弊がある。
インターネットは均一にサービスが行われているが、パソコン通信というのは「類似サービス」が星の数ほどあり、そのすべてにチャットがついていたわけではないからだ。
特に、パソコン通信には、個人が運営する「草の根」と呼ばれる小さなサービスが多数あった。そのためのソフトも市販されていたし、フリーウェアや、自作する人もいた。
チャットを行うには複数人が同時に接続する必要があり、そのためには運営者は複数の電話回線を契約しないといけない。
だから、ソフトにチャット機能があったとしても、実際にはチャットが「ない」場合もある。
だから「あった」と気軽に言えないわけだが、まぁ概念として存在していたし、使っていた人も多いのでここでは「あった」ということで話を進める。
当時の電話料金は、市内 3分 10円。あまり人が使わない深夜になると、料金が安くなった。
だから、料金が安い深夜を狙って使う人も多かった。
有料の大手パソコン通信サービスは、日本全国の大きな市に「アクセスポイント」を持っていたので、市内料金で接続できる人は多かった。
でも、有料だから、電話料金に加えて接続料がかかる。
草の根の場合は、大抵は電話料金だけでよいが、アクセスポイントが身近になければ、電話が「長距離料金」となってしまい、1分 10円とか、値段が上がる。
その環境でチャットをやる。チャット接続中はずっと電話料金がかかる。
気にしない人はチャット中に「買い物行ってくる」なんて言って、15分くらい帰ってこない。何もしてないのに 50円かかっている。
なんでそんな無駄なことをするかというと、これも電話回線が少ないためだ。
人気のある草の根パソコン通信サービスなどでは、みんなが接続したくて電話が「話し中」になっている。争奪戦なのだ。
チャット中に盛り上がっているのに、ちょっと出かけるからといったん終了してしまうと、また戻ってこられる保証がない。だから、50円くらい無駄にしても接続したままにするのだ。
でも、さすがに30分も何もしないで放置すると、自動的に切断される機能がついていることが多かった。
これは、「うっかり接続しっぱなしにしている」ユーザーのためでもあるが、それ以上に「早く接続したい他の人」のためでもある。
電話回線を増やせば多くの人が接続できるが、それは草の根パソコン通信には難しい相談だった。
先に書いたが、個人で複数の電話回線を契約するわけだが、1本の契約で権利料が 72,000円かかる。それに加えて月額基本料金もかかる。
それだけ投資をしているものを「何もしない」人に占有されてはかなわない。
だから、30分も何もしないユーザーに対しては、サーバ側から電話を切るのだ。
ところで、パソコン通信に接続することは「ログイン」、または「ログオン」と言った。
接続を切るのは「ログアウト」だ。
でも、正しくログアウトしないで、電話回線の不調などで接続が切れてしまうことがある。
これはスラングで「落ちる」と言った。
今でもサーバーに「アップロード」なんて言葉があるが、サーバーは概念的に上にある物だ。
予期せずにそこから放りだされた、というのは「落ちた」という考え方だ。
先に書いた、「30分何もしない」ことによる自動ログアウトは、意図しない接続断ではない。
でも、これもユーザーから見たら「自分がログアウト操作したわけではない」ので、落ちた、と呼ばれた。
さらに言えば、通常のログアウトを「落ちる」と表現することもあった。
チャットなどは相手が存在して成り立つものなので、通信を終了する際に「そろそろ落ちまーす」なんて挨拶してからログアウトしたのだ。
以上の話を組み合わせて、「寝落ち」という言葉ができる。
チャットをしている最中に、反応が悪い人がいる。
もしかして眠い? と聞くと、眠い、と答える。
先に書いたが、電話料金が安い深夜に使っている人が多い、ということに留意。
そして、その後しばらく反応がない。
そのまま他の人たちがチャットを続けていたら、30分も経って「〇〇さんが退室しました」とか表示される。
眠ったまま30分何もしなかったから、サーバーから自動ログアウトしたのだ。
寝たことによって落ちた。寝落ち、という言葉はここから来ている。
なお、30分も待たずに、静かになってしばらくたったところで「〇〇さん寝落ち?」「布団行けよー」みたいに皆が心配する、というのもよく見られたパターン。
先に書いた「そろそろ落ちます」と同じで、「とても眠いので寝落ちします」なんて言ってログアウトする人だっていた。
元の意味からいえば「寝落ち」とは違うのだが、元々厳密な定義のあるような言葉ではないからね。
それでも、「落ちる」=「ログアウト・接続終了」という意味合いは守られていた。
今はインターネット専用線があり、常時接続、というのが普通になっている。
もしくは、携帯電話の電波などは従量制だ。常時接続に近いが、通信を行うとその通信量で課金される。
これも、一定の通信量までは定額、というのが普通だけど。
必要な時だけ電話を使って接続する、というのがもう古い話だ。
その古い時代、電話回線は常時接続ではなかったからこそ、「寝落ち」という現象が生じていた。
まぁ、時代が変わったのだから、すでに元の意味にこだわる必要はない。
言葉の意味がずれて行っても、全然かまわないと思う。
しかし、先に書いたように「元はこんな意味でした」を残すことには意味があると思う。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
うろ覚えだけど、時々「オリベッティ社の未来予測」を思い出すんだ。
コンピューター雑誌の記事で読んだのだったと思う。すでにソースは無くて記憶に残るのみ。
なので、以下に書くことは間違えているかもしれない、とあらかじめ断っておく。
オリベッティはイタリアの事務機器メーカー。
タイプライターで一時代を築いたが、コンピューターでも独特の製品を作っていた。
イタリアらしく、デザインにこだわっていたんだ。
1990年ごろ、オリベッティは革張りのノートパソコンとか作ってた。
この頃はまだ液晶が高価だし、バッテリーも今ほど高性能なものがない。ノートパソコンは非常に高価なものだった。
そして、オリベッティは、どうせ高価ならデザインにも金を使って、高級感あふれるものを作っていたのだ。
全然売れなくて、1999年にパソコン事業から撤退するのだけど。
さて、1988 年、アップルは「ナレッジナビゲーター」を発表する。
当時の社長、ジョン・スカリーはジョブズをアップルから追放した。
しかし、ジョブズは「何を作るべきか」に関しては、強いリーダーシップを持っていた。
それが自分勝手すぎて他の社員から苦情が絶えないから追放したのだけど。
ともかく、ジョブズがいないアップルで、会社が迷走するのを避けるために、強力な方向性を示す必要があったんだ。
しかし、スカリーはコンピューターには詳しくなかった。なにか「すごそうなもの」をでっちあげる必要があった。
それが「ナレッジナビゲーター」だった。
これは製品ではなく、未来予測ビデオだ。近い将来に、今とは全く違う形のコンピューターが登場して、生活が大きく変わる、という SF を短い時間にまとめたものだ。
コンピューターはこうなるべきだ、と示して、開発の方向づけをするためのビデオだった。
しかし、荒唐無稽だった。そこで描かれるコンピューター像は当時の技術ではとても作れないものだった。
音声認識もまだ十分できていない時期、パソコン通信もまだやっている人が少ない時期に、自然言語で会話して、ネットワークで必要な通信を行って、個人の為にあらゆる仕事を行ってくれる「秘書」をコンピューター上で実現する、という内容だったのだ。
アップルは、この後数年間、この「とても作れない」物を作ろうとして金を浪費し、プロジェクトから撤退する。
AI が急発達した今でも、まだ作るのは難しい。
Siri とか Alexa とか、一時期注目を浴びたけど、それを使うのは当たり前にはなっていない。
まぁ、アップルの話は今回は余談なのだが、オリベッティもこのビデオの影響で「真似をした」。
オリベッティ社の考える、近い将来のコンピューター像を示すビデオを作ったのだ。
たしか、1990年ごろだったと思う。
僕が読んだ記事では、この内容が酷い、と笑い話のような扱いで紹介していた。
描かれた「未来のコンピューター」は複数あったはずだが、2つしか覚えていない。
▼ミラーPC
洗面所の鏡にコンピューターが埋め込んである。
音声認識で動作し、顔色から健康チェックをしてくれたり、化粧や服選びのアドバイスをしてくれる。
(ハーフミラーになっていて、自分の顔に他の画像を重ね合わしたりして提案を行う)
▼ポストイットPC
超小型 PC 。値段も安くなり、他の人にあげてしまっても構わない程度に安価。
出来ることは少なく、ディスプレイに文字を表示し、他の人の机に貼り付けてきたりする程度。
ただし、「剥がされた」時には、置いてきた人の所に通知を出すので、メッセージが読まれたことが分かる。
僕はこれを読んで、笑い話にするのはどうだろう、と思ったのだ。
ナレッジナビゲーターは、とても実現の方法が思いつかないようなものだったが、オリベッティの未来予測は技術的に可能だった。
「近い将来」には十分作れて、実際に普及するかもしれないと思えたのだ。
当時のコンピューターは高価で、好きな人なら「家に1台」持っているが、持たない家庭だって多かった。
1台しかないから、目的をもって使う。その時やりたいソフトを読み込ませて利用する、という感じだ。
しかし、技術が進めばもっと安くなる、もっと普及する、というのは誰もが言っていた。
安くなれば、特定機能の PC が大量に作られ、そこら中に埋め込まれるということはあるのではないか。
それこそ、鏡に埋め込まれ、洗面所にいる時しか使わない PC があったってかまわない。
ポストイットのように単機能の PC があったってかまわない。
これが笑い話にされていたのは、この当時の多くの人の意識の中では、「PC」が高価なものだったからだ。
高価だから、多目的に使わないと「もったいない」。ソフトを入れ替えながら使うのが「あたりまえ」だった。
なのに、ミラー PC にも、ポストイット PC にも、ソフトという概念がない。最初から単機能で、それ以外のことに使うことを考えていないのだ。
PC は劇的に安価になる、という前提で作られた未来予測だが、その未来予測を見る側には、「もったいない」という気持ちが残ったままなのだ。
これが、そんな未来は来ない、と笑われた原因だ。
でも、僕は「コンピューターの使い方が、時代の流れで劇的に変わる」ことをすでに経験していた。
僕がコンピューターに興味を持ち…学研の「FXマイコン」やファミリーベーシック、MSX や X68000 を使うに至るまで、PC というのは僕にとって「プログラムする機械」だった。
もちろん、出来合いのプログラムを買ってきて使う、ということもしている。ゲームとか遊んだしね。
しかし、当時のコンピューターの使用用途には、少なからず「プログラムの自作」があったんだ。コンピューターを買えば、BASIC 等の言語が付属しているのが当然だった。
これが、僕が大学に入学して…これも 1990 年の事なのだけど、大学のパソコンルームで Macintosh を見て衝撃を受けた。
このコンピューターは、プログラムを作ることを想定していないのだ。もちろん、言語セットを購入して作ることはできるのだが、それよりは「ソフトウェアプレイヤー」として設計されている。
そうか、コンピューターが普及する世の中では、プログラムは自分では作らないのか…というのが衝撃だった。
その頃に、オリベッティの未来予測を伝える記事を読んだのだ。
プログラムを作る必要がなくなるばかりでなく、どんなプログラムを使う、と選ぶ必要すらなくなる。
PC が安くなり、大量にあるのだから、単機能に特化した PC があったってかまわないのだ。
当時は「ワープロ」という機械がまだあったが、これだって専用ソフトウェアが最初から入っていて、それ以外のことはできない PC だ。
オリベッティ社の未来予測は笑い話にされているが、こうした時代はいつか来るだろう、と僕には思えた。
さて、最近になって特に思うのだ。
車のバックミラーに、ナビゲーションの機能を付けたような製品あるよね。これ、ミラー PC ではないのか。
洗面所ではないが、オリベッティが言いたかったのは洗面所にコンピューターを置け、ということではなく、「鏡をディスプレイと融合させる」ということなのだ。
また、スーパーに行くと値札が電子ペーパーになっている。
これ、ポストイット PC ではないのか。
ちゃんと通信機能は付いていて、POS 側で値段変更とかすると、棚の値札も値段を変えられるようになっているのだ。
「それなりの」機能を持つ PC… CPU に RAM とフラッシュメモリを内蔵し、電源さえつなげば 1chip で動作するようなものが、安ければ 300円以下で入手できるようになっている。
そんな安い CPU で Linux を動作させた、なんて記事も見かける。
先に書いたが、アップルが予測した「ナレッジナビゲーター」はまだ実現していない。
当時はナレッジナビゲーターを「良い未来予測」ともてはやし、オリベッティ社の予測は笑う人が多かった。
しかし、本当に未来を予測できていたのは、オリベッティ社の方だったように思う。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
町内会の役員の連絡用に、LINEのオープンチャットを使っている。
人数の限られたグループだからグループチャットにしても良いのだけど、「町内会公式 LINE」をオープンチャットにしているので、その練習を兼ねたもの。
なぜ公式をオープンチャットにするかと言えば、グループチャットの人数制限は 500人だからだ。
町内は700戸あるので、各家庭1名参加したら制限を超えてしまう。
また、グループチャットはお互いが友達でないといけない。町内全員の友達登録なんてしてられるか。
というわけで公式はオープンチャット以外ありえないし、役員はこのオープンチャットの使い方を知らないといけないだろう、ということもあって、役員連絡用もオープンチャットなのだ。
さて、連絡用なので、会議の議事録などもまずはここにアップされる。
議事録の内容を皆が目を通し、問題がなければ WEBページで公開される。
ところが、10月の議事録をまとめた人がアップロードしたら、規約違反だと言われて入れられないというのだ。
僕宛に送ってもらい、僕の方でもやってみた。
なるほど、オープンチャットは誰でも見られるから、ファイルのアップロードなどで内容が検閲され、問題があると判断されると「規約違反」となるようだ。
で、ためしにやったのだが、1日以内の発言停止措置を食らってしまった。他の方法がないか実験しようにも、発言できない。
さて、何が利用規約違反になったんだろうね。
規約違反と判断された時点で、その詳細が書かれたページが示される。
それによれば、以下の内容が含まれると利用規約違反となるようだ。
・個人情報の掲載
・誹謗中傷・過度な批判的表現
・差別的発言・ヘイトスピーチ
・知的財産権・プライバシー・肖像権などの権利侵害
・自殺・自傷、他人に対する気概などの予告等
・児童ポルノコンテンツの投稿または青少年を危険にさらす行為
・わいせつ・暴力など一般人が不快と感じる内容を投稿する行為
・出会いを目的とする行為
・法令違反または法令違反につながる恐れのある行為
・明らかな偽誤情報の拡散・流布
・なりすまし
・サイバーセキュリティリスクの恐れがある行為
・サービス運営の妨害(荒らし行為)
・商用宣伝を目的とする行為
・その他当社が不適切と見なす行為
(実際には、それぞれの内容ごとに事細かに説明が書かれている)
なるほど、これらは、誰でも参加できるオープンチャットとしては不適切な行為だろう。
LINE としては犯罪を未然に防ぐために、これらの行為を行わせないようにしている、というのはわかった。
でも、議事録の中にこれらに相当しそうな内容が見当たらないのだ。
LINE はこの「フィルタ」の詳細は明らかにしていないが、それでいい。
基準なんて示したら悪人は回避しようとするので、基準を示さない LINE は正しい。
まぁ、せいぜい言葉狩りだと思うので、連続する単語がたまたま悪い単語を作り出してしまったとか、いわゆる「誤爆」だとは思うのだけど。
僕も昔チャットサイトを運営していたことがあり、こうした誤爆は仕方のないことだと思っている。
なので、LINEの措置が酷いとか、そういう文句はない。
むしろ安全のために頑張ってくれてありがとう、という感謝の念はある。
こういうフィルタリング、いたちごっこになりやすくて、本当に大変なのよ…
しかし、いったい何が「誤爆」したのだろうな。
しばらく考えていたのだが、ふと気づいて AI に相談してみた。
google の検索窓から質問すれば gemini が答えてくれる。
LINE のオープンチャットの利用規約で違反と言われたのだけど、このファイルのどこが相当したと思う? とファイルを渡して聞いてみたんだ。
せっかくなので、copilot にも聞いてみた。
ちなみに、gemini も copilot も、添付ファイルを「町内会の会議の議事録であり、特に問題のありそうな箇所はない」と言ってくれた。
ファイルを送っただけで、町内会の議事録だとは言っていなかったのに、内容を読んでそう判断したのはたいしたものだ。
LINE は判断基準を公表しておらず、当然 AI も知るわけがない。
なので、「おそらく」程度の話なのだが、次のような部分が利用規約にかかったのではないか、という見解。
・先日、警察の人が町内会の会合に来てくれて、「自転車青切符導入から半年」の現状を講演してくれた。
そのことを議事録内に書いてあったのだが、「交通違反」「青切符」「警察」などの言葉が並んでいたのが、犯罪がらみの法令違反として検出されたのではないか。
・イベント出席の服装として、町内会役員の制服である「青い帽子と青いシャツ」を指定している個所があった。
これが、帽子やシャツの販売行為と捉えられ、商用宣伝目的と捉えられたのではないか。
・来月町内の文化祭が行われ、町内緑化活動として「花の苗の販売」が行われることが書かれていた。
これが商用宣伝目的と捉えられたのではないか。
・「苗の販売」が、麻薬販売の隠語と捉えられたのではないか。
何の問題もない文章に見えても、難癖付けようと思ったら付けられるものですね…という感想。
特に、一番最後に書いたものは、「なるほど」という感じだ。
葉っぱ、という言葉で麻薬を示したりするのだから、「苗の販売」だって十分怪しい言葉かもしれない。
さて、「1日以内」の発言禁止ペナルティを食らったのが昨夜20時頃。
朝9時ごろ…12時間たったところで発言してみたら、発言できた。
これが、ペナルティが12時間程度だったのか、それとも日付変更タイミング(0時には限らず、深夜4時とかでも)でペナルティが解除される仕組みなのかはわからない。
発言出来たら、次は目的である「議事録の共有」だ。
GIGA ファイル便に入れて URL を送ったら、これは大丈夫だった。
しかし、これだと文面を見るのが手間だ。
MS-word の WEB 版にファイルを置いて、共有リンクを送ったら、これも大丈夫だった。
こちらだと word ファイルを入手するのが面倒だが、文面は見やすい。
というわけで、中を確認してもらう人にも、ファイルを必要とする人にもこれで届くはずだ。
最初から google docs とか word web版とか使ってればよいのだろうけど、町内会の役員は老人が多く、MS-word でファイルを作れるだけでも「貴重な人材」なのだ。
それ以上のことを望むのは酷というもの。
ともかく、LINE は送られたファイルの中身は検査するが、外部 URL の内容までは確認しないようだ。
もし犯罪が行われたとしても、「LINE 上で」行われたわけではなく、URL 先が舞台となったのだから LINE の責任は十分に果たされている。
むしろ外部のサイトの内容まで検閲するのは、電気通信法違反(通信の秘密の侵害)になってしまう、という判断かと思う。
#オープンチャットは「サービス」であり、1対1の「通信」を提供するものではない。
しかし、URL をクリックすると、それは LINE のサービスを離れ、リンク先と端末保持者の間の通信となる「可能性がある」。その内容を検閲するわけにはいかない。
というわけで、まとめ。
知っておくと何かの役に立つかもしれないし、そんな日は来ないかもしれない。
・LINE オープンチャットに word 文章などを送ってペナルティを食らったら、一定期間発言禁止にはなるが、そのうち自然回復する。
ちなみに、発言禁止措置は該当オープンチャットのみ。それ以外の使用は問題ない。
・外部 URL にファイルを置いて、その URL を共有すれば回避できる。
別年同日の日記
14年 スパリゾート・ハワイアンズに行きたい人へのまとめ(1/2)
14年 スパリゾート・ハワイアンズに行きたい人へのまとめ(2/2)
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
タイトルには趣味と書いたが、趣味とは少し違う。
町内会で頼まれていて、作らないといけないプログラムがある。
しかし、なかなか時間が取れずに、2年かかっているがまだ完成していない。
ちなみに、集中して作業できるなら1か月で作れる自信はある。
数か月に一度、数時間の作業で作り続けているのだが、このやり方だと「以前なに作ってたっけ…」って思いだして、「プログラムどんな構造だっけ…」って確認して、「全体動作どんな感じだっけ…」って使ってみて、「そもそもフレームワークの動作どうなってたっけ…」ってマニュアルを探して…
つまりは、本格的に作業に入る前の「思い出す」作業だけでも2時間くらいかかってしまうのだ。
町内会で、もう5年ほど前に辞めた前任者がホームページを作っていた。
ほとんど本人の趣味で作っていたため、HTML 直書きの FTP 更新、perl CGI、http 接続 ( SSL ではない)、Shift-JIS コード…という状態。
CMS? なにそれ美味しいの?
文字コード変えたいと思ったら、全ページ書き直さないといけない。
平成の終わりごろに更新は止まっているが、ページ維持(サーバ使用料の支払い)だけはしてる。
実は、このページの「引継ぎ」を頼まれていたのだが、余りにも引き継ぎにくい状態で、困っている間に時間が過ぎた。
そのまま丸ごと引き受けるなら簡単なのだが、リクエストとして、「別のサーバに移行して欲しい」「できれば全てのページ内容を残してほしい」「今後も引き継がれやすいように整えて欲しい」などがあったのだ。
リクエストの心情は非常によくわかるのだが、余りにも内容が矛盾していて頭を抱えていた。
その上、「新しい内容も追記して欲しい」と言われていたのだが、この引継ぎリクエストは僕が町内会役員を始めたときにもらったもので、その時は町内会の仕事の何が大切で、何がどうでもいいのかわかっていないのだ。取捨選択の基準もないので、何を追記していくべきかもわからない。
一応、今時だから WordPress とかに移行できないか、少しづつ考えてはいたんだ。
でも、これもやはり「数か月に一度、数時間」という時間でやっていたので遅々として進まなかった。
僕が時間が取れずに作業が出来なさそうだから、ということで、別の方が、隣の町内会の人に聞いて「隣の町内会と同じ仕組みで」ホームページを作り始めた。
この時点で、僕が一番悩んでいた「過去の内容の引継ぎ」という話は丸ごと消え失せた。
使用する環境は Wix で、これは主に「小さなお店などのホームページ作成」に使われる、有料のホームページ作成環境だ。
固定ページと、DB を元に生成されるページ、Blog ページを作れるような仕組みになっていて、固定ページはグラフィックツールを扱うような感じで、ドット単位で文字位置などを指定しながら作成できる。
その代わりに、今時のフローレイアウトなんてできない。
スマホには対応しているのだが、PC 向けのデザインを作り、それを元に自動的にスマホ用に生成されるデザインを、さらに微調整する、というような作り方だ。
しかしまぁ、HTML とか CSS とか知らなくても作れる。
これはこれで、属人的な技術に頼らず、誰でもホームページを作れる良い環境。
しかし、作業してくれた方は、ホームページ作成に慣れていなかった。
とにかくサーバを契約して、ある程度作って道筋が出来上がったところで、町内会役員を退任することになり、僕が引き継いだ。
現在、古いページから「僕が残したい」ページだけは移行させ、新しい記事は blog として書くような仕組みを整えて運用している。
で、問題になったのが、「町内会館の利用カレンダー」なんだ。
古いページには、perl CGI で作られた仕組みで、町内会館の各部屋の使用状況が分かるカレンダーがついていた。
これを作りたいのだが、wix にはそんな仕組みはない。
(余談だが、CGI は前任者が作ったわけではなく、ネットで公開されていたフリーソフト。今はその公開ページも無くなっていることを確認した。「現行バージョンの perl では動かない」ため公開終了だそうだ。)
一応「カンファレンス予約」の機能はあるんだ。
小さなお店向け、と書いたが、先生が講座を開いて、お客さんがそこに予約を入れるような機能はある。
これを応用できないか、と考えたのだが、やってみると無理があり過ぎてダメだった。
どうにかならんか…と調べていたら、wix には wix velo という「プログラム環境」があると判った。
javascript でプログラムを組み、それをサイト内に組み込める。
ただし、wix 自体も javascript で動作しているため、wix を壊さないための制限が設けられている。
この wix velo は、jQuery が流行している時代に作られたフレームワークのようで、jQuery 風の記述となっている。
ライブラリは非常に充実していて、DB アクセスライブラリもある。
フロントエンドであるブラウザ側から、ライブラリにアクセスする命令を発行することで、サーバの DB を読み書きできるのだ。
(SQL ではなく独特の記法となる)
まぁ、いろいろ制限があったり独自の部分もあるのだけど、「プログラムできる」ということが大切。
そして、この機能を使って町内会館の予約カレンダーを作成し始めたのだけど…先に書いたように、2年たっても完成していない。
余りにも独自の環境なので、思い出すのに時間がかかったりする事情が大きい。
時間がかかっている理由はもう一つあって、今の perl CGI の問題点を克服したい、と思って大きな野望を掲げた設計にしているせいでもある。
今の予約カレンダー、人が電話で予約を受け付けて、ノートで予約を管理したうえで、「みんなに公開するために入力」しているだけなんだ。
今作っているものは、カレンダーをクリックして予約を入れられる。
ただし、この時点では予約申請中になるだけ。権限を持つ人が「承認」して、はじめて予約済となる。
時間帯と複数の部屋を示したカレンダーは大きく、PC 画面でないと見られない…スマホでは予約しにくいので、これを「絞り込んで」表示する機能も作りたい。
あと、町内会館とは別に、子供会館というところがあり、こちらは現在予約カレンダーを公開していない。
これも一緒に公開できるような設計にしている。
(管理者が違うため、そちらの管理者とのすり合わせも必要になるが)
などなど。
久しぶりに町内会行事のない週末、雨降っているので庭の雑草取りなどもできず、家族の予定もないので、数時間プログラムをしていた。
慣れない環境に疲れたので日記でも書こうと思った次第。
前回プログラムしていたのは、ゴールデンウィークとかだったのではないかと思う。
ためしに現在できているものを使ったら結構バグが見つかったので、それらを修正するのに手間取った。
今はまだ「古いホームページ」が前任者のご厚意で残っているのだが、その人が個人的にお金を払ってサーバを借りている。
今年末に契約を終えたいと思う、という意向も聞いたので、急いで作りたいのだけど…
町内会長は、当面電話とノートで予約受付するのでいい、と言ってくれてはいるのだけど、便利に使えるようにはしたいんだよね。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |
先日、X (元ツイッター)で、漢字 ROM という存在に驚く若者がいた。
文字が ROM に入っていて、フォント交換とかできない、というのが概念としてカルチャーショックを感じたようだ。
一方で、当時は RAM は高価で、搭載容量も小さかったので ROM だったのだろうか、と考察もしていた。
これに対して、多くの人がいろいろな意見を書いていた。
実際その時代を知っていた人の思い出話もあれば、若者の考察として出鱈目な意見もあったりして面白い。
自分は思い出話を語る側の人間だが、「漢字ROM」について書いたことはなかったので、記しておこうかと思う。
最初に、JIS 漢字について書いておこう。
「漢字ROM」の話題の中で、膨大な漢字を分類し、番号を付けて ROM に格納した人たちに思いを馳せる人もいた。
実際、JIS 漢字の制定までは長いドラマがある。
JIS 漢字が定められる前はコンピューターで漢字使えなかったんだ、という意見も見られたが、これは少し違う。
各社が何とかコンピューターで漢字を使えるようにしようとして、独自の方法を探っていた。
1978年には、やっと今と類似の方法で漢字を扱える「ワープロ」が登場する。
その少し前から、このままでは各社のコンピューター間で文章のやり取りなどできない、という危惧があり、JIS として文字コードをまとめようとしていた。
新聞や雑誌で、ひたすら「文字をカウント」して現代に使われる文字の頻度を確認する。
それでは現代に偏り過ぎるから、古文などでも同じ作業をする。
日本語の漢字には表記ゆれ…異体字もあるから、同じと思われる文字はまとめる。
この地味で気の遠くなる作業を繰り返し、良く使われる文字と記号と、使えると良い文字を、それぞれ 3000字強でまとめ上げる。合計は 6800字ほどだが、これが「第1水準」「第2水準」と呼ばれる漢字だ。
先に 1978年に最初のワープロが登場したと書いたが、JIS漢字の制定も 1978年だ。
つまり、最初のワープロは JIS 漢字には沿っていない、独自の漢字コード。
ともかく、基準が定められた。6800文字だ。1つの漢字を 16x16 ドットで表現するとしたら、256ドットになる。
これは、256bit = 32byte で表現できる。
1文字を32byte として、6800文字は 218Kbyte 程度。
ROM としては、256KByte の ROM が使用されることが多かったようだ。
第1水準のみなら、半分の 128Kbyte で済んだ。
ところで、JIS 制定後の1980年代は、8bit のホビーパソコンが広まった時代だが、当時の CPU である Z80 や 6809、6502 が扱えるメモリ空間は 64Kbyte 。
実際には、CPU外にとりつける回路により、「バンク切り替え」と呼ばれる方法を使ってメモリ空間を広げられた。
たとえば、Z80 を使用する MSX は、設計上 1MByte = 1024Kbyte のメモリ空間を持っていた。
というわけで、MSX の場合、カートリッジとして漢字 ROM を供給できた。
ところで、X では「漢字 ROM」という言い回しに対し、実際には ROM ではなく、マザーボードのスロットに差す拡張ボードとかでしょ? と書いている人もいた。ROM をそのまま売るなんて、やるわけないだろうと。
MSX のカートリッジ、なんていうのは、まさに拡張ボードだろう。
でも、FM-8 では、漢字 ROM を刺すための ROM ソケットがついていた。
全ての人が漢字を必要とするわけではないので、標準では取り付けられていない。しかし、必要なら本当に単体の「ROM」を購入し、自分で ROM ソケットに刺すのだ。
さて、まだ最初の疑問に答えていない。なぜ ROM だったのか。
実際には RAM は ROM より高価だが、RAM を増設してそこに読み込むのではだめなのか。
当時の常識としては、ASCII 文字の形状は、ROM に入っていたのだ。
電源入れたときに、少なくとも文字は表示されないと操作できないからね。
MSX の場合、文字の形は変更できるように RAM 領域になっていた。
でも、Boot ROM の中に文字の形状が格納されていて、起動時に RAM 領域に書き込まれる。だからやはり、文字形状は ROM なのだ。
文字形状は ROM 。これが当時の常識であり、当然のことだった。
漢字 ROM も、この常識に従って作られたものだ。
もう一つ、当時の外部記憶メディアとしては「カセットテープ」が主流だった。
ディスクのように速くない。32Kbyte のプログラムを読むのにも、5分程度かかった。
220Kbyte なら 30分かかる計算だ。これを、電源を入れるたびにやらないといけない?
漢字は ROM にするのが当然だった。
ところで、Apple の Macintosh は、当初日本国内ではキャノン販売が扱っていた。
Mac は注目の機械ではあったが、アメリカ製で日本語が使えなかった。これでは日本のオフィスでは導入しづらい。
そこで、キャノン販売は、Macintosh 512K と呼ばれる機械に、日本だけの特別な改造を行った。
当たり前だが Mac 512K には、漢字 ROM を搭載するような仕組みも、スペースも用意されていない。
そこで、CPU を引き抜いたうえで、代わりに漢字 ROM と CPU を重ねて搭載できるような特殊基板を差し込んだ。
CPU のアドレスバスとデータバスを直接 ROM に直付けしてしまえば読める、という寸法だ。乱暴。
ダイナマック、と名付けられ、キャノン販売が外注して作成した日本語ソフトウェアと共に販売された。
この改造機種、アップルの歴史では「認められていない」。
あくまでも、日本の販売代理店が暴走して勝手に作ったものだ。
とはいえ、日本での Mac 普及に一役買ったらしい。
しかし、こんな方法を取っていては、新機種のたびに大改造を行わなくてはならない。
Apple にとっても、日本は大きな市場に育ちつつあり、キャノン販売からの要望に応えて、日本語対応の OS が作られていた。
やっとこの日本語 OS 「漢字 Talk」が登場するのが、512K の次の機種である、Macintosh Plus 。
搭載メモリが 1M byte になっていた。
漢字 Talk は、アメリカ本社で、日本語が全くわからない技術者によってつくられた。
そして、当時の「日本の常識」を打ち破った。
なんと、漢字 ROM を持たずに、漢字フォントを OS 上の「ファイル」としたのだ。
Mac は伝統的に文字を ROM ではなく「ファイル」として扱っていた。だから、漢字もそのようにしたのだ。
当時のキャノン販売が作ったパンフレットを持っていたことがある。
(より完成度の高まった「漢字 Talk2.0」発売時のパンフレット)
表紙に、大きな文字で「日本語はハードか? 日本語はソフトだ!」と書かれていた。
これ以前、日本語を扱うには、日本語を考慮して作られた、日本のメーカーのハードでないと無理だと思われていた。
なのに、無改造のアメリカのマシンで日本語を扱えるようになった。
「日本語はソフトだ!」というのは、時代の転換点を意味する言葉だった。
少し話を戻して、8bit の時代。
1文字を1バイトで表現するメモリ。ASCII コードを書き込むと、それに対応した文字が画面に表示される。
グラフィックでは、1バイトを書き込んでも、色付きの1ドットだったり、白黒の横8ドットだったりが表示されるだけだ。
でも、テキスト画面は1バイトの書き込みで、8x8 のキャラクタが表示されるのだ。遅い CPU で、高速に画面表示ができるいい方法だった。
でも、テキスト画面は「1バイトを書き込むと」「アスキーを表示する」のだ。
漢字には対応していなかった。漢字 ROM を搭載したマシンでも、漢字を表示したいときは、漢字 ROM から文字形状を読み込んで、グラフィックとして表示しなくてはいけなかった。表示が遅い。
#先に書いた FM-8 なんかは、テキスト画面を持っておらず、すべてをグラフィックに一本化していた。
それでは遅くなってしまうので、メイン CPU とは別に、グラフィック用のサブ CPU を持っている。
実際には、この連携がそれ程よくなくて、グラフィックの速度を出しにくかったようだけど。
16bit マシンになるが、PC9801 は、テキスト画面を漢字に対応させた。
1バイトを書き込むとアスキーを表示するが、2バイトを書き込んで漢字を表示させることもできるのだ。
外部サイトだが、PC-9801シリーズのテキストVRAMに詳細が書かれている。
(実際には、書き込まれたものがアスキーか漢字かを指定する「アトリビュート」も変更する必要があった。これはアスキーの書き込みの際も同じで、アスキーなら2バイト、漢字なら4バイトを操作することになる)
これは速かったし、プログラムが楽だった。
PC9801 が最大シェアを取った理由の一つが、この扱いやすいテキスト画面だったと思う。
(他にも、グラフィックが速い専用 LSI を搭載していたとか、とにかく良くできた機械だったのだけど)
日本のメーカーは、日本語を扱うのに特化したハードウェアを作っていた。
日本語は文字の種類が多く、そうしないととても扱えない、と信じられていたのだ。
時代は 8bit から 16bit に移行していた。
メモリ空間は広がり、RAM も 1M byte 程度搭載するのが当然になっていた。
フロッピーディスクは当然のもので、ハードディスクも珍しくないオプションになっていた。
Mac は元々テキスト画面を持たない機械だった。
だから、日本語もグラフィックとして扱う仕組みに違和感はなかった。
しかし、IBM 互換機はテキスト画面を持ち、アメリカの機械なので当然のことながら、漢字なんて表示できなかった。
国内では、PC9801 が大きなシェアを持っていた。
ここに、日本 IBM が戦いを仕掛ける。Mac と同様に、無改造の IBM-PC で日本語が表示できれば良いのだ。
そして、DOS/V という OS が開発された。
無改造の MS-DOS に拡張ソフトウェアを同梱したもので、VGA と呼ばれる画面表示の機種にのみ対応(VGA は当時の標準だったが、それ以外の表示もあった)。
この DOS/V 、英語モードと日本語モードを切り替えられるのだが、日本語モードにすると全てのテキストをグラフィック画面に表示するようになる。
そして、漢字データも RAM に読み込み、「普通に」扱える。
先に書いたように、PC9801 は「テキスト画面が使いやすい」機種だった。
DOS/V では、仮想テキスト画面を作り、そこに書き込んだものを OS の責任として、グラフィック画面を使って表示した。PC9801 の使いやすさを、ハードではなく、OS レベルのソフトウェアで実現したともいえる。
8bit 時代なら、漢字をグラフィックに書くのは「遅かった」。
しかし、16bit で CPU 速度も上がった時代では、十分実用速度だった。
DOS/V は先に書いた通り、VGA 機種でしか使えなかった。
しかし、方法論は示した。この後、まず、DOS/V 相当の「拡張機能」が、フリーソフトとして作られる。
そして、VGA の少し前の規格…CGA の機種でも同じように漢字を表示する仕組みが、作られた。
HP-200LXは、ポケットに入るサイズに作られた IBM 互換機だったが、CGA だった。
このマシン上で、フリーソフトによって日本語化が行われたのだ。
この頃になると、「漢字ROM」ではなく、フォントデータを使うのが当たり前になりつつあった。
これに呼応して、フリーの日本語フォントを作って公開する人も多数いた。
漢字 ROM の時代は終わり、ソフトウェアに移行した、と言っても良いだろう。
話は一気に飛んで現代。
Windows も Mac も、当然漢字 ROM は使っていない。
どちらの機種も、今はテキスト画面を持っていない。ASCII文字ですら、ソフトウェアで描画している。
漢字 ROM の時代は、漢字が 16x16 だったり、12x12 だったり、ドットで描かれていた。
しかし今はベクターだ。サイズは自由に変更可能で、リアルタイムに計算して「レンダリング」している。
この状況では、「昔、漢字を表示するのには漢字 ROM が必要だった」というのが、全く想像のつかない話だとしても不思議ではないだろう。
別にそれでよいのだけど、X に書かれた疑問と、それに対する…間違った応答も多かった反響を見て、自分の知っていることを書き残す次第です。
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |