2009/06/23

話題の本

うっかり
『1Q84』村上春樹(新潮社) :阿部公彦の書評ブログ

を読んでしまった。失敗した。買いたいと思わないようにちょっと注意していたのに気になって仕方ない。

Amazon Web サービスの署名認証 - with Ruby 1.9.1

Amazon Product Advertising APIの認証の件
Amazon Product Advertising API (認証対応)

を読んで自分のID で試してみました。OS X のRuby 1.8.6 でちゃんと動きました。うれしい。
OS X 10.5.7 のOpenSSL のバージョンは古いので


dig = HMAC::SHA256.digest(secret_key, msg)

で試しました。

でも ruby 1.9.1 で動かすと


ruby-openid-2.1.6/lib/hmac/hmac.rb:94:in `ensure in digest': undefined method `reset_key' for nil:NilClass (NoMethodError)

となります。

あちこちみたあげく livedoor.com 経由で
amazon-auth-proxy
をみつけたのでこちらも手元で試してみました(cgi ぬきで)。module が拡張されていたのでもしや?と思いましたがやっぱり Ruby 1.8.6 では動くけどRuby 1.9.1 だと同じようなエラーがでて動きません。

エラーが指し示すライブラリ ruby-openid/lib/hmac/hmac.rb の中身をみて考えてみました。
reset_key メソッドはちゃんと存在しているし現にRuby 1.8.6 では動くので、一体なにがnil なのか?と少し書き足してエラーを再現してみたところ...


def set_key(key)
...
  for i in 0 .. key.size - 1
  key_xor_ipad[i] ^= key[i]
...

このメソッドにある ^= の部分でエラーになっていることがわかりました。Ruby 1.8.6 で動かすと nil じゃないけど、Ruby 1.9.1 だとnil になる。これはなぜだろう?あちこちに p をつけて実行してみて気づいたのは Ruby 1.9.1 の string[0]と Ruby 1.8 の string[0] の解釈が違うらしいということでした。

プログラミング言語 Ruby
p.59 によると
Ruby 1.8 の string[0]は、ASCII
Ruby 1.9 の string[0]は 文字列
とありました。

key[i]は、key に納められている文字列の1文字目の ASCII がかえってくる前提で書かれているけど、Ruby 1.9.1 で動かすと文字列そのもの("m"とか)がかえってきてしまう。これが nil になる原因なんだとわかりました。

...ということでいろいろ試しつつRuby 1.9.1 で動くものを作ってみました。とりあえず Amazon の認証にはクリアできましたが記述については自信がありません。

# 今回の Amazon からの宿題は Ruby 1.9.1 のString に関する知識を強制的に深める効果がありました。不幸中の幸いというかなんというか感謝。


# coding: utf-8

# Library:
# http://rubyforge.org/projects/ruby-openid/
# Original Page:
# http://github.com/tdtds/amazon-auth-proxy/blob/035bd4de90c4223994046fb489d7ccded566a879/amazon-auth-proxy.cgi
# http://diaspar.jp/node/239

# 使用したRubyのバージョン
# ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9.7.0]

# Ruby 1.9.1 のgem は使ってない為ライブラリの絶対パスを push している。
# gem19 unpack ruby-openid-2.1.6.gem で解凍後のパス
oid = '/path/to/ruby-openid-2.1.6/lib'
$LOAD_PATH.push(oid)

require 'uri'
require 'time'
require 'openid'
require 'rexml/document'

module HMAC
 # Original
 # => http://github.com/tdtds/amazon-auth-proxy/blob/035bd4de90c4223994046fb489d7ccded566a879/amazon-auth-proxy.cgi
  # Ruby 1.9.1 用に改造してみる。
  IPAD = "\x36" * 64
  OPAD = "\x5c" * 64
  module_function
  def sha256( key, message )
    ipad, opad = [],[]
    # バイトごとにArrayに追加
  IPAD.each_byte{|x| ipad << x }
    OPAD.each_byte{|x| opad << x}
    ikey = ipad
    okey = opad
    akey = []
  # うけとったkey もArrayへ
    key.each_byte{|x| akey << x}
    key.size.times{|i|
      ikey[i] = akey[i] ^ ipad[i]
      okey[i] = akey[i] ^ opad[i]
    }
    # コードポイントから文字列へ
    ik = ikey.pack("C*")
    ok = okey.pack("C*")
    value = Digest::SHA256.digest( ik + message )
    value = Digest::SHA256.digest( ok + value )
  end

end

module Aws
  class Amazon

    def initialize(host, uri)
      @host = host
      @uri = uri
    end

    def escape(string)
   # Original
      # => ruby19/1.9.1/cgi/uri.rb CGI::escape(string)
      string.gsub(/([^ a-zA-Z0-9_.-]+)/) do
        '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
      end.tr(' ', '+')
    end
    
    def local_utc
      t = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
      escape(t)
    end
    
    def make_req(isbn, access_key, secret_key)
   # original はこちら => http://diaspar.jp/node/239
      req = 
      [
        "Service=AWSECommerceService",
        "Version=2009-03-31",
        "AWSAccessKeyId=#{access_key}",
        "Operation=ItemLookup",
        "SearchIndex=Books",
        "ResponseGroup=Medium",
        "IdType=ISBN",
        "ItemId=#{isbn}",
        "Timestamp=#{local_utc}"
       ].sort.join('&')
      msg = ["GET", @host, @uri, req].join("\n")
      # 拡張モジュール1.9.1用改造版呼び出し
      hash = HMAC::sha256(secret_key, msg)
      mh = [hash].pack("m").chomp 
      sig = escape(mh)
      return "#{@uri}?#{req}&Signature=#{sig}"
    end

  end
end

#-------------------#

accesskey = 'xxxxxxxxxxxxxxxxxxx'
secretkey = 'xxxxxxxxxxxxxxxxxxxx' 
host = 'webservices.amazon.co.jp'
path = '/onca/xml'

#isbn = "9784274066429"
#isbn = "9784839927844"
#isbn = "9784894712850"
isbn = "9784797336610"
req = Aws::Amazon.new(host, path).make_req(isbn, accesskey, secretkey)

#exit

# 署名認証リクエスト開始
begin
  Net::HTTP.start(host, 80) { |http|
    resp = http.get(req).body
  # ドキュメントをUTF-8 へ強制変換
    ustr = resp.force_encoding("UTF-8")
    doc = REXML::Document.new(ustr)
    doc.elements.each('ItemLookupResponse/Items/Item/ItemAttributes') { |item|
      puts '%s -> %s' % [item.text('EAN'), item.text('Title')]
    }
  }
end

結果


% ruby19 for-19.rb 
9784797336610 -> たのしいRuby 第2版 Rubyではじめる気軽なプログラミング

+++ 試したライブラリ+++
ruby-openid-2.1.6.gem
ruby-hmac-0.3.2.gem

+++ 参考にしたところ+++
Amazon Product Advertising APIの認証の件
Amazon Product Advertising API (認証対応)
github.com/tdtds

[を] アマゾンAPIを使うのに2009年8月15日から認証が必要になるらしい
KeN's GNU/Linux Diary | Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ

+++ Amazon +++
Product Advertising API 開発者向けガイド リクエストの署名認証について>(参考訳
http://developer.amazonwebservices.com/connect/ann.jspa?annID=442

+++ 追記 +++
Amazon Web Services Developer Community : OSSからの認証利用

私も Amazon Web サービスが元に戻ってくれたらいいのにな、と思いました。

2009/06/15

defaults domains

% man defaults
% defaults -h
を読みながら試してみたこと. OS X 10.5.7

# てっとり早くkey を探したい時-例えば clock
% defaults find 'clock'
=>
Found 9 keys in domain 'com.apple.MenuBarClock': {
...

略)

# ドメイン名一覧を得る-管理者ユーザ
$ sudo defaults domains
$ sudo defaults -currentHost domains

# ドメイン名一覧-一般ユーザ&管理者ユーザ
% defaults -currentHost domains
% defaults domains

# Safari.app に関する設定
% defaults read com.apple.Safari
# or
% defaults read -app Safari
# Rss
% defaults read com.apple.Safari.RSS
# Cookies
% defaults read com.apple.WebFoundation

# iTunes.app
% defaults read -app iTunes
# iTunes security
% defaults read /Library/Preferences/com.apple.iTunes.secure

# defaults write で書き換えたい場合事前に項目のタイプを確認する。
% defaults read-type com.apple.Safari RSSBookmarksInBarAreSubscribed
=>
Type is boolean

# 時計の設定をみる.みるだけ。
% defaults read com.apple.menuBarClock

# ソフトウエア・アップデート- / 一般ユーザ
% defaults read com.apple.scheduler

# ソフトウエア・アップデート- / 管理者
$ sudo defaults -currentHost read com.apple.scheduler AbsoluteSchedule

appleYukon2

Safari4 を使っているとネットワークが途切れることがある。必ずいつも再現するわけじゃないところが謎。
この現象がおきると
$ sudo tail -f /var/log/system.log
AppleYukon2: ... 略... deadmanCheck - nothing received, resetting chip
の直後に Ethrnet が再起動していることが多い。

http://discussions.apple.com/ で AppleYukon2 を検索

AppleYukon2
Network Errors Adding New Router

システム環境-ネットワーク-Ethernet を変更し「手動」で「全二重」を選択すべしということ?

--memo
/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleYukon2.kext

2009/06/09

Snow Leopard

http://jp.techcrunch.com/archives/20090608os-x-snow-leopard-should-purr-along-with-a-smaller-footprint/

によると Snow Leopard はダイエットされるらしい。朗報。どんどん削除してほしい。Apache も Samba もいらない。cupsd, sshd いらない。php もいらない。とにかくこの類いのもの XCode インストールする時のように全てオプションにしてくれたらな。

もちろん、
http://www.apple.com/jp/macosx/specs.html
をみるかぎりそういう意味ではないようだが、ODBC Administrator.app なんかはみあたらない。削除されるのかな。いいことだ。

ついでにプラグインなんかもユーザに選択させてくれたら素敵なのにな。
このあいだも、/Library/Internet Plug-Ins/JavaPluginCocoa.bundle のアクセス権を変更しておく事態に見舞われた。なんでも穴があいてるということだったので。ブラウザの設定で Java のチェックをはずだけでもよかったのかもしれないけれど、以前にここでチェックはずしてもチェックをはずしたこと自体が無効だったこともあったからプラグイン自体が起動しないようにアクセス権を変えておいた。

こういう時、つくづく思う。
もしも、 OS インストール時にこのプラグインをインストールするかしないか、私が選択できるようになっていたのならば、私は最初からこのプラグインをインストールしていなかったはず。インストールしてなければ私はそのプラグインのセキュリティホールに関して一切心配する必要はない。このプラグインに関するセキュリティニュースをみかけたとしてもスルーできる。なぜ、Appleはこういった環境を提供してくれないのかな。と。自分がインストールを決定していないものについては心配しなくて済む環境がほしいな。

それと、プラグインよりも複雑で巨大なフレームワークの場合もインストールされて「いない」方がユーザーの自由度を高める可能性もあると思う。
たとえば、cupsd (印刷するやつ)を 永久に kill したいと思ったとする。永久にプリンタ使う予定ないから。けれど関連するフレームワークはあちこちに分散している。そいつらは他のアプリケーションとどう関連しているのかわからない。例えば、cupsd を止めた状態で、システム環境設定アプリケーションの共有をクリックするとシスログにちょっとしたエラーが残る。このエラーはどうしたら止まるのか、それを説明してくれる文章は apple.com にはない。仮にそのエラーを止めることができたとしてもその行為が他の全然関係ないアプリケーションにどう影響するか?なんていう文章も探してみたけれどない。ただ、単に cupsd を kill したいだけでどうしてこんなに迷宮に迷いこまなくてはならんのでしょうか?

そもそもなぜあなたは cupsd を敵視するのかといわれそうだが 私としては敵視しているんじゃなくてプリンタにつなげることが100パーセントないので実際不要。だから、sudo lsof -i で cupsd が表示されたとたんに永久に kill したくなる。使う予定のないデーモンがずっと起動してるのは無駄。メモリー消費を押さえたい、これはいけないこと? Linux だったら、できて当たり前、やって当たり前のことよね? OS X だって正当な UNIX になったんじゃなかったっけ。正常にcupsd を起動させなくするGUIインターフェイスを持つ OS だってあるなかで、なぜアップルにそれがないのだろう。といったことから、、、
つくづく思う。
そもそも cupsd とそれに関係するフレームワークがインストールされていなければいいのに、と。インストールの選択肢を広げてユーザーに選ばせてくれよと。

もちろん、私なりに想像できることはある。例えばエプソンのドライバーをインストールしようとしたら「cupsd がインストールされていません」なんていうメッセージが現れてしまった。こんなおぞましい事態はAppleにとってはあってはならぬ悪夢なのかもしれない。だとしたら、ベンダーが必要としそうな最低限のアプリケーションやフレームワークは、インストーラーとしてどっかにまとめて保存されていればすむことだよね?DVDからの別途オプションインストールはDVDが手元にないときに不便だというのならば、OS のどこかにインストーラー格納しておいて、呼ばれて初めてインストールする、とか。あるいは、ソフトウエアアップデート経由でダウンロードできてもいいわけですよね。あ、Snow Leopard はインストールされてるドライバにアップデートがあった場合ソフトウエアアップデートからダウンロードできるとあったっけ。これ、いっそcupsd とそれ関連フレームワークごとにしてもらえないかな。

あと、.Macがらみの全てのアプリケーションもインストールするかどうかユーザーに尋ねて欲しいな。
アップルにしたって、独占しているって訴えられないためにもこれらは標準からはずした方が賢明なんじゃないのかな。.Mac というか Mobile Meか... 。
これ使わないユーザーはどこともシンクロする必要ないわけよね。なんで、OS と一体化してるんだろか、あ、いや、してないか。えーと、つまり、Mobile Me 関連アンインストーラーを提供してほしい!。Mobile me 使っていないマックユーザーだって僕らは歓迎しているぜという意思表示とともに。
そうしてもらうと、こちらは何が助かるのかというと syncserver とかいう謎のデーモン?Agent?と格闘しなくてもよくなる。最初から格闘しなければいいだけの話かもしれませんがね...。それともこれはあれですかね、システムが必要とし..?ま、まさか、そんなことはないだろうから隔離してほしい。
それに、今度のSnow Leopard は マイクロソフト関係のシンクロサービスなんかも盛り込まれるとか。マイクロソフト関係のものはできればインストール拒否したいと思っているユーザがここに1人いるってことは世界中に少なくともあともう1人はいるかもしれない。どんぶり勘定したらもっといるかもしれない。n万人いるかもしれない。オバマ大統領に投票した人数いる可能性だってありえる。当のオバマさんだってそう思うかもしれない!

言い過ぎた。
ということで、このシンクロ関連一切合切オプションのインストーラーでの提供としてくれたら私はとてもうれしい。こんなユーザーの要望はかなうわけなく、零か零以下の可能性だからこそ書いておこう。

零ついでにもっと書いておくと
/System/Library/Extensions/ におさめられてる
IOBluetoothFamily.kext
IOBluetoothHIDDriver.kext

これらもオプションにしてくれたら助かる。ずっと前にアップルが提供するドキュメントを読みながら、 IOBluethoos*.kext を削除して(Bluetooth 一切使ってなかったから。)それですっきり快適マックライフを送ってた。アップデートするまでは...。10.5.7 Update で、この子たちが強制的にインストールされた日には、すごくびっくりしたし心からがっかりした。なかったはずのものがいきなり出現した時のこちらの身にもなってほしいわ。以前にアパッチのコンフ書き換えちゃうアップデートあったっけ。あれに比べればまだましかもしれないけど。

ちなみに、アップルが提供するドキュメントとはこれ。
http://images.apple.com/server/macosx/docs/Leopard_Security_Config_20080530.pdf

2009.06.10 誤字脱字その他修正

数学をつくった人びと

数学をつくった人びと〈1〉 (ハヤカワ文庫NF―数理を愉しむシリーズ) / E.T. ベル / 早川書房 / 978-4150-502836

p.34-35

...この本をすみからすみまで理解するのに必要な知識量はどの程度であろうか?それは中学高等学校程度の数学で十分だといってさしつかえない。...あまりに専門的すぎると思った場合には、読み飛ばしてしまうがよい。残りの部分にも報いてあまりあるものがあるということである。..飛ばし読みは、私たちが厳格な先生からおしえられたように罪悪ではなく、常識の教える知恵なのである。...

数学を学ぶにあたってかつてこんなにも力強く励まされたことがかつてあったろうか。難しかったら飛ばして読みなさいと言ってくれた数学の本に出会ったのは初めて。あっ、でも高等学校程度の数学こそおぼつかない私は対象読者範囲外であった。読み飛ばすことでクリアしていく予定。
わかりやすく書き起こされて教科書に掲載されるべき箇所がたくさんあるような気がする。そういえば,どうして算数や数学の教科書には数学そのものの歴史に関する記述がなかったんだろうか。私がちゃんと勉強してなかっただけなのかな。その可能性はかなり高い。
デカルトの話に出くわした。あまりに面白かったので「方法序説」を読みつつ飛ばし読みつつ&道草読み。

方法序説 (岩波文庫) / デカルト / 岩波書店 / 400-336131-8 / creator: Ren´e Descartes & 谷川 多佳子

2009/06/08

一六世紀文化革命

一六世紀文化革命 1 / 山本 義隆 / みすず書房 / 978-46220-72867
一六世紀文化革命 2 / 山本 義隆 / みすず書房 / 978-46220-72874

この本では、
印刷技術の普及、職人によって著された書籍の登場、
蔑まされていた外科医による現実的で有用な情報公開、
商人たちが流布した計算方法と俗語で書かれた数学書の普及と算数教育、
宗教改革、大航海時代
ナショナリズムによる自国語の発展
...
といった出来事を取り上げラテン語以外は許容されなかった「神聖なる」学問がいかにして変貌し、中世ヨーロッパにおける医学、数学、科学、芸術や哲学などのあり方がどのように変化しその要因や引き金となったものは何だったのか?が膨大な資料と史料に基づいて丹念に追求されている。
著者は、
p.29

「16世紀文化革命」はひとつの仮説であり、それが十分に論証されているかどうかは、読者の判断に委ねたい。

と読者に判断を委ねているので読み終えた読者として是非とも判断してみたいところだが、例えば反証可能かどうかといった科学的な視点が社会学や歴史学の分野においてどのように反映されるべきかなのかは、今もって社会学的にはわからないことなのだろうしましてや一介の読者が判断できることではないと思った。
けれど、判断はつかないものの当時の常識がいかにして覆されていったかをこの本を通じて知ることができたのは個人的に楽しい読書体験であったし、あとがきに記された今の科学のあり方についての著者の主張はとても斬新で貴重な意見なんだと思う。
とくに読み応えがあったのは9章と10章だった。
なぜルターの宗教改革は世間に行き渡るに至ったのか?なぜそれが可能だったに関して...
p.577

一五一七年秋に...マルティン・ルター(1483ー1546)は...「九五ヶ条提題」を発表した。これは宗教改革の発端と言われるが、それは後から見た判断で、ルターはこれをラテン語で書いたのである。

p.582-p.583

カトリック教会は、ラテン語でかかれているかぎりにおいては新発見を報じる書物でも認可し、反対に学者が誰にでも理解される国語で自説を世に広めようとすると、
ただちに告発する場合が多かった。

とあった。ルターが最初にラテン語を用いたのは賢い選択であり処刑を免れるための手段だったのかもしれない。この本を読むまでは真実に目を向けた書が彼ら(カトリック教会の人々)の標的になったのだと思っていたがそればかりではなかったようだ。では俗語で書かれていたという事実そのものがなぜそこまで彼らの怒りを買ったのか?
p.630 に、ラテン語における「文書」という単語の意味についてふれられている。

ラテン語の'auctoritas' は「信ずべきこと」と「権威」の他に「文書」の意味をもつが、文書化されていることはとりもなさず権威を有し、したがってまた「信ずるに値すること」や「信ずべきこと」とされていたのである。

この定義によると内容として権威などとは無関係の内容の書籍であったとしても、書籍になった時点で権威を有する、あるいは有する恐れがあり信ずるに値するということになってしまうのだろう。全くナンセンスな話で子供すらだませないような話だが、この単語の意味がどれだけの影響力を持っていたかを想像することは、教会が一体何を恐れていたかを理解する上で非常に重要な点だと思った。つまるところ、単語の意味づけは社会規範を決定し人の行動と言語活動を制約し、権力者たちにとってはその権力維持を持続する上で重要な手段として活用すべきことでもあったと理解できる。現在もなお、この驚くほど古びた権力維持手段を利用している国があるのはとても残念で滑稽なことだと思う。
10章後半では、ついに学問を追求する上でラテン語で書かれている必要はないと明確に書かれた書籍の紹介に至る。情報公開性の重要性と公共性について言及した文章からは、暗黒のラテン語時代の終焉を迎えようとする人々の未来への希望がひしひしと伝わってきて静かに感動した。また、現在のインターネット上での情報公開性に受け継がれているモラルの発祥のようにも読み取れるのもとても興味深かった。そして、今後、インターネット上でこれまで存在していなかったデータが公開されていく中で何かが大きく変化していく時、そのさなかにいる私たちは案外それをはっきりと認識できない可能性の方が高いのかもしれない、とふと思ったりもした。
2009.06.09 脱字修正

2009/06/03

音楽は自由にする

Book / 音楽は自由にする / 坂本龍一 / 新潮社 / 978-41041-06028

大変面白い本でした。読み終えてみるとおぼっちゃまといったイメージを勝手にもっていたのは不思議なくらい。どういった経緯であれ、すごい曲をつくり続ける人々にまたそれらを聴ける幸せにいつまでも感謝していたいものです。先生とお友達だった話やYMO 誕生の時3人はこたつを囲んでいたって話には笑えました。
こちらも聴いてみた。どれもこれも何度聴いてもびっくりする曲ばかり収録されていてよかった。ただベートーベンのやつは最後の第三楽章が欠けていたのでちょっと寂しかった。

CD / グレン・グールド 坂本龍一セレクション/ グールド(グレン) / SMJ(SME)(M) / 4547366042269

2009/06/02

快適な睡眠に落ちる方法

10,20 など 0 のつく数字は排除した数字を並べる。


1, 2, 3, 4, 5, 6, 7, 8, 9
11,12,13,14,15,16,17,18,19
21,22,23,24,25,26,27,28,29
31,32,33,34,35,36,37,38,39
41,42,43,44,45,46,47,48,49
51,...

これらは一見、9進法にみえるもののよくみるとそうじゃない。そこんとこは無視してこんなようなルールを作ったとする。


1 + 8 = 9
1 + 9 = 11
1 + 11 = 12

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 11
2 * 6 = 13
2 * 7 = 15
2 * 8 = 17
2 * 9 = 19
2 * 11 = 22

3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 13
3 * 5 = 16
3 * 6 = 19
3 * 7 = 23
3 * 8 = 26
3 * 9 = 29

これを用いると、今現在素数と呼ばれていない数字が素数となり逆に今素数と呼ばれている数字は2,3 などで割り切れてしまい素数ではなくなる。おもしろいことに1桁の数字の2倍の値には今現在素数とされている数が5つも含まれる。
このルールでの21 以下の素数を考えてみると...
2, 3, 5, 7, 9
ここまでは同じだが、11 は 2 で割り切れるので素数ではなくなる。13 も 2 で割り切れるようになるので同様。14 は?
5 * 2 = 11
6 * 2 = 13
7 * 2 = 15
...
ということで14 が9 の次の素数ということになる...。15,16,17 は 2や3で割り切れるので素数ではない。18 は?18 は割り切れないので素数になり、
結局 21以下の素数は


2,3,5,7,9,14,18,21  

ということになる。

こんどはちょっと違う角度から考えてみる。
ひとつの円を描き、中心点の横に数字の0 を書く。円の円周上に時計のように数字を順番に"等間隔"に配置する。ただし配置する数字は1から9までで9の右隣には必ず1が配置されているようにする。次にこの円の直径よりも1センチばかり大きな直径で(好みで何センチでもいい)中心点が最初の円の中心点と重なる円を描く。円周上に11から19 までの数値を等間隔に配置する。この時、最初の円の円周上の1と同じ角度の位置に11をおく。さらに3番目の円には、21から29、4番目の円には31から39と、数値を同様に配置する。これを繰り返し 99 までの数字が配置されている10個の円を描く。今現在、素数とされている100以下の数に丸印をつけてみると"ほぼ"直線上に並んでいることに気づく。では上のルールに従った素数の方をマークしていくと一体どのような図形が浮かび上がるか?
また、中心点0の地点に自分が立っていると仮定し10個の円を夜空に配置したとイメージする。今現在素数と呼ばれている数が星のように光っているものとすると、それらを見上げた時実際の星に重なるものはあるんだろうか?あるいは、このルールにおける素数ではどうか?

なーんてことを眠る時に考えると快適な睡眠に落ちることができます。横になって最初に書いた数字の列を眺めながら考えていると猛烈に眠くなります。ここで間違ってもノートに書いてみようとかコンパスなどを取り出さないことです。快適な睡眠を阻害してしまいます。^_^

--追記--

私は算数が苦手な子供でした。九九を覚える時も覚えが悪い方でした。文章問題が出された時も困惑しました。例えば
「太郎君が100 円をもっておつかいに行きました。20 円のりんごを3つ買いました。さて太郎君はおつりをいくらもらってきたでしょう。」

といった問題がだされたとすると、太郎君は帰り道でおつりを落とさなかったのか?リンゴを買ったそばから食べてしまわなかったのか?太郎君は1つしかリンゴを買えなかったら?帰り道にりんごのかわりにお菓子をかってしまったら?こういったことに夢中で問題を解くどころではありませんでした。
先生はそういったことは考えなくてもよいと言いましたが、なぜ考えなくていいのかが分かりませんでした。太郎君がおつりを落としたら、答えは変わっちゃうのに本当に本当にそれを考えなくていいのかと、とても不思議でした。しばらくして、太郎君はおつりを落とさないしリンゴを3個買ったと書いてあるなら実際3個買ったのだ、何も心配することはない。算数の時はそういうものなんだと教わり、それでやっと問題を解けるようになった覚えがあります。算数の問題に登場する子供たちは自分たちとは違う子供だしそこに登場するお店も暗くて人のいないお店をイメージするようになり変な感じがしたのを覚えています。

算数大好き少年少女だった人にはとても理解しがたい話でしょうがこういう子供がいたことは事実です。ま、要は私はかなり注意散漫なおばかさんだったわけで、今でもその傾向は多分にある故、上に書いたことはどうかゆるーりと読んでください。それにしても、なぜ素数が5つも並ぶのでしょうね...この数え方だと円周率や暦はどうなってしまうんだろう...月までの距離は一体いくつに...Zzz...