ぜんぜん日々更新ではない日記です

まぁ、ぼちぼちやっていきます。
このページは最新7日分で、逆順(最新が上)で並んでいます。
過去のものはヘッダ部分のリンクから選べます。

目次

2025-07-23 ここしばらくの出来事
2025-07-02 akamai の CDN
2025-06-29 uniqlo のシャツ
2025-06-24 wix velo
2025-06-18 続・町内会ホームページ
2025-06-09 【訃報】ビル・アトキンソン
2025-06-07 マリオカートワールド
 今月の日記
ここしばらくの出来事  2025-07-23 18:09:37  その他

▲目次へ ⇒この記事のURL

ふと気づいたら、今月の日記 akamai の技術解説しか書いてないではないか。

これは僕の「日記」なのに、技術解説のみというのは良くない。


今月だってそれなりにいろいろあったのだ。

いろいろあったのだけど…ネタとしては弱くて、書くほどじゃないかな、って思って書かなかったのだ。


せっかくだから、まとめて書いておこう。

1つづつでは弱くても、まとめればそれなりの量になる。




6月末の話しから始まる。

長女の高校で文化祭があったので見に行った。


もう3年生だが、1・2年生の時はまだ「コロナ警戒」のため、家族から1名だけ、と指定されていたのだ。

それで妻が見に行っていた。僕は今年初めて。


「携帯電話、電波はいらないよ」と妻と長女から散々聞いていたが、校内本当に電波が入らない。笑いが出るレベル。

山の上にあって、「陸の孤島」みたいに言われてるんだよね…


この文化祭で、長女は部活卒業。演劇部だった。

しかし、この演劇部が困った人だらけで、振り回された3年間であった。

(我が強くて自分勝手な親子がいて、子供も親も他人の迷惑を顧みない行動をとり続けたのだ。

 それを筆頭に困った人ばかりの部活で…嫌気がさして辞めた部員も多数。結果、困った人しか残ってなかったともいう。)


長女も出演した最後の公演、その困ったちゃんが何かに感化されたそうで、「自分がシナリオ書くからミュージカルをやる」と強行して、本人が音痴だという…

シナリオ書くのに難航して、曲を作る時間も十分になかったらしい。なので音が非常に薄く、スーパーの店内BGMのよう。


それでも、公演したものは「かなりマシになった」バージョンだそうで、文化祭のしばらく前に大会で出したものは本当にひどかったって。

(主演の「こまったちゃん」があまりに音痴なので、直前に他の部員が結託してクーデターを起こし、何曲か歌のシーンをカットさせたらしい。大会の際はそこどまりで、無理なカットが多いので話が繋がらなかった。

 文化祭公演はカットした歌の代わりのシーンを作って、話がまともにつながるようにしたもの)




2週間後の7月頭、今度は次女の高校の文化祭があったので見に行った。


次女は写真部に入った。とはいえ、カメラ持ってない。

今年立ち上げたばかりの部活で、部長が「スマホのカメラでもいいよ」と言ってくれたので、スマホで写真撮ってる。


で、はじめての文化祭展示なのだが、今時なので現像するのではなく、プリントセンターで綺麗に印刷してもらったものを壁に並べてある。

スペースが狭いので、いろいろな写真をごちゃっと。なんとなく色別に分けてグラデーションを感じさせてあるのは悪くないアイディア。


でも、最初は印刷された紙をそのまま貼ろうとして、「そのまま壁に貼るのはなんか違う」と、段ボールに貼ってから壁につけたそうだ。

これが、段ボールの表面のうねりが出てしまい、なんとも貧相。段ボールの小口見えてるし。


時間がなかったので急ごしらえしてから、皆で反省して「来年はもう少し考える」らしい。




ところで、次女の高校は文化祭のしばらく前に「クラスTシャツ」を作ったのだが、こちらもひと悶着あった。

教員の指示が適切でないために、ありとあらゆる「違法案件」を踏み続けたのだ。


このページでも時々著作権がらみの話書いているのだけど、僕は「普通の人よりは」著作権に詳しいと自負している。

(弁護士ではないので、あくまでも普通の人よりは、どまりだ)


Tシャツデザイン案が上がってくるたびに、それは著作権違反だ、肖像権違反だ、商標法違反だ、と指摘していたのだが、そもそも教員に順法精神が欠如していた。全く根拠なく「大丈夫です」と言って、違法な道を突き進むのだ。


…結局、最初に依頼したTシャツ作成業者に「なぜか」そのデザインは受け付けられないと断られ、作ってくれるところを探して依頼したらしい。

断られた時点で、業者も法に違反している、と判断したのに、そこでデザインを変えるのではなく、請け負ってくれるところを探してでも作るという行動。


…で、クラスTシャツができてから、「クラスTシャツがらみのトラブルが続出している」と政府関連機関も注意喚起する事態になっていますね。

もう少し早く注意喚起してくれれば、学校での無駄なごたごたもなかっただろうに。


(いや、注意喚起が遅かったとかの問題ではなく、順法精神のない教員が問題なのだが)




ちなみに、次女の高校、昨年受験前に「視察で」文化祭に行った際、著作権違反が凄かった。

ポスターとか、有名キャラを真似て描いた絵だらけだったのだ。


ところが、今年の文化祭ではそうしたポスターはほぼ見られなかった。

どうも、クラスTシャツの件でいろいろ申し入れたので、教員側でも少し知財について学んだらしい。

Tシャツの時には間に合わなかったが、しばらく後の文化祭には活かされた、というわけ。


ちなみに、長女の学校は昔から知財に厳しい。

詳しい先生がいて、案の時点でその先生のチェックを通らないといけないのだそうだ。




さて、次女の文化祭の少し後の話。


2日ほど後に、僕が腹痛を起こした。気分が悪くなるほどの状態で、仕事を早退させてもらったほど。

でも、1日でだいたい治った。寝てるときに腹冷やしたかな…と思っていたら。


さらに2日後、長女も似た症状。その翌日には長男も。

あら、これ、そういうタイプの風邪だわ。


で、週末の土曜日に、夜になってから次女も同じ状態に。

…なのだが、8時過ぎに、すごい腹が痛いと苦しみ出した。涙が出るほど痛いらしい。


これはちょっと尋常ではないが、救急車を呼ぶほどの事かどうか…

でも、土曜日なので病院行くなら早くしないと、日曜日は休診の所が多い。


調べたら「救急車を呼ぶかどうか迷ったら電話」というサービスがあった。神奈川県のサービスだ。

そこに電話をかけて相談。症状を聞く限り、すぐ病院へ、と言われ、夜間診療している病院を紹介された。


その頃には本人が少し持ち直しており、自動車移動ならできるというので家の車で連れて行った。


病院に行ってから気分が悪くなり、戻してしまうこと2回。

血液検査や CT スキャンも行ったうえで、有意な異常は見られないので、家族もかかったということを考えて急性ウィルス性腸炎だろう、との診断。

この病気でそこまで腹痛になることはあまりないらしいが、全くないわけではないという。




1週間ほどたって、一昨日の話。

海の日の休日。


次女の高校では、1年の今のうちから志望大学決めとけ、と言われている。

少し前に次女もいろいろ調べて、自分の興味がある学問・偏差値レベルなどを勘案して1カ所志望校を決めていた。


で、それを決めたときに調べたら、海の日にオープンキャンパスをやるという。

その時点で「締め切りは昨日だった」のだが、確認したらキャンセルが出たようで申し込めた。


2名まで行けるそうなのだが、今年受験生の長女が、志望校ではないが見てみたいという。

娘二人で見に行った。


これは問題ないのだが、暑い日だった。

帰ってきてから、長女は「疲れた」と仮眠。

塾に行く時間になって起こしたのだが、様子がおかしい。目がうつろで受け答えが変。


熱中症だ、と判断して、氷嚢などで体を冷やす。経口補水液も作って飲ませる。

塾には休みの連絡を入れた。


しばらくして、顔には生気が戻ったが、高熱が出た。

本人寒いと言うが、毛布に入ってしまうと体の熱が逃げない。腹に薄いタオルケットをかけるくらいで、身体を冷やし続ける。


1時間くらいしたら、熱も引いてきた。とはいえ、37度を超えていたが。

熱中症は急に死ぬことがあるので、親の目の届くところで仮眠させて様子を見ていたが、夜中には大丈夫そうだと判断できる状態になった。


翌日(昨日)は学校の終業式で、休むとややこしいことになる状態だったが、熱も下がって問題なく行くことができた。




▲目次へ ⇒この記事のURL

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

その他

別年同日の日記

02年 免許更新

09年 ゲーム解禁

13年 ○○、Fonera やめるってよ。

14年 高柳健次郎の命日(1990)

15年 夏風邪

18年 LED 電球

19年 のみかい

22年 プリンタ購入


申し訳ありませんが、現在意見投稿をできない状態にしています

akamai の CDN  2025-07-02 18:11:48  コンピュータ

▲目次へ ⇒この記事のURL

先日、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 が使用できるようになっている。



▲目次へ ⇒この記事のURL

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

コンピュータ

関連ページ

Programming Tips

uniqlo のシャツ【日記 25/06/29】

別年同日の日記

03年 なかなか忙しくて

09年 夏風邪

14年 ダグラス・エンゲルバートの命日(2013)

17年 バーベキュー


申し訳ありませんが、現在意見投稿をできない状態にしています

uniqlo のシャツ  2025-06-29 19:36:21  コンピュータ 歯車

▲目次へ ⇒この記事のURL

uniqlo のシャツ

家族の買い物に付き合って Uniqlo に行ったら、イカレたデザインのシャツを売っていたので買ってきた。


Peace for All というキャンペーンで、このテーマでいろいろな人・企業にデザインしてもらったシャツを売っているようだ。


僕が買ってきたのは、Akamai という会社のコラボシャツ。店内ポスターではあいうえお順にデザインが並んでいたので、「アカマイ」は先頭だった。こんなイカレたデザインが先頭に描かれているとは。


Uniqlo も良く Akamai にコラボ依頼したな…と思ったら、後で調べたところこれは第2弾だそうだ。

しかし、第1弾は自分としては惹かれるデザインではなかったようなので、こちらでよい。




さて、この Akamai という会社、多くの人は知らないだろう。

そして、僕のようにネット関連の技術者であれば、知らなくてはならない会社だ。


Akamai は、ネットを裏で支える技術企業だ。

消費者にネット接続を提供するプロバイダも、コンテンツを提供する企業側も、そしてコンテンツを閲覧する利用者側も、全員が儲かって幸せになる仕組みを作り上げている。そしてもちろん、そのシステムを提供する Akamai も大儲けしている大企業だ。

これを、25年前の時点で、誰もがすぐに利用できる既存の仕組みの巧妙な組み合わせで作り上げた、ということが素晴らしい。


この仕組みが非常に面白いのだが…巧妙なので、説明すると非常に長くなる。一度書いてみたのだが、話の腰が折れすぎるので、今回は割愛することにした。

(いい説明があればリンクを…と思ったが、これまた技術的で巧妙なので、ちゃんと説明しているページを見つけられなかった。この話、面白いから機会があれば説明したい。)


後日追記

書きました。

akamai の CDN




さて、そんな技術会社の作ったシャツは、技術オタクが泣いて喜ぶようなデザインになっている。


写真を拡大すればわかるが、暗号のような訳の分からない文字列だ。

すでに解読した blog 等もたくさんあるが、暗号部分の解読どまりで、全体の構造を解説しているページは見つけられなかった。

ちょっと解説しておこう。


書かれている内容は以下のようになる。

(改行位置などは T シャツデザインと違うが「正しい」位置にいれてある。そのため、このままコピペすれば実行可能ファイルになる)


#!/bin/bash

eval "$(base64 -d <<< 'IyEvYmluL2Jhc2gKCiMgQ29uZ3JhdHVsYXRpb25zISBZb3UgZm91bmQgdGhlIGVhc3RlciBlZ2chIOKdpO+4jwojIOOBiuOCgeOBp+OBqOOBhuOBlOOBluOBhOOBvuOBme+8gemaoOOBleOCjOOBn+OCteODl+ODqeOCpOOCuuOCkuimi+OBpOOBkeOBvuOBl+OBn++8geKdpO+4jwoKIyBEZWZpbmUgdGhlIHRleHQgdG8gYW5pbWF0ZQp0ZXh0PSLimaVQRUFDReKZpUZPUuKZpUFMTOKZpVBFQUNF4pmlRk9S4pmlQUxM4pmlUEVBQ0XimaVGT1LimaVBTEzimaVQRUFDReKZpUZPUuKZpUFMTOKZpVBFQUNF4pmlRk9S4pmlQUxM4pmlIgoKIyBHZXQgdGVybWluYWwgZGltZW5zaW9ucwpjb2xzPSQodHB1dCBjb2xzKQpsaW5lcz0kKHRwdXQgbGluZXMpCgojIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0CnRleHRfbGVuZ3RoPSR7I3RleHR9CgojIEhpZGUgdGhlIGN1cnNvcgp0cHV0IGNpdmlzCgojIFRyYXAgQ1RSTCtDIHRvIHNob3cgdGhlIGN1cnNvciBiZWZvcmUgZXhpdGluZwp0cmFwICJ0cHV0IGNub3JtOyBleGl0IiBTSUdJTlQKCiMgU2V0IGZyZXF1ZW5jeSBzY2FsaW5nIGZhY3RvcgpmcmVxPTAuMgoKIyBJbmZpbml0ZSBsb29wIGZvciBjb250aW51b3VzIGFuaW1hdGlvbgpmb3IgKCggdD0wOyA7IHQrPTEgKSk7IGRvCiAgICAjIEV4dHJhY3Qgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUKICAgIGNoYXI9IiR7dGV4dDp0ICUgdGV4dF9sZW5ndGg6MX0iCiAgICAKICAgICMgQ2FsY3VsYXRlIHRoZSBhbmdsZSBpbiByYWRpYW5zCiAgICBhbmdsZT0kKGVjaG8gIigkdCkgKiAkZnJlcSIgfCBiYyAtbCkKCiAgICAjIENhbGN1bGF0ZSB0aGUgc2luZSBvZiB0aGUgYW5nbGUKICAgIHNpbmVfdmFsdWU9JChlY2hvICJzKCRhbmdsZSkiIHwgYmMgLWwpCgogICAgIyBDYWxjdWxhdGUgeCBwb3NpdGlvbiB1c2luZyB0aGUgc2luZSB2YWx1ZQogICAgeD0kKGVjaG8gIigkY29scyAvIDIpICsgKCRjb2xzIC8gNCkgKiAkc2luZV92YWx1ZSIgfCBiYyAtbCkKICAgIHg9JChwcmludGYgIiUuMGYiICIkeCIpCgogICAgIyBFbnN1cmUgeCBpcyB3aXRoaW4gdGVybWluYWwgYm91bmRzCiAgICBpZiAoKCB4IDwgMCApKTsgdGhlbiB4PTA7IGZpCiAgICBpZiAoKCB4ID49IGNvbHMgKSk7IHRoZW4geD0kKChjb2xzIC0gMSkpOyBmaQoKICAgICMgQ2FsY3VsYXRlIGNvbG9yIGdyYWRpZW50IGJldHdlZW4gMTIgKGN5YW4pIGFuZCAyMDggKG9yYW5nZSkKICAgIGNvbG9yX3N0YXJ0PTEyCiAgICBjb2xvcl9lbmQ9MjA4CiAgICBjb2xvcl9yYW5nZT0kKChjb2xvcl9lbmQgLSBjb2xvcl9zdGFydCkpCiAgICBjb2xvcj0kKChjb2xvcl9zdGFydCArIChjb2xvcl9yYW5nZSAqIHQgLyBsaW5lcykgJSBjb2xvcl9yYW5nZSkpCgogICAgIyBQcmludCB0aGUgY2hhcmFjdGVyIHdpdGggMjU2LWNvbG9yIHN1cHBvcnQKICAgIGVjaG8gLW5lICJcMDMzWzM4OzU7JHtjb2xvcn1tIiQodHB1dCBjdXAgJHQgJHgpIiRjaGFyXDAzM1swbSIKCiAgICAjIExpbmUgZmVlZCB0byBtb3ZlIGRvd253YXJkCiAgICBlY2hvICIiCgpkb25lCgo= ')"

PEACE FOR ALL


これは UNIX のシェルスクリプトだ。

ファイルに chmod +x で実行属性を与えれば実行できる。


先頭行は、bash を使用して実行できる、という、OS に対する指示だ。

2行目が長いのだが、eval している。これは、bash でその次の文字列を評価せよ、という命令だ。

eval の対象となる部分は、 " " で括っている。


さて、「その次」だが、謎の文字列に見える。でも、評価するのはこの文字列ではない。


$( で始まっているが、これは「外部コマンドを実行して、その結果を返せ」という指示だ。

(2行目の最後付近に、対応する閉じ括弧がある)


評価対象は、この外部コマンドが返した結果である。


そして、外部コマンドが base64 -d だ。これは、base64 形式でエンコードされた文字列を、デコードせよ、という指示。

謎の文字列は、base64 エンコードされたもので、後で詳細を書く。


3行目の PEACE FOR ALL は、命令ではない。キャンペーンに合わせて書かれているメッセージ。

しかし、ここに命令ではないものが入っていても大丈夫なようになっている。こちらも詳細は後で。




さて、base64 部分をデコードしたもの。


#!/bin/bash


# Congratulations! You found the easter egg! ❤️

# おめでとうございます!隠されたサプライズを見つけました!❤️


# Define the text to animate

text="♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥PEACE♥FOR♥ALL♥"


# Get terminal dimensions

cols=$(tput cols)

lines=$(tput lines)


# Calculate the length of the text

text_length=${#text}


# Hide the cursor

tput civis


# Trap CTRL+C to show the cursor before exiting

trap "tput cnorm; exit" SIGINT


# Set frequency scaling factor

freq=0.2


# Infinite loop for continuous animation

for (( t=0; ; t+=1 )); do

# Extract one character at a time

char="${text:t % text_length:1}"

# Calculate the angle in radians

angle=$(echo "($t) * $freq" | bc -l)


# Calculate the sine of the angle

sine_value=$(echo "s($angle)" | bc -l)


# Calculate x position using the sine value

x=$(echo "($cols / 2) + ($cols / 4) * $sine_value" | bc -l)

x=$(printf "%.0f" "$x")


# Ensure x is within terminal bounds

if (( x < 0 )); then x=0; fi

if (( x >= cols )); then x=$((cols - 1)); fi


# Calculate color gradient between 12 (cyan) and 208 (orange)

color_start=12

color_end=208

color_range=$((color_end - color_start))

color=$((color_start + (color_range * t / lines) % color_range))


# Print the character with 256-color support

echo -ne "\033[38;5;${color}m"$(tput cup $t $x)"$char\033[0m"


# Line feed to move downward

echo ""


done


また bash のシェルスクリプトだ。


つまりは、シェルスクリプトを、そうと判らなように巧妙に base64 で隠しているだけで、シャツに書かれた元のシェルスクリプトは、上記のスクリプトを動かすためのランチャーに過ぎない。


で、ここまで解読できてしまえば…あとは実行して、としか言いようがない。

このプログラム自体は、それほど面白い動作をするわけではなく、ただカラフルで面白おかしい形に PEACE FOR ALL の文字を書き続けるだけだ。


2行目で起動する上のプログラムは、for 文で「終了条件のない」ループを行っている。

終了条件がないので、終わることはない。CTRL + C で停止するまで止まらない。

そして、CTRL + C した時には、元の(base64 が書かれた)プログラムも停止してしまう。


つまり、元のプログラムの最後の行(3行目)は絶対に実行されない。


元プログラムの3行目には PEACE FOR ALL と書いてあり、これは命令ではないと先に書いた。

しかし、この仕組みにより、命令でないものが書かれていても、特にエラーにはならない。


▲目次へ ⇒この記事のURL

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

コンピュータ

歯車

関連ページ

akamai の CDN【日記 25/07/02】

別年同日の日記

06年 訃報

12年 続々々おたふく

13年 髪ゴム

14年 DAISY DAISY

18年 関東梅雨明け


申し訳ありませんが、現在意見投稿をできない状態にしています

wix velo  2025-06-24 09:57:01  コンピュータ

▲目次へ ⇒この記事のURL

先日来書いている町内会ホームページの話の続きだ。


wix.com というサービスで町内会のホームページを作っているのだが、これを選定したのは前任者。

この前任者も、隣の町内会が使っている、というお勧めで選んでいる。


隣の町内会の人も、会社で使っていたから選んだそうだ。

このサービス、基本的には「数ページの WEB サイトを、ワープロ感覚で作れる」といった感じのものだ。


PC とスマホを自動認識してコンテンツの出しわけもやってくれる。

コンテンツ内容は同じだが、2つのテンプレートを使い分けられる、という感じだな。

テンプレートも、PC 用を作ったらある程度自動変換してくれて、スマホ用に微調整すればよい。


あくまでも「テンプレート」が違うもので、CSS で見た目を変えるレスポンシブデザインではない。

ちょっと古いやり方なのだが、初心者にレスポンシブデザインの概念はわかりにくいので、これでよいのかもしれない。




前任者はここら辺まで作ってくれていたのだが、もともと「数ページのサイトを」作るようなもので、日々の更新がしにくい。


wix.com にはブログの作成機能があるので、僕がブログを追加した。

ブログ部分は、サイトデザインとは別の UI で文面だけを作ると、自動的にページが作られるような形だ。

つぎはぎしたような感じで少しわかりにくく、前任者はブログを使う発想にはなっていなかった。

しかし、記事の更新を考えるとブログ形式の方がやりやすい。


実は、町内会には非常に古いサイトがあり、ずっと昔の担当者が作ったものだった。

これが止まったままになっているのだが、perl CGI で作られた「会館予定予約表」の公開ページがあり、この機能が重要。


町内会長から、今のページに作れるかと聞かれていたのだが、wix.com では perl CGI は動かせない。

しかし、今の時代 Javascript がある。wix にも、ページ周囲に影響を与えないよう iFrame のサンドボックス内で Javascript を動かす機能があるので、これで何とか…と思っていた。


でも、wix には velo という仕組みがあり、もっと深い部分で Javascript を使えた…というのが前回まで書いた内容。




さて、velo を知ったのは、こちらのページで。


WixStudioでVeloを使う


WixStudio となっているが、これはホームページデザイン会社がお客さんの為に使用する wix の亜種。

中核部分は変えず、デザインのための UI を「多少馴れが必要だが、効率の良い」別の形式に変えたもののようだ。


wix でも同様に velo を使える。

velo では、wix の中にある DB 等も使用して、プログラムでページを自動生成できる。


この場合、wix で生成したページはテンプレートとして使われることになる。

テンプレートに対して velo で DB 内のコンテンツ内を抽出して流し込む、という感じだ。


velo は全体の仕組みに対して作られた名前で、言語としては Javascript だ。

ライブラリが整えられていて、jQuery に類似した方法でテンプレート内の埋め込み位置を特定したりする。



先にあげたページは、blog で書かれているが何回にも分かれている連載形式。

ある程度読み進むと、「今日は何の日、を表示する」というような内容があった。


僕のやりたいことは、日付ごとに会館の予約状況を表示したい。結構違うが、類似性があると言えばある。

町内会には様々な行事予定もあるし、「今後の行事予定」を表示する機能を作って実験してみよう。


…と思ったあたりで前回の日記を書いた。



「今日は何の日」の改造として表示をするのは、比較的すぐできた。

そこから、関連するページにリンクを張れるようにしたり、詳細を表示できるようにしたり改造して、町内会ページの一番最初、目につきやすいところに「今後の行事」を表示できるようにした。


今後、と言っても全部は書かない。今後3回分の予定だけ。

そして、開始時刻や場所など簡単な概略も、あれば表示する。

さらに細かな情報が書かれたページがあれば、データとして URL を入れておくと、自動的にリンクする。


町内会の行事、回覧板で回しても、1か月以上先の予定だから忘れちゃう人多いんだよね。

(回覧板が回るのに1か月近くかかる組もあり、さらに回覧板を回せるタイミングが月に1回なので、「来月の行事」を回覧するのが通常)




それほど複雑ではないプログラムだったが、これは「Hello, world」みたいなものだ。

DB を扱う仕組み、画面表示を作る仕組みは十分理解できた。


velo で使用できる関数ライブラリ(API)は、こちらのページ でマニュアルが読める。英語だけど。


しかし、言語の入出力作法が理解できて、関数マニュアルがあれば、十分な情報だろう。

もう、何でも作れそうな気がする。(言い過ぎ)


▲目次へ ⇒この記事のURL

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

コンピュータ

別年同日の日記

02年 DJB

13年 セミの幼虫

15年 若者の恋愛観

15年 結婚と経済

16年 【訃報】長谷川五郎さん

21年 温泉卵


申し訳ありませんが、現在意見投稿をできない状態にしています

続・町内会ホームページ  2025-06-18 14:30:43  コンピュータ

▲目次へ ⇒この記事のURL

以前町内会のホームページ作ってるという話を書いた。


ひとまずは、機能が揃っていないが公開していた。

だって、全部できてから、なんて言っていたらいつ公開できるかわからないもの。

ネットの世界はβ版で公開して、走りながら修正すればいいのだ。そういうものだ。


前回の記事の最後に書いたが、できていない機能というのは「町内会館の予約閲覧」だった。

いつの日に空きがあるか、月別のカレンダーで調べられる。

予約は電話してしないといけないのだけど、いつ空いているか調べられるだけでもありがたいのだ。


これ、以前のページでは CGI (サーバ側でプログラムを動かす仕組み)で動いていた。

でも、今時 CGI 設定できるサーバーなんて特殊だからね。特に、今回借りている wix.com は商用 CMS (コンテンツ・マネジメント・システム。HTML を知らないでも、ファイル単位で管理しなくても、 WEB ページが作れたりするプログラムの総称)だから、CGI なんて動かせない。


wix.com には、HTML 内に iFrame でサンドボックス化して Javascript コードを埋め込む機能がある。

これ使って同等機能をプログラムするしかないかな、と思っていた。


その場合、データを置く場所が問題になる。

Google spread sheetには、API でデータの読み書きをする機能があるので、それでデータ置き場の代用をするか…などと考えていた。




会長から「町内会館の予約閲覧は新ページに入れられないの?」と聞かれて、あれは機能的に無理なんですよ…と説明する。

そのまま持ってくることは無理だけど、何とかしたいとは思ってます。でも時間がかかります、と。


このやり取りをしてから、重い腰を上げて取り掛かろうとした。


この調査段階で、別の事に気づく。

wix.com に Javascript を仕込むのは、iFrame を使ったコード埋め込み以外に「velo」という別の仕組みがある、というのだ。


Javascript のプログラムを仕込む、なんていうのは、わからない人に見せれば混乱するだけ。

だから、この機能は丁重に隠されていた。知っている人しか使えない。


そして、この機能を使う場合には、wix.com 内で用意してある DB も使えるのだ。簡易的な機能に限定されるけど。




使ってみて分かった。


この仕組み、wix.com のベース部分の機能を、安全なようにオブラートに包んで公開したもののようだ。


理解するほど、wix.com 内の各種機能… blog やコメント機能、商品販売などが、じつは用意された DB と Javascript の組み合わせで作られているのだ、と分かる。


ざっくりと言えば、仕組みはこうだ。

DB は内部的に SQL DB を使用しているようだが、ユーザーにはそこまで見せない。文字列をプライマリーキーとして、key value store のように動作する。


ただし、特定カラムで検索することもできるし、ソートして出力もできる。ここら辺は key value store ではなく SQL 的。


そして、画面を書き換えるのは jQuery 的に行う。

jQuery がもう WEB ページ作成としては古臭いフレームワークだが、jQuery そのものではなく、wix で「類似品」を作ったもののようだ。


ともあれ、そうした環境は使える。これは、wix.com の通常機能で作成したページの中で、必要箇所にデータを埋め込んだりするのに使用するものだ。


DB 操作と HTML 操作には、用意された API を使用する。他にもいろいろな API があったが、詳細にあまり目を通していない。

あとは、普通の Javascript だ。


永続データの読み書きと、画面が自動で作成される CMS 内での、画面への割り込み方が示されたのだ。

あとは普通の Javascipt 、というのは、つまりは「なんでもできる」ということ。これほど心強いことがあるだろうか。


ひとまず、まだ練習がてらに「直近の町内イベント」を表示する機能を作ってみている。

これで、DB から絞り込んだデータを読み出して、画面に表示することはできるのだ。

これがうまく行けば、月ごとの利用予約表の読み書きだって、大して変わらない。




惜しむらくは、他に類似の悩みを持っている人がいても、プログラムをパッケージ化して渡せないことかな…


CMS が生成する画面に出力する手段として、CMS が定めた HTML エレメントの ID をプログラム内に使用する必要があるのだ。

画面構成が違う環境では、この ID も変わってしまう。プログラムだけ人に渡しても役立たない。


あとは… wix.com は、初心者向けによくできてはいるのだが、動作が遅いんだよね。

なんかもっさりしている。


あと、スマホか PC かを見極めて出力を変えているようだ。

同じ出力のまま、 CSS でレイアウトを調整するような、レスポンシブでない。


ここら辺が古臭い。

このやり方だと、キャッシュサーバー使えないんだよね。


古臭い、というのは「歴史がある」ことの裏返しでもあるのだけど、ひとまずはこの環境で続けることが大切なので、折り合い付けていきます。


▲目次へ ⇒この記事のURL

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

コンピュータ

別年同日の日記

02年 レタスその後

04年 やっぱ駄目でした

04年 検索機能

13年 鶏肉と夏野菜のトマト煮込み

14年 追悼:ダニエル・キース


申し訳ありませんが、現在意見投稿をできない状態にしています

【訃報】ビル・アトキンソン  2025-06-09 12:23:59  コンピュータ 歯車 今日は何の日

▲目次へ ⇒この記事のURL

ビル・アトキンソン氏が6月5日にすい臓がんで亡くなられたそうです。

まだ74歳。死ぬには早すぎます。


Apple 社のプログラマで、初期の Mac の環境に寄与した人です。

Mac の描画ライブラリである Quick Draw を一人で書いています。


Mac の元となる Lisa というマシンが、Alto というマシンを参考に作ったのは有名な話です。

ただ、Alto にはややこしい描画を支援するハードウェアがあった。


これを「全部ソフトでやっている」と勘違いしたビル・アトキンソンは、必要な機能がすべて揃った QuickDraw を作り出すのです。


ウィンドウを描画しようとしたときに、そのウィンドウが別のウィンドウに一部分隠されていたら、隠されている部分は描かないでそれ以外の部分を描きます。

これ、今では当たり前ですが、物凄く面倒な処理です。ウィンドウによる操作、というものを始めて市販マシンで実現しようとした Lisa では、この面倒な処理をどうにかする必要がありました。


それを解決するプログラムを作ったのが QuickDraw です。


他にも、ジョブズのこだわりで「長方形を描画するときに、角を丸くしたい」という要望に応えています。

元となった Alto は、ボタンなどはすべて長方形でした。でも、現実のボタンなどは角張ったものなどあまりない。角が優しい丸みを帯びているのが普通です。

そこで、「角丸矩形」(Round Rectangle)を描画する機能を作ったのです。


また、Quick Draw が非常に優れている点として、「数学的に正しい描画が行われる」点があります。

通常のグラフィックライブラリでは、画面のドットを指定して「どこからどこへ」線を引く、などと命令を出します。

しかし、Quick Draw では、仮想の空間に描画を行い、それをどのように画面に反映するかを別途指定します。


このため、拡大縮小なども自由ですし、画面とは違う解像度を持つ、プリンタなどへの出力も綺麗に行えます。


現在の iPhone にもこの概念は受け継がれており、気軽に画面を拡大・縮小できます。

ただ、現在の iPhone は Quick Draw ではなく、その後同じ概念で開発された PostScript になっています。




ビルは Quick Draw を作っただけでなく、それを使用した「Mac Paint」も作っています。

まだ Mac 以外にマウスオペレーションのコンピューターがなかった時代に、「マウスの使い方」を伝えるためのソフトでもありました。


もちろん、グラフィックソフトですから、QuickDraw の機能を存分に引き出しています。


さらに、伝説のソフトウェアともいえる、HyperCard を作成し、すべての Mac で使えるように無償提供しています。


これは、ひと悶着合ったらしいです。ビルは自分が作ったソフトを多くのユーザーに使ってほしくて無償を主張し、ジョブズは会社の製品なのだから、有償を主張する。

最終的に「無償提供しないなら会社を辞める」とビルが言ったため、ジョブズが折れています。



さて、この HyperCard の何が伝説かというと、体験していない人にはちょっと説明しずらいのです。


まず、HyperCard はカード型データベースです。

画面サイズの「カード」を作り、そこにありとあらゆるものを格納できます。文字に限らず、グラフィックでも貼り付けられます。

Mac の Copy & Paste 機能を駆使して、自由にデータを張り付けておけますし、他のソフトにコピペできます。


画像は無理ですが、文字列なら検索もできましたから、ちゃんとデータベースとして機能します。

これだけであれば、難しい前提知識なしに誰でも使えました。



そして、貼り付けてある「部品」にプログラムを書き込むことができました。

プログラムがあると、部品がクリックされたときにプログラムが実行されます。


これにより、クリックされると「次のページを表示する」とか、「隠されていた部品を表示する」とか、「音を再生する」とか…とにかくいろいろできたのです。


いろいろできると当然遊びたくなります。

実は、ここで書く「プログラム」は非常に単純なもので、誰でもすぐ覚えられるレベルなのですが、簡単なゲームを作るには十分でした。

実際、 HyperCard で書かれたゲーム、というのは Mac では非常に人気があったのです。


ちなみに、「HyperCard以前」のプログラム環境では、ボタンを押したら特定のプログラム実行、ということをするのに、何十行ものプログラムを書く必要がありました。

まず画面にボタンを描いて、そのボタンをクリックするための仕組みを作って、クリックされたら動くプログラムを作って、としないといけない。



データベースとして画像を扱い、その画像を「ボタン」と見立ててプログラムを与え、ボタンを押したら実行される、という考え方が大発明で、この考え方は現在他のプログラム言語にも取り入れられています。


また、ボタンを押したことがそのボタンが置かれているカードにも伝わり、カードの束(スタック)にも伝わり…

プログラムはボタン部品だけでなく、スタックなどにも書けました。

こうした「上位の部品に出来事が伝わる」という仕組みも、今のプログラム言語に取り入れられています。


現在、一番 HyperCard の概念を引き継いでいるのは、ブラウザ上で動く Javascript ではないかと思います。

当ページでも Javascript は使用していますし、Web 上の Javascript は多くの人がお世話になっているはずです。

HyperCard がなければ、こうした環境は作られなかったでしょう。


ただ、Javascript が同じような環境か、というとそれは違います。

Javascript は結構プログラム上級者向け。誰でも気軽に楽しめる、というものではありません。


HyperCard では、もっと簡単・気軽にプログラムを作れました。

そうした環境を作り出した、というのが、ビル・アトキンソンの突出した才能でした。




話が前後しますが、Mac 以前の Apple// のころに、Apple 版 Pascal を作ったのもビル・アトキンソンです。


当時は BASIC がプログラム言語として普及していましたが、次は Pascal 、と誰もが思っていました。


実際に普及したのは C 言語でしたが、Pascal とは兄弟のような関係にあります。

(どちらも Algol を手本に作られた言語)


ただ、Pascal の方が初心者でも扱いやすい仕組みがありました。

だから、BASIC の次は Pascal 、と考えられていたのです。


でも、コンピューターがホビーストだけのものではなくなり、広く普及すると、プログラムする人は激減します。


コンピューターが普及しておらず、市場が小さなときには、市販ソフトも多くはありませんでした。

欲しいものがあったら、プログラム言語を覚えて自分で作るしかなかった。


でも、普及したら市販ソフトが沢山作られるようになりました。

多くのユーザーは、ただその市販ソフトを使うだけでいいのです。プログラムを作る必要はありません。


そして、そうした「市販ソフト」を作る人の間では、Pascal よりも C の方が支持されます。

Pascal は、初心者の為に速度効率よりも扱いやすさを優先しているところがありますが、C は高速に動作します。

代償として「初心者向けではない」のですが、市販ソフトを作るような人には問題ありませんでした。



それはさておき、ビル・アトキンソンは、Apple // の Pascal の為にグラフィックライブラリも作りました。

Apple // は画素も荒く、色の扱いにも制限がありました。グラフィックライブラリでは、そうした制限を気にせずに絵を描き、内部で Apple// の制限にあった形に変換して描画する、というような仕組みがあったそうです。


これがのちの QuickDraw の原型になっています。


Mac の初期の内部 ROM が、Pascal を前提とした形で作られているのも有名な話です。




HyperCard の後、ビル・アトキンソンは Apple 社内で「Knowledge Navigator」の実現化プロジェクトに携わります。


1980年代末、Apple はウォズもジョブズも退社した後で、どちらに向かえばよいのか示せる人がいませんでした。

そこで、社長のスカリーがぶち上げたのが Knowledge Navigator という大構想。

自然言語で会話することでコンピューターに指示を与え、コンピューターは個人の専属秘書のようにふるまいます。


その当時の技術ではとてもできない、と分かっているのだけど、コンピューターがみんなの暮らしを豊かにするためには、こうした方向に向かわなくてはならない、という「意識の共有」を、社内のみならずコンピューター業界に対して行ったのです。


実際、その後長い時間をかけ、コンピューターはその方向に進んできました。

でも、Apple 社としてはそんな長期計画は儲からない。実現化プロジェクト1990年には中止になります。


そこでビル・アトキンソンが興したのが「General Magic」という会社。

Apple での研究の続きを行い、個人のための「秘書」となるコンピューターを作ろうとしました。


まだインターネットが普及する前の事ですが、必要ならネットワーク上で最新の情報を集め、ユーザーが「知りたいこと」に応えてくれる。


端末の OS は MagicCap と呼ばれ、ビルがほぼ一人で書き上げたそうです。

そして、この MagicCap は、先に書いたようにネットワークを前提としていました。端末内でもプログラムは動かせるが、必要に応じてネットワークにもプログラムの実行を依頼する。


UNIX 等の実験的なネットワークではそうした実行例はありましたが、市販する商品としては非常に先進的。

しかし、当時の多くの人は、こうした概念を知りません。製品としてわかりにくいのです。


そこでビル・アトキンソンが作った造語が「Cloud」。

雲、という意味ですが、ネットワークの向こうの、なんだかもやもやした部分に、見えないけどいろいろな情報がある。

そことやり取りすることで、必要なことを実現する、というのです。


今では当たり前に Cloud って使われてますね。ビル・アトキンソンによる造語です。


この OS は、協力各社から次々商品化されます。

日本でも Sony から MagicLink の名前で発売されています。


でも、時代が早すぎました。

通信はまだ電話回線に頼る時代。手元の端末と遠隔サーバの協調動作、というのは、通信速度がネックになります。


結局、発売はしたものの非常に遅くて使いづらく、しかも通信料金がかさむ、というなんとも使いにくいものだったのです。


しかも、商品的に失敗だったため、対応サーバは短期間の後に次々と閉鎖。

端末を購入した人も、サーバーがなくては使い続けることができません。



今では各社が同様のことを実現していますが、「技術的に実現可能」な時代になってからも、GeneralMagic 社の特許に抵触するため提供できない、ということもあったとか。

各種特許が切れたのが 2010年ごろ。その頃から Cloud 技術が急に普及してきたのも、そういう側面があったようです。


構想が早すぎて、時代が追いつくのに 20年かかってしまったのです。




ビル・アトキンソン。

当ページを書き始めたころの、僕の「ヒーロー」の一人でした。


ご冥福をお祈りします。


▲目次へ ⇒この記事のURL

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

コンピュータ

歯車

今日は何の日

別年同日の日記

02年 最終戦略

05年 spring has come

05年 3ヶ月点検

13年 WEB上でのドット絵の拡大

16年 8086 発表日(1978)

17年 計算機の同人誌

19年 新マシンセットアップ中

23年 大学時代の夢日記


申し訳ありませんが、現在意見投稿をできない状態にしています

マリオカートワールド  2025-06-07 10:01:13  コンピュータ 家族

▲目次へ ⇒この記事のURL

僕はまだ遊んでないのだけど、長男が遊んでいるのを後ろから見ていて思ったこと。

(長男は小学生のころに、すでに15年前のゲームだったダブルダッシュ!を遊んでからこのシリーズが好き。マリオカート8もやり込んでる)


今度のマリカー、AM1 研の影響受けてない?


…いや、そんなことあるわけないので与太話なのだけど、まぁ聞いてくれ。




今回のゲームの概要発表があった時に思った。

レースゲームなのにオープンワールドらしい。それってHarley-Davidson & L.A. Riders


知らない人の為にざっくり書くと、「オープンワールド」という概念は、セガの作った「シェンムー」が発祥、とされている。

小さな町ではあるが、丸ごと作り込んで、その中で時間で生活する人たちを作り、自分が操作する主人公は自由に行動できるようにしたのだ。


でも、同じセガの中で、もっと先にそういうことをやったゲームがあった。それが先に書いた Harley-Davidson & L.A. Riders だ。(長いので以下 L.A. Riders と表記)


このゲームでは、名前の通り L.A. …ロサンゼルスの街を丸ごと作り込んだ。

その中で、バイクを駆って自由に行動できる。


とはいえ、業務用だったので短時間で遊ばせる必要がある。

できるのは「ランダムに提示されるチェックポイントを回る」というレースゲームだった。


でも、これであるていど「大きな街を作り込む」技術にめどが立ったのだ。




今回のマリオカートはオープンワールドになっており、自由に走り回れる。

…とはいえ、普通のレースの場合は、オープンワールドの一部区画を区切ったり道を閉鎖したりして、レース用に整備している、という形になる。


それでも、今までのような「周回コース」ではなく、次々と景色が変わる長距離を走ったりできるのだけど。



本当に自由に走り回れるのは「フリーモード」だ。


家庭用ゲームなので時間制限なく走れるが、時々ミニゲームが始まるスイッチを見つける。

押すと、チェックポイントが示されて、制限時間内に回るミニゲームが始まったりする。


車でチェックポイントを回るのだから当然そうなるだろう、という感じなのだが、L.A. Riders を知っている身としては、そっくりに見える。




もう一つ、こちらは見てから思ったことだが、「クールライダーズ」も感じる。

一つのレース場を走るようなゲームではなく、世界各地を走り抜けていく大レース。

「マリオカートワールド」も、名前の通り世界各地をイメージしたステージを駆け抜けていく。



「ライダーズ」とついている通り、バイクで走るレースゲームだが、余り真面目なものではない。

バカバカしいと笑いながら遊ぶタイプ。パーティゲームだと思っていい。


小さな障害物に当たると、ポコポコと飛んでいく。

レースゲームだから障害物をよける方が良いのだが、当たっても大した問題にはならないのだ。


今度のマリオカートも、街の中の街頭やベンチ、ガードレールなど、当たると飛んでいくのだ。

ガードレールがそんなに簡単に飛んだら歩行者の安全守れないでしょ、と思うが、自由に走ることを優先しているのだろう。



そして、やたらとジャンプする。

車やバイクなのに、ちょっとした段差や壁を使って、すぐにジャンプできるのだ。これも、オープンワールドを自由に走るために必要なのだろうが、ジャンプの際に、いちいちポーズを決めてアピールできる。


…これもクールライダーズなんだよね。

クールライダーズ、レースゲームなのにやたらと跳ねまわり、ジャンプするとポーズを決めて「Cooool!!」とか表示された。




他にも WING WAR っぽさもある。

これも AM1 研のゲームで、飛行機の空中戦を行うゲームなのだけど、障害物にぶつかっても「転ぶ」だけなんだよね。


マリオカートワールドも、マリオカート8からの引継ぎで「空を飛べる」。

でも、何かにぶつかっても転んで落ちるだけ。事故にはならない。



…というわけで、話半分に聞いてもらっても構わないのだが、1990年代後半の セガ AM1 研のテイストを感じるのだ。

よく知っている人には納得してもらえると思うが、なにぶん古すぎる話だし、上記にあげたゲームを全部知っている人がどれだけいるかわからない。



別に真似したわけではなく、「似たようなゲームを作っていたら、同じ結論にたどり着いた」だけだとは思うのだけど、すごく懐かしさを感じたので主張したかったのでした。


▲目次へ ⇒この記事のURL

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

コンピュータ

家族

別年同日の日記

02年 カエル

16年 アラン・チューリング命日(1954)、ドナルド・デービス誕生日(1924)


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

97000

-- follow --




- Reverse Link -