今年は2009年ということで、西暦の中に「009」が入る1000年に一度の年。
だからというわけではないが、白黒の
サイボーグ009 1968 DVD-COLLECTION
http://www.toei-video.co.jp/DVD/sp21/cyborg009collection.html
を買ってしまった。(2ヶ月くらい前だが)
けっこう懐かしく、おもしろい。
意外と、全員がそろうことがないのにびっくり。
どの回に誰が登場しているかを確認してみた。もちろん、間違いはあるかもしれない。
007と009は毎回出ているが、それ以外は日本在住の003と006が多いくらいかな。
なお、001については、絵では出ていても、しゃべっていないときはカウントしていない。
こうしてみると、なんと、001から009まで全員が出ているのは最終回だけ。びっくり。
あと、ブラックゴーストは、ここでは出てこない。
敵役のゲストとして、スカールとボグートが出ている回もある。
また、彼らがサイボーグになったいきさつもここでは出ていない。
そのいきさつだが、結局、レンタルで、つぎを借りて見て確認。
サイボーグ009 劇場版、1966
http://www.tsutaya.co.jp/works/10003954.html
サイボーグ009 怪獣戦争 劇場版、1967
http://www.tsutaya.co.jp/works/10017082.html
小さい頃、東映まんがまつりで見た(?)かもしれないが、あまり記憶にない。
まあまあ面白かった。というよりも、懐かしかった、というべきかな。
とくに、「怪獣戦争」では、「レインボー戦隊ロビン」とすれ違うシーンがあった。
白黒サイボーグ009は、ある程度記憶にある。
「レインボー戦隊ロビン」も見てみたいが、DVDはなさそう。
1979年にも放送された。このときは、そんなに見てなかったかな。
内容はほとんど記憶にないが、オープニングは覚えている。
あと、「赤いマフラー」でなかったことが残念だった記憶がある。
2001年にも放送されたらしいが、やっていること自体まったく知らなかった。
最近、youtubeでいくつか見たが、原作に近い絵だったので、1979年のものよりも親近感がもてるかも。
あと、話の展開もほぼ原作に近かったのでよかった。
絵や話としては、初期の頃の、いかにも少年漫画的な感じが一番好きだ。
サイボーグ009の情報については、
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%9C%E3%83%BC%E3%82%B0009
を参照されたい。
だからというわけではないが、白黒の
サイボーグ009 1968 DVD-COLLECTION
http://www.toei-video.co.jp/DVD/sp21/cyborg009collection.html
を買ってしまった。(2ヶ月くらい前だが)
けっこう懐かしく、おもしろい。
意外と、全員がそろうことがないのにびっくり。
どの回に誰が登場しているかを確認してみた。もちろん、間違いはあるかもしれない。
回 タイトル 出演 -- ------------------------ ------------ 1 恐怖の怪人島 03679 2 Xの挑戦 013679 3 南極の対決 023456789 4 宇宙魔人 03679 5 あゝクビクロ 0379 6 ガラリア王救出作戦 013679 7 消えたスクール・バス 0379 8 金色の眼の少女 02379 9 悪魔は夜歩く 0179 10 地底の黄金宮殿 579 11 黄金のライオン 3789 12 天かける巨人 79 13 悪魔城の秘密 03479SB 14 呪われた砂漠 023456789 15 悲劇の獣人 0234679 16 太平洋の亡霊 01236789 17 幽霊同盟 0679S 18 わが父は悪魔の使徒 03479 19 恐怖の原潜シークネイス号 0236789 20 果てしなき逃亡 3789 21 幻の騎馬軍団 3679 22 復讐鬼 013679 23 復讐鬼(後編) 0123679 24 非情な挑戦者 023456789 25 よみがえれ不死鳥 0123579 26 平和の戦士は死なず 0123456789 0=ギルモア博士 S=スカール B=ボグート
007と009は毎回出ているが、それ以外は日本在住の003と006が多いくらいかな。
なお、001については、絵では出ていても、しゃべっていないときはカウントしていない。
こうしてみると、なんと、001から009まで全員が出ているのは最終回だけ。びっくり。
あと、ブラックゴーストは、ここでは出てこない。
敵役のゲストとして、スカールとボグートが出ている回もある。
また、彼らがサイボーグになったいきさつもここでは出ていない。
そのいきさつだが、結局、レンタルで、つぎを借りて見て確認。
サイボーグ009 劇場版、1966
http://www.tsutaya.co.jp/works/10003954.html
サイボーグ009 怪獣戦争 劇場版、1967
http://www.tsutaya.co.jp/works/10017082.html
小さい頃、東映まんがまつりで見た(?)かもしれないが、あまり記憶にない。
まあまあ面白かった。というよりも、懐かしかった、というべきかな。
とくに、「怪獣戦争」では、「レインボー戦隊ロビン」とすれ違うシーンがあった。
白黒サイボーグ009は、ある程度記憶にある。
「レインボー戦隊ロビン」も見てみたいが、DVDはなさそう。
1979年にも放送された。このときは、そんなに見てなかったかな。
内容はほとんど記憶にないが、オープニングは覚えている。
あと、「赤いマフラー」でなかったことが残念だった記憶がある。
2001年にも放送されたらしいが、やっていること自体まったく知らなかった。
最近、youtubeでいくつか見たが、原作に近い絵だったので、1979年のものよりも親近感がもてるかも。
あと、話の展開もほぼ原作に近かったのでよかった。
絵や話としては、初期の頃の、いかにも少年漫画的な感じが一番好きだ。
サイボーグ009の情報については、
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%9C%E3%83%BC%E3%82%B0009
を参照されたい。
近江屋菓子店
http://www.ohmiyayougashiten.co.jp/
大正時代風のカフェだった。
カフェ形式で、ドリンクバーの\525-を払えば、ドリンクも自由。
ドリンクも、珈琲、紅茶、チョコレート、ミルク、オレンジジュース、イチゴジュース、その他。
なんと、ボルシチまであった。
http://www.ohmiyayougashiten.co.jp/
大正時代風のカフェだった。
カフェ形式で、ドリンクバーの\525-を払えば、ドリンクも自由。
ドリンクも、珈琲、紅茶、チョコレート、ミルク、オレンジジュース、イチゴジュース、その他。
なんと、ボルシチまであった。
「ロボットを動かしてプログラミングを学ぼう!」8/10-8/11 で開催します。
ロボットに興味があって、ついでにJavaも学ぼう、という方はどうぞ。
http://www.sharegrid.co.jp/seminar/?p=detail&id=33
お申し込みは上記のURLからお願いいたします。
予定
---
■1日目:ロボットを組み立て、動かしてみる
・LegoマインドストームNXTの概要について
・トライボットの組み立て
・NXTプログラムについて
・NXTソフトウェアを使ってプログラムを組み込む
・NXTソフトウェアを使ってロボットを動かしてみる
・センサーを使って動きを制御する
・演習
・アルゴリズムを考えてみる
・アルゴリズムを考えてみる
・共通ブロックを使って、動きを部品化する
・NXTソフトウェアのまとめ
・演習
■2日目:プログラム(JAVA)を入力してみる
・プログラムとJAVAのことを知ろう
・JAVAに慣れよう <その1>
・音を出したり、画面に文字列を表示させる
・モーターを動かす
・演習
・NXTソフトウェアで作ったものをJavaで作り直してみる
・センサーを使ったプログラムを組み込む
・Step1のまとめ
・ロボットを自由に動かそう <創作課題>
・総合演習発表会
---
以上
ロボットに興味があって、ついでにJavaも学ぼう、という方はどうぞ。
http://www.sharegrid.co.jp/seminar/?p=detail&id=33
お申し込みは上記のURLからお願いいたします。
予定
---
■1日目:ロボットを組み立て、動かしてみる
・LegoマインドストームNXTの概要について
・トライボットの組み立て
・NXTプログラムについて
・NXTソフトウェアを使ってプログラムを組み込む
・NXTソフトウェアを使ってロボットを動かしてみる
・センサーを使って動きを制御する
・演習
・アルゴリズムを考えてみる
・アルゴリズムを考えてみる
・共通ブロックを使って、動きを部品化する
・NXTソフトウェアのまとめ
・演習
■2日目:プログラム(JAVA)を入力してみる
・プログラムとJAVAのことを知ろう
・JAVAに慣れよう <その1>
・音を出したり、画面に文字列を表示させる
・モーターを動かす
・演習
・NXTソフトウェアで作ったものをJavaで作り直してみる
・センサーを使ったプログラムを組み込む
・Step1のまとめ
・ロボットを自由に動かそう <創作課題>
・総合演習発表会
---
以上
いまさらですが、
7/18からJava+ロボット講座を開くことになりました。
http://www.sharegrid.co.jp/seminar/?p=detail&id=33 (コース概要)
http://robomedia2006.blog.so-net.ne.jp/2009-05-21 (紹介記事)
わたしが参加している勉強会で企画し、わたしが開発・担当しています。
興味がありましたら、ぜひ、参加してみてください。
ちまみに、中学生版もあって、わりと楽しかったです。
実際にきたのは小学生から来てましたが。。。
小学生って、すごいとおもいました。いろんな意味で。
7/18からJava+ロボット講座を開くことになりました。
http://www.sharegrid.co.jp/seminar/?p=detail&id=33 (コース概要)
http://robomedia2006.blog.so-net.ne.jp/2009-05-21 (紹介記事)
わたしが参加している勉強会で企画し、わたしが開発・担当しています。
興味がありましたら、ぜひ、参加してみてください。
ちまみに、中学生版もあって、わりと楽しかったです。
実際にきたのは小学生から来てましたが。。。
小学生って、すごいとおもいました。いろんな意味で。
わたしのホームページが
http://marunomaruno.web.fc2.com/
に変更されます。
(旧 http://csx.jp/~marunomaruno/)
これは、csx自体が、この無料ホームページ(ただページ http://csx.jp/)のサービスを中止するためです。
http://marunomaruno.web.fc2.com/
に変更されます。
(旧 http://csx.jp/~marunomaruno/)
これは、csx自体が、この無料ホームページ(ただページ http://csx.jp/)のサービスを中止するためです。
2009-01-20
Google Maps API
================================================================================
Google Maps API に登録して、使ってみた。
■登録方法
Google Maps API
http://code.google.com/intl/ja/apis/maps/
を参考に、ユーザー登録し、Google Maps API キーを取得する。
■サンプル
Google Maps API のドキュメント
http://code.google.com/intl/ja/apis/maps/documentation/
を参考に、マップを表示(マーカー、マップコントロールなどもあわせて表示)するだけの
サンプル。なお、基準は東京タワー(東京都港区芝公園4‐2‐8)。
□sample.html
□ Google Maps API を読み込む
つぎのようにして、 取得した Google Maps API キー値 を指定して、JavaScript を読み
込む。
Google Maps API は、Google AJAX API と完全<script
src="http://maps.google.com/maps?file=api&v=2&key=取得した Google
Maps API キー値"
type="text/javascript"></script>
<script type="text/javascript">
□ function initialize()
<body onload="initialize()" onunload="GUnload()">
body タグに onload 属性をつけて、このページが呼び出されたときにはこの initialize
() 関数を実行するように設定する。
□ if (GBrowserIsCompatible())
ブラウザーが Google Maps API と互換性があるかどうかをチェックする。
□ マップを表示する領域の取得と設定
通常は、div タグを使って、マップを表示する領域を定義する。
これは、getElementById() 関数によって、DOM 要素として取得し、GMap2 オブジェクト
を作るコンストラクターに引き渡す。
var map = new GMap2(document.getElementById("map_canvas"));
<div id="map_canvas" style="width: 500px; height: 300px"></div>
□ 経度と緯度、ズームレベル(0-19)の設定
GLatLng オブジェクトを、経度と緯度を渡して作る。
これを、map オブジェクトに setCenter() メソッドを使って設定する。あわせて、ズー
ムレベルも設定できる。
var point = new GLatLng(35.658634, 139.745411); // 東京タワー
map.setCenter(point, 15);
□ 地図の属性(地図、航空写真)
setMapTypes メソッドを使って設定する。
map.setMapType(G_NORMAL_MAP); // 航空写真
標準のマップ・タイプは以下のとおり。
---
G_NORMAL_MAP - デフォルト ビュー
G_SATELLITE_MAP - Google Earth の航空写真を表示
G_HYBRID_MAP - 通常のビューと航空写真の混合表示
---
□ 情報ウィンドウの表示
地図上にふきだし(情報ウィンドウ)を持てる。
map.openInfoWindow(map.getCenter(), document.createTextNode("東京タワー"));
□ マップコントロールの表示
マップ上に、表示形式を変えたり、ズームを制御するためのコントロールを出せる。
addControl メソッドを使って、マップオブジェクトに追加する。
map.addControl(new GSmallMapControl());
つぎのコントロールがある。
---
GLargeMapControl - Google マップ上で使用する大きなドラッグ/ズームコントロール。
デフォルトでは地図の左上に表示されます。
GSmallMapControl - Google マップ上で使用する小さなドラッグ/ズームコントロール。
デフォルトでは地図の左上に表示されます。
GSmallZoomControl - ドラッグ コントロールがない小さなズーム コントロール。Google
マップで、車のルートの順序を示す小地図のブローアップ ウィン
ドウ内で使用されています。
GScaleControl - 地図の縮尺
GMapTypeControl - マップ タイプ (地図や航空写真など) をユーザーが切り替えるた
めのボタン
GHierarchicalMapTypeControl - 多くのマップ タイプ セレクタを配置するための入れ子
になったボタンとメニュー アイテム
GOverviewMapControl - 画面の隅にある最小化可能な全体図
---
□ マーカー
マップ上にマーカーを置ける。
addOverlay メソッドを使って、マーカーをマップオブジェクトに追加する。
map.addOverlay(new GMarker(point));
以上
Google Maps API
================================================================================
Google Maps API に登録して、使ってみた。
■登録方法
Google Maps API
http://code.google.com/intl/ja/apis/maps/
を参考に、ユーザー登録し、Google Maps API キーを取得する。
■サンプル
Google Maps API のドキュメント
http://code.google.com/intl/ja/apis/maps/documentation/
を参考に、マップを表示(マーカー、マップコントロールなどもあわせて表示)するだけの
サンプル。なお、基準は東京タワー(東京都港区芝公園4‐2‐8)。
□sample.html
--- <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Google Maps JavaScript API の例</title> <script src="http://maps.google.com/maps?file=api&v=2&key=取得した Google Maps API キー値" type="text/javascript"></script> <script type="text/javascript"><!-- function initialize() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map_canvas")); // 経度と緯度、ズームレベル(0-19) var point = new GLatLng(35.658634, 139.745411); // 東京タワー map.setCenter(point, 15); // 地図の属性(地図、航空写真) map.setMapType(G_NORMAL_MAP); // 航空写真 // 情報ウィンドウの表示 map.openInfoWindow(map.getCenter(), document.createTextNode("東京タワー")); // マップコントロールの表示 map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl()); // マーカー map.addOverlay(new GMarker(point)); } } --></script> </head> <body onload="initialize()" onunload="GUnload()"> <div id="map_canvas" style="width: 500px; height: 300px"></div> </body> </html> ---
□ Google Maps API を読み込む
つぎのようにして、 取得した Google Maps API キー値 を指定して、JavaScript を読み
込む。
Google Maps API は、Google AJAX API と完全<script
src="http://maps.google.com/maps?file=api&v=2&key=取得した Google
Maps API キー値"
type="text/javascript"></script>
<script type="text/javascript">
□ function initialize()
<body onload="initialize()" onunload="GUnload()">
body タグに onload 属性をつけて、このページが呼び出されたときにはこの initialize
() 関数を実行するように設定する。
□ if (GBrowserIsCompatible())
ブラウザーが Google Maps API と互換性があるかどうかをチェックする。
□ マップを表示する領域の取得と設定
通常は、div タグを使って、マップを表示する領域を定義する。
これは、getElementById() 関数によって、DOM 要素として取得し、GMap2 オブジェクト
を作るコンストラクターに引き渡す。
var map = new GMap2(document.getElementById("map_canvas"));
<div id="map_canvas" style="width: 500px; height: 300px"></div>
□ 経度と緯度、ズームレベル(0-19)の設定
GLatLng オブジェクトを、経度と緯度を渡して作る。
これを、map オブジェクトに setCenter() メソッドを使って設定する。あわせて、ズー
ムレベルも設定できる。
var point = new GLatLng(35.658634, 139.745411); // 東京タワー
map.setCenter(point, 15);
□ 地図の属性(地図、航空写真)
setMapTypes メソッドを使って設定する。
map.setMapType(G_NORMAL_MAP); // 航空写真
標準のマップ・タイプは以下のとおり。
---
G_NORMAL_MAP - デフォルト ビュー
G_SATELLITE_MAP - Google Earth の航空写真を表示
G_HYBRID_MAP - 通常のビューと航空写真の混合表示
---
□ 情報ウィンドウの表示
地図上にふきだし(情報ウィンドウ)を持てる。
map.openInfoWindow(map.getCenter(), document.createTextNode("東京タワー"));
□ マップコントロールの表示
マップ上に、表示形式を変えたり、ズームを制御するためのコントロールを出せる。
addControl メソッドを使って、マップオブジェクトに追加する。
map.addControl(new GSmallMapControl());
つぎのコントロールがある。
---
GLargeMapControl - Google マップ上で使用する大きなドラッグ/ズームコントロール。
デフォルトでは地図の左上に表示されます。
GSmallMapControl - Google マップ上で使用する小さなドラッグ/ズームコントロール。
デフォルトでは地図の左上に表示されます。
GSmallZoomControl - ドラッグ コントロールがない小さなズーム コントロール。Google
マップで、車のルートの順序を示す小地図のブローアップ ウィン
ドウ内で使用されています。
GScaleControl - 地図の縮尺
GMapTypeControl - マップ タイプ (地図や航空写真など) をユーザーが切り替えるた
めのボタン
GHierarchicalMapTypeControl - 多くのマップ タイプ セレクタを配置するための入れ子
になったボタンとメニュー アイテム
GOverviewMapControl - 画面の隅にある最小化可能な全体図
---
□ マーカー
マップ上にマーカーを置ける。
addOverlay メソッドを使って、マーカーをマップオブジェクトに追加する。
map.addOverlay(new GMarker(point));
以上
Ajax 逆引きクイックリファレンス
http://www.openspc2.org/reibun/QuickReferenceAjax/index.html
http://book.mycom.co.jp/book/4-8399-2035-4/4-8399-2035-4.shtml
単行本: 319ページ
出版社: 毎日コミュニケーションズ (2006/03)
ISBN-10: 4839920354
ISBN-13: 978-4839920357
発売日: 2006/03
商品の寸法: 24.2 x 17 x 2.4 cm
第一章 Ajaxとは
1. Ajaxとは
2. DHTMLとFlash
3. Ajaxに必要な知識と技術
4. Ajaxの弱点/難点
5. 通信上の制約
6. XMLの処理
7. スタイルシートの注意点
第二章 非同期通信処理
1. サーバーと通信を行う
2. サーバーからテキストデータを読み込む
3. サーバーからXMLデータを読み込む
4. サーバーにgetメソッドでデータを送信する
5. サーバーにpostメソッドでデータを送信する
6. 読み込みを中断する
7. タイムアウト処理を行う
8. サーバーからの応答を調べる
9. ファイルが読み込めない、存在しない場合の処理を行う
10. 取得するデータのMIME形式を指定する
11. 取得するデータのヘッダーを全て読み込む
12. 取得するデータのヘッダーを個別に指定して読み込む
13. ヘッダーを書き換える
第三章 prototype.jsを利用する
1. prototype.jsを使って通信する
2. エラー処理を行う
3. URLパラメータを生成する
4. フォームデータを読み込む
5. 空欄をチェックする
6. HTML, XMLタグカット
7. バージョンを取得する
第四章 XML/HTMLデータへのアクセス
1. 指定したタグの情報を取得する
2. ノードの値を取得する
3. タグ名を取得する
4. ノードの種類を取得する
5. 属性値を参照する
6. 属性名を取得する
7. 子要素に同名のタグがある場合の処理
8. 最後の子要素を参照する
9. XMLデータのタグ間に空白やタブが含まれる場合の処理
10. 子ノードがあるかどうか調べる
11. ノードを複製する
12. 子ノードを追加する
13. ノードを挿入する
14. エレメント(タグ)を作成する
15. 子ノードを削除する
16. 子ノードを入れ替える
第五章 データを受信/送信する
1. サーバー上のテキストファイルを読み込む
2. サーバー上のHTMLファイルを読み込む
3. サーバー上のXMLファイルを読み込む
4. getメソッドでデータを送信する
5. postメソッドでデータを送信する
第六章 データを解析する
1. タブ区切りテキストを表示する
2. CSVデータを表示する
3. ゲームのマップを表示する
4. EXCELのXMLデータを表示する
5. WORDのXMLデータを表示する
6. ファイルメーカーのXMLデータを表示する
7. JSONのデータを表示する
8. 簡単なデータベース検索を行う
第七章 クライアントサイドの技術
1. テキストフィールド/テキストエリアへのアクセス
2. チェックボックスへのアクセス
3. ラジオボタンへのアクセス
4. セレクトメニューへのアクセス
5. div, spanタグへのアクセス
6. imgタグへのアクセス
7. スタイルシートへのアクセス
8. イベントの追加/削除
9. イベントの伝達
10. 右ボタン(コンテキストメニュー表示)の禁止
11. マウス座標を取得する
12. ドラッグ処理を行う
13. 定期的に処理を行う
14. キャッシュさせないようにする
■第八章 特殊効果(エフェクト)
1. 不透明度の処理
2. Rico : フェードイン/フェードアウトの処理
3. Rico : 移動処理
4. Rico : サイズ変更処理
5. Rico : 位置とサイズ変更処理
6. Rico : 角丸四角形
7. Rico : ドラッグ処理
第九章 Google Mapsを利用する
1. Google Mapsを表示する
2. Google Mapsを表示できないブラウザに対処する
3. 移動、ズーム可能な詳細コントロールを表示する
4. 地図←→衛星画像切り替えコントロールを表示する
5. ズームコントロールを表示する
6. 複数のコントロールを表示する
7. コントロールを削除する
8. 表示(地図、衛星写真)を切り替える
9. 表示倍率(ズームイン/ズームアウト)を指定する
10. 表示倍率を取得する
11. 指定座標に移動させる
12. 表示範囲の座標を取得する
13. 指定座標が表示範囲内かどうか調べる
14. 地図の中心座標を取得する
15. 情報ウィンドウを表示する
16. 指定位置の周辺地図を表示する
17. 情報ウィンドウを閉じる
18. 標準のマーカーを表示する
19. カスタムマーカーを表示する
20. マーカーを削除する
21. イベント処理を追加する
22. イベントを削除する
23. 線を表示する
24. 線を削除する
第10章 Yahooを利用する
1. Yahooの検索サービスを利用する
2. 検索でヒットした総数を求める
3. 検索でヒットしクライアントに返された結果数を求める
4. 返された検索結果が何ページ目にあたるかを求める
5. 検索結果の数を指定する
6. 検索結果の開始位置を指定する
7. 検索対象の言語を指定する
8. 検索する文書の種類を指定する
9. 検索するサイトを指定する
10. 検索結果のページのタイトルを表示する
11. 検索結果からページにリンクする
12. 検索結果のサイトのサマリーを表示する
13. 検索結果のページの最終更新日を表示する
14. 検索結果のサムネール画像を表示する
15. 画像形式を指定して検索する
16. 動画のサムネールを表示する
17. 動画形式を指定して検索する
18. 動画の再生時間を取得する
第11章 アマゾンを利用する
1. アマゾンのサービスを利用する
2. 取得するXMLの種類を指定する
3. 指定したジャンルの商品の総数を取得する
4. 書籍名を取得する
5. 金額を表示する
6. 商品ページのURLを取得する
7. 表示条件を設定する
8. サムネール画像を表示する
9. キーワードに一致した商品を表示する
10. レビューを表示する
第12章 Ajax応用サンプル
1. Yahoo! : ランキングチェック
2. Yahoo! : 更新日の新しいページ順に表示
3. 簡易テキストブラウザ
4. スピードチェッカー
http://www.openspc2.org/reibun/QuickReferenceAjax/index.html
http://book.mycom.co.jp/book/4-8399-2035-4/4-8399-2035-4.shtml
単行本: 319ページ
出版社: 毎日コミュニケーションズ (2006/03)
ISBN-10: 4839920354
ISBN-13: 978-4839920357
発売日: 2006/03
商品の寸法: 24.2 x 17 x 2.4 cm
第一章 Ajaxとは
1. Ajaxとは
2. DHTMLとFlash
3. Ajaxに必要な知識と技術
4. Ajaxの弱点/難点
5. 通信上の制約
6. XMLの処理
7. スタイルシートの注意点
第二章 非同期通信処理
1. サーバーと通信を行う
2. サーバーからテキストデータを読み込む
3. サーバーからXMLデータを読み込む
4. サーバーにgetメソッドでデータを送信する
5. サーバーにpostメソッドでデータを送信する
6. 読み込みを中断する
7. タイムアウト処理を行う
8. サーバーからの応答を調べる
9. ファイルが読み込めない、存在しない場合の処理を行う
10. 取得するデータのMIME形式を指定する
11. 取得するデータのヘッダーを全て読み込む
12. 取得するデータのヘッダーを個別に指定して読み込む
13. ヘッダーを書き換える
第三章 prototype.jsを利用する
1. prototype.jsを使って通信する
2. エラー処理を行う
3. URLパラメータを生成する
4. フォームデータを読み込む
5. 空欄をチェックする
6. HTML, XMLタグカット
7. バージョンを取得する
第四章 XML/HTMLデータへのアクセス
1. 指定したタグの情報を取得する
2. ノードの値を取得する
3. タグ名を取得する
4. ノードの種類を取得する
5. 属性値を参照する
6. 属性名を取得する
7. 子要素に同名のタグがある場合の処理
8. 最後の子要素を参照する
9. XMLデータのタグ間に空白やタブが含まれる場合の処理
10. 子ノードがあるかどうか調べる
11. ノードを複製する
12. 子ノードを追加する
13. ノードを挿入する
14. エレメント(タグ)を作成する
15. 子ノードを削除する
16. 子ノードを入れ替える
第五章 データを受信/送信する
1. サーバー上のテキストファイルを読み込む
2. サーバー上のHTMLファイルを読み込む
3. サーバー上のXMLファイルを読み込む
4. getメソッドでデータを送信する
5. postメソッドでデータを送信する
第六章 データを解析する
1. タブ区切りテキストを表示する
2. CSVデータを表示する
3. ゲームのマップを表示する
4. EXCELのXMLデータを表示する
5. WORDのXMLデータを表示する
6. ファイルメーカーのXMLデータを表示する
7. JSONのデータを表示する
8. 簡単なデータベース検索を行う
第七章 クライアントサイドの技術
1. テキストフィールド/テキストエリアへのアクセス
2. チェックボックスへのアクセス
3. ラジオボタンへのアクセス
4. セレクトメニューへのアクセス
5. div, spanタグへのアクセス
6. imgタグへのアクセス
7. スタイルシートへのアクセス
8. イベントの追加/削除
9. イベントの伝達
10. 右ボタン(コンテキストメニュー表示)の禁止
11. マウス座標を取得する
12. ドラッグ処理を行う
13. 定期的に処理を行う
14. キャッシュさせないようにする
■第八章 特殊効果(エフェクト)
1. 不透明度の処理
2. Rico : フェードイン/フェードアウトの処理
3. Rico : 移動処理
4. Rico : サイズ変更処理
5. Rico : 位置とサイズ変更処理
6. Rico : 角丸四角形
7. Rico : ドラッグ処理
第九章 Google Mapsを利用する
1. Google Mapsを表示する
2. Google Mapsを表示できないブラウザに対処する
3. 移動、ズーム可能な詳細コントロールを表示する
4. 地図←→衛星画像切り替えコントロールを表示する
5. ズームコントロールを表示する
6. 複数のコントロールを表示する
7. コントロールを削除する
8. 表示(地図、衛星写真)を切り替える
9. 表示倍率(ズームイン/ズームアウト)を指定する
10. 表示倍率を取得する
11. 指定座標に移動させる
12. 表示範囲の座標を取得する
13. 指定座標が表示範囲内かどうか調べる
14. 地図の中心座標を取得する
15. 情報ウィンドウを表示する
16. 指定位置の周辺地図を表示する
17. 情報ウィンドウを閉じる
18. 標準のマーカーを表示する
19. カスタムマーカーを表示する
20. マーカーを削除する
21. イベント処理を追加する
22. イベントを削除する
23. 線を表示する
24. 線を削除する
第10章 Yahooを利用する
1. Yahooの検索サービスを利用する
2. 検索でヒットした総数を求める
3. 検索でヒットしクライアントに返された結果数を求める
4. 返された検索結果が何ページ目にあたるかを求める
5. 検索結果の数を指定する
6. 検索結果の開始位置を指定する
7. 検索対象の言語を指定する
8. 検索する文書の種類を指定する
9. 検索するサイトを指定する
10. 検索結果のページのタイトルを表示する
11. 検索結果からページにリンクする
12. 検索結果のサイトのサマリーを表示する
13. 検索結果のページの最終更新日を表示する
14. 検索結果のサムネール画像を表示する
15. 画像形式を指定して検索する
16. 動画のサムネールを表示する
17. 動画形式を指定して検索する
18. 動画の再生時間を取得する
第11章 アマゾンを利用する
1. アマゾンのサービスを利用する
2. 取得するXMLの種類を指定する
3. 指定したジャンルの商品の総数を取得する
4. 書籍名を取得する
5. 金額を表示する
6. 商品ページのURLを取得する
7. 表示条件を設定する
8. サムネール画像を表示する
9. キーワードに一致した商品を表示する
10. レビューを表示する
第12章 Ajax応用サンプル
1. Yahoo! : ランキングチェック
2. Yahoo! : 更新日の新しいページ順に表示
3. 簡易テキストブラウザ
4. スピードチェッカー
あけましておめでとうございます。
今年もよろしくお願いいたします。
丑年にちなんで、うしのシュレッダーです。
たまに使います。
2, 3年前に買ったのでもう忘れましたが、値段は1000円くらいだったかな?
今年もよろしくお願いいたします。
丑年にちなんで、うしのシュレッダーです。
たまに使います。
2, 3年前に買ったのでもう忘れましたが、値段は1000円くらいだったかな?
開発環境の BricxCC を使うだけではなく、ちょっと目先を変えて、コマンドラインベー
スで使ってみましょう。
BricxCC のエディッタには多少の不満があるので、コマンドラインベースででも開発でき
ると便利。
本当は、Eclipse で開発できると便利なんだけど、まだ、leJOS に対するものしかなさそ
う。(★)
LDT - leJOS Development Toolset
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-306.html
これも、機会があれば、そのうち試してみたい。
■ 環境変数 PATH の設定
まず、BricxCC のパスをシステムの環境変数 PATH に追加します。
デフォルトのままインストールしたのであれば、「C:\Program Files\BricxCC」にインス
トールされているので、これを環境変数 PATH の最後にセミコロン(;)をつけて、その後
につけます。
■ コマンド nbc
NXC プログラムをコンパイルしたり、ダウンロードするのは、nbc コマンドを用います。
オプション -help で、どのようなコマンドのシンタックスを見てみましょう。
■ コンパイルと NXT へのダウンロード
プログラム Bumper01.nxc をコンパイルしてダウンロードしてみます。
---
C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc
---
コンパイルエラーのときは、以下のように表示されます。今回は、19 行目の
Off(OUT_BC)
文のセミコロンを抜かしました。
■ 目的ファイルの生成
目的ファイルをファイルとして残す場合は、-O オプションを使います。このとき、この
実行ファイルの拡張子は「.rxe」を指定しておきます。
---
> nbc -O=Bumper02.rxe Bumper02.nxc
---
そうすると、Bumper02.rxe というファイルができます。これが、コンパイル後の目的フ
ァイルです。-O オプションで目的ファイル名を指定しないと、どうやら NULL に出力さ
れるようです。(★)
■ 逆コンパイル
この目的ファイルを逆コンパイルするには、-x オプションを使います。
逆コンパイル結果は、標準出力に出ます。
---
C:\_docs\Lego\Bricx_NXC>nbc -x Bumper02.rxe
---
逆コンパイルした結果は、NBC のコードです。
NBC のコードについては、BricxCC をインストールしたフォルダーのサブフォルダーに
Documentation フォルダーがあり、そのなかにガイドとチュートリアルがありますので、
参考にしてください。
C:\Program Files\BricxCC\Documentation
■ NBC ファイルの生成
わざわざ、逆コンパイルしなくても、NBC ファイルを生成するオプションもあります。
NBC ファイルを生成するには、-nbc オプションを使います。
逆コンパイルした結果と、-nbc オプションで生成したファイルを比較しても面白いかも
しれません。
---
C:\_docs\Lego\Bricx_NXC>nbc -nbc=Bumper02.nbc Bumper02.nxc
---
■ NeXTTool - USB & Bluetooth NXT communication utility
NXT と通信をするユーティリティ。
これで取得できる情報や、操作も、ほとんどは BricxCC の [Tools] メニューから取得で
きるので、あまり使うことはないかも。
まずは、オンラインヘルプ。
/COM オプションで接続ポートを指定する。
メモリーに入っているファイルのリストを表示するのは、 -listfiles アクション。= の
後は、バイト数(と思われる★)
また、この出方からいうと、プログラム名は 15 文字以内かな。(★)
バッテリーレベルなどの情報の表示。
バッテリーレベルの単位は mV のようだ。(★)
以上
スで使ってみましょう。
BricxCC のエディッタには多少の不満があるので、コマンドラインベースででも開発でき
ると便利。
本当は、Eclipse で開発できると便利なんだけど、まだ、leJOS に対するものしかなさそ
う。(★)
LDT - leJOS Development Toolset
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-306.html
これも、機会があれば、そのうち試してみたい。
■ 環境変数 PATH の設定
まず、BricxCC のパスをシステムの環境変数 PATH に追加します。
デフォルトのままインストールしたのであれば、「C:\Program Files\BricxCC」にインス
トールされているので、これを環境変数 PATH の最後にセミコロン(;)をつけて、その後
につけます。
■ コマンド nbc
NXC プログラムをコンパイルしたり、ダウンロードするのは、nbc コマンドを用います。
オプション -help で、どのようなコマンドのシンタックスを見てみましょう。
--- > nbc -help Next Byte Codes Compiler version 1.0.1.b34 (1.0.1.34, built Sun Nov 25 20:14:23 CST 2007) Copyright (c) 2006, John Hansen Syntax: nbc [options] filename [options] -S=<portname>: specify port name (COMn or usb), resource name, or alias -BT: use bluetooth -d: download program -b: treat input file as a binary file (don't compile it) -q: quiet -n: prevent the system file from being included -D=<sym>[=<value>]: define macro <sym> -x: decompile program -Z[1|2]: turn on compiler optimizations -O=<outfile> : specify output file -E=<filename> : write compiler errors to <filename> -I=<path>: search <path> for include files -nbc=<filename> : save NXC intermediate NBC code to <filename> -L=<filename> : generate code listing to <filename> -Y=<filename> : generate symbol table to <filename> -w[-|+] : warnings off or on [default is off] -EF : enhanced firmware -safecall: NXC will wrap all function calls in Acquire/Release -api: dump the API to stdout -help : display command line options ---
■ コンパイルと NXT へのダウンロード
プログラム Bumper01.nxc をコンパイルしてダウンロードしてみます。
---
C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc
---
コンパイルエラーのときは、以下のように表示されます。今回は、19 行目の
Off(OUT_BC)
文のセミコロンを抜かしました。
--- C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc # Error: ';' expected File "C:\_docs\Lego\Bricx_NXC\Bumper02.nxc" ; line 20 # unsigned #---------------------------------------------------------- ---
■ 目的ファイルの生成
目的ファイルをファイルとして残す場合は、-O オプションを使います。このとき、この
実行ファイルの拡張子は「.rxe」を指定しておきます。
---
> nbc -O=Bumper02.rxe Bumper02.nxc
---
そうすると、Bumper02.rxe というファイルができます。これが、コンパイル後の目的フ
ァイルです。-O オプションで目的ファイル名を指定しないと、どうやら NULL に出力さ
れるようです。(★)
■ 逆コンパイル
この目的ファイルを逆コンパイルするには、-x オプションを使います。
逆コンパイル結果は、標準出力に出ます。
---
C:\_docs\Lego\Bricx_NXC>nbc -x Bumper02.rxe
---
逆コンパイルした結果は、NBC のコードです。
NBC のコードについては、BricxCC をインストールしたフォルダーのサブフォルダーに
Documentation フォルダーがあり、そのなかにガイドとチュートリアルがありますので、
参考にしてください。
C:\Program Files\BricxCC\Documentation
■ NBC ファイルの生成
わざわざ、逆コンパイルしなくても、NBC ファイルを生成するオプションもあります。
NBC ファイルを生成するには、-nbc オプションを使います。
逆コンパイルした結果と、-nbc オプションで生成したファイルを比較しても面白いかも
しれません。
---
C:\_docs\Lego\Bricx_NXC>nbc -nbc=Bumper02.nbc Bumper02.nxc
---
■ NeXTTool - USB & Bluetooth NXT communication utility
NXT と通信をするユーティリティ。
これで取得できる情報や、操作も、ほとんどは BricxCC の [Tools] メニューから取得で
きるので、あまり使うことはないかも。
まずは、オンラインヘルプ。
--- C:\_docs\Lego\Bricx_NXC>nexttool -help NeXTTool version 1.0 (1.0.10.1, built Mon Nov 5 13:15:27 CST 2007) Copyright (c) 2006 John Hansen Usage: NeXTTool [options] [actions] Options: /COM=port: specify port name (COMn, usb, resource string, or alias) /BT[=name]: use bluetooth (selects the first brick found or the named brick) /HEX: use hexidecimal for numeric output /Duration=<n>: specify the tone duration for the playtone action /Inbox=<n>: use inbox number n when sending or reading a message /Loop: loop when playing sound files /Relative: reset output position relative /Empty: empty mailbox when reading /Bin[=filename]: dump data output as binary to a file (nxt.bin) Actions: -init : initialize nxt.dat file -listbricks : list resource names of all found NXT bricks -clear : erase all items on the brick -battery : return the battery level -input=<N> : read input N (0-3) -output=<N> : read the status of output N (0-2) -mute : stop playing sounds -playtone=<frequency> : play a tone for the specified duration -run=<filename> : run the specified program -runningprogram : return the name of the currently running program -stop : stop the currently running program -playfile=<filename> : play the specified sound file -firmware=<filename> : download firmware -download=<filename> : download the specified file to the NXT -upload[=<pattern>] : upload the specified file(s) from the NXT (or *.*) -listfiles[=<pattern>] : list the files matching the pattern (or *.*) -listmodules[=<pattern>] : list the modules matching the pattern (or *.*) -delete=<filename> : delete the specified file from the NXT -datalog | -datalog_full: upload datalog (_full == verbose) -eeprom=<n> | -eeprom_full: upload eeprom block (_full == all blocks) -memory=<n> | -memory_full: upload 128 bytes of memory (_full == all memory) -map: upload memory map -keepalive : return the current sleep time limit -sleep=<timeout> : set NXT sleep timeout (in minutes) -msg=<string> : send the specified message to the NXT -readmsg=<box> : read the message from the specified box -resetoutputposition=<port> : reset the position for the specified port -resetinputsv=<port> : reset the input scaled value for the specified port -setname=<new_name> : set the name of the NXT -getname : return the name of the NXT -versions : return the NXT firmware and protocol versions -deviceinfo : return all NXT device information -freemem : return the amount of free memory -lsstatus=<port> : return the low speed status for the specified port -boot : reset the NXT into SAMBA mode (usb only) -btreset : reset the NXT bluetooth to factory settings (usb only) -defrag : defragment the NXT filesystem General: -help : display command line options ---
/COM オプションで接続ポートを指定する。
メモリーに入っているファイルのリストを表示するのは、 -listfiles アクション。= の
後は、バイト数(と思われる★)
また、この出方からいうと、プログラム名は 15 文字以内かな。(★)
--- C:\_docs\Lego\Bricx_NXC>nexttool /COM=usb -listfiles Test01.rxe=748 Trybot02.rxe=1744 Bumper02.rxe=714 Bumper01.rxe=676 Sensor01.rxe=1796 HelloWorld01.rxe=542 Trybot01.rxe=1642 TouchSensor01.rxe=444 UltrasonicSenso.rxe=1664 TouchSensor02.rxe=710 Random02.rxe=1366 TrunRight05.rxe=528 Random01.rxe=710 Spiral01.rxe=508 TrunRight04.rxe=516 TrunRight03.rxe=524 TrunRight02.rxe=482 TurnRight01.rxe=468 ForwardAndBackw.rxe=6040 LineTracer01.rxe=11522 NVConfig.sys=1 RPGReader.sys=14346 Demo.rxe=9436 Try-Touch.rtm=3788 Try-Light.rtm=4456 Try-Sound.rtm=6864 Try-Ultrasonic.rtm=3756 Try-Motor.rtm=2630 Woops.rso=4699 faceopen.ric=316 faceclosed.ric=316 ! Startup.rso=8161 ! Click.rso=451 ! Attention.rso=1755 ---
バッテリーレベルなどの情報の表示。
--- C:\_docs\Lego\Bricx_NXC>nexttool /COM=usb -battery -versions -deviceinfo 7076 Protocol version = 1.124 Firmware version = 1.03 Brick name = NXT Bluetooth Address = 00:12:AB:34:CD:56 Bluetooth signal strength = 0,0,0,0 Free memory = 34000 ---
バッテリーレベルの単位は mV のようだ。(★)
以上
■ rso ファイル
2 つのサウンドファイル(.rso)を鳴らします。
最初は、NTX の起動音を 2 秒間。つぎに、"Good Job" を 2 秒間
繰り返します(実際には、2回と少し)。
□ PlayFileEx("! Startup.rso", 2, false); // (1)
指定された rso ファイルを鳴らすのは、PlayFileEx 関数を使いま
す。
このとき、つぎに Wait 関数を指定しないと、音は鳴りません。
□ PlayFileEx 関数
---
PlayFileEx(filename, volume, bLoop) Function
指定されたサウンドファイル(.rso)またはメロディファイル(.rmd)
を鳴らす。このとき、音量は、0 (無音) から 4 (最大)まで指定で
きます。また、繰り返すかどうかを bool 型の bLoop で指定しま
す。true のときは繰り返します。
例:
PlayFileEx("startup.rso", 3, true);
---
□ PlayFileEx("Good Job.rso", 2, true); // (2)
"Good Job" を繰り返します。
ただし、これはもしかしたら鳴らないかもしれません。これは、指
定されたサウンドファイル "Good Job.rso" が NXT の中に入って
いないからです。
ちなみに、ファームウェア v1.03 をダウンロードした直後だと、
つぎの rso ファイルがあります。
! Attention.rso
! Click.rso
! Startup.rso
Woops.rso
□ ファイルのダウンロード
[Tools] メニュー から、 [NeXT Explorer] 項目をクリックして、
NeXT Explorer を開いてください。左側のペインが、NXT のファイ
ルのリスト。右側のペインがローカルのファイルシステムです。
NXT のファイルリストの中に、指定された "Good Job.rso" がなけ
れば、ローカルからそのファイルをドラッグしてダウンロードしま
す。
サウンドファイルは、Lego ソフトウェアをインストールしたディ
レクトリのサブディレクトリにいろいろと入っています。標準の場
所にインストールしたのなら、つぎのディレクトリになります。
C:\Program Files\LEGO Software\LEGO MINDSTORMS NXT\engine\So
unds
NeXT Explorer の右側のペインを操作して、目的のファイルを左側
のペインにドラッグすれば、ファイルのダウンロードは終わりです。
ダウンロードできたら、もう 1 度実行しましょう。今度は、"Good
Job" を繰り返します。
■ 音を鳴らす
トーンを使って、音を鳴らすことができます。これには、周波数、
持続時間、音量を指定する PlayToneEx 関数を使います。また、こ
の関数も PlayFileEx 関数と同じように Wait 関数を使わないと、
実際には音は鳴りません。
□ PlayToneEx(1976, 400, 2, false); Wait(500); // (1)
周波数 1976、持続時間 400 ミリ秒、音量 2 でトーンを鳴らしま
す。
ただし、この関数も、すぐにつぎの命令を実行してしまうので、
Wait 関数を使ってスリープ状態を作ってあげなければなりません。
多少、持続時間に余裕を持たせてあげた方がいいでしょう。
□ PlayToneEx 関数
---
PlayToneEx(frequency, duration, volume, bLoop) Function
トーンを、周波数、持続時間、音量を指定して鳴らす。周波数は
Hz、持続時間はミリ秒、音量は 0 (なし) から 4 (最大)を指定す
る。
例:
PlayToneEx(440, 500, 2, false);
---
□ 周波数はつぎの表によります。
■ トーンを鳴らすマクロ
PlayingMusic01 と同じであるが、PlayToneEx 関数と Wait 関数を
使ったマクロ PLAY_TONE を作る。引数は PlayToneEx に加えて、
間隔時間として interval を指定する。duration + interval で、
Wait 関数の時間とする。
ついでに、音階 A を 3 から 9 まで鳴らしてみる。
■ 実際の音楽っぽく
つぎは、ある曲を実装したものです。
楽譜を基に実装したのだが、まったく違うものらしい。
わたしの楽譜の読み方が違うのか、周波数のトーンが間違っている
のか?
(中学の音楽は 1 がついたこともあったくらいなので...)
周波数をあらわすマクロなどもまとめて、ヘッダーファイルにしておくといいでしょう。
以上
2 つのサウンドファイル(.rso)を鳴らします。
最初は、NTX の起動音を 2 秒間。つぎに、"Good Job" を 2 秒間
繰り返します(実際には、2回と少し)。
--- /** * PlayingFile01.nxc * 「トライボット」使用 * rso ファイルを鳴らす。 * @author maruno * @version 1.0, 2008-01-12 * @since 1.0 */ #include "NXCDefs.h" task main() { PlayFileEx("! Startup.rso", 2, false); // (1) Wait(2000); PlayFileEx("Good Job.rso", 2, true); // (2) Wait(2000); } ---
□ PlayFileEx("! Startup.rso", 2, false); // (1)
指定された rso ファイルを鳴らすのは、PlayFileEx 関数を使いま
す。
このとき、つぎに Wait 関数を指定しないと、音は鳴りません。
□ PlayFileEx 関数
---
PlayFileEx(filename, volume, bLoop) Function
指定されたサウンドファイル(.rso)またはメロディファイル(.rmd)
を鳴らす。このとき、音量は、0 (無音) から 4 (最大)まで指定で
きます。また、繰り返すかどうかを bool 型の bLoop で指定しま
す。true のときは繰り返します。
例:
PlayFileEx("startup.rso", 3, true);
---
□ PlayFileEx("Good Job.rso", 2, true); // (2)
"Good Job" を繰り返します。
ただし、これはもしかしたら鳴らないかもしれません。これは、指
定されたサウンドファイル "Good Job.rso" が NXT の中に入って
いないからです。
ちなみに、ファームウェア v1.03 をダウンロードした直後だと、
つぎの rso ファイルがあります。
! Attention.rso
! Click.rso
! Startup.rso
Woops.rso
□ ファイルのダウンロード
[Tools] メニュー から、 [NeXT Explorer] 項目をクリックして、
NeXT Explorer を開いてください。左側のペインが、NXT のファイ
ルのリスト。右側のペインがローカルのファイルシステムです。
NXT のファイルリストの中に、指定された "Good Job.rso" がなけ
れば、ローカルからそのファイルをドラッグしてダウンロードしま
す。
サウンドファイルは、Lego ソフトウェアをインストールしたディ
レクトリのサブディレクトリにいろいろと入っています。標準の場
所にインストールしたのなら、つぎのディレクトリになります。
C:\Program Files\LEGO Software\LEGO MINDSTORMS NXT\engine\So
unds
NeXT Explorer の右側のペインを操作して、目的のファイルを左側
のペインにドラッグすれば、ファイルのダウンロードは終わりです。
ダウンロードできたら、もう 1 度実行しましょう。今度は、"Good
Job" を繰り返します。
■ 音を鳴らす
トーンを使って、音を鳴らすことができます。これには、周波数、
持続時間、音量を指定する PlayToneEx 関数を使います。また、こ
の関数も PlayFileEx 関数と同じように Wait 関数を使わないと、
実際には音は鳴りません。
--- /** * PlayingMusic01.nxc * 「トライボット」使用 * 音を鳴らす。 * @author maruno * @version 1.0, 2008-01-12 * @since 1.0 */ #include "NXCDefs.h" task main() { // 音階6 を B から C まで PlayToneEx(1976, 400, 2, false); Wait(500); PlayToneEx(1865, 400, 2, false); Wait(500); PlayToneEx(1760, 400, 2, false); Wait(500); PlayToneEx(1661, 400, 2, false); Wait(500); PlayToneEx(1568, 400, 2, false); Wait(500); PlayToneEx(1480, 400, 2, false); Wait(500); PlayToneEx(1397, 400, 2, false); Wait(500); PlayToneEx(1319, 400, 2, false); Wait(500); PlayToneEx(1245, 400, 2, false); Wait(500); PlayToneEx(1175, 400, 2, false); Wait(500); PlayToneEx(1109, 400, 2, false); Wait(500); PlayToneEx(1047, 400, 2, false); Wait(500); } ---
□ PlayToneEx(1976, 400, 2, false); Wait(500); // (1)
周波数 1976、持続時間 400 ミリ秒、音量 2 でトーンを鳴らしま
す。
ただし、この関数も、すぐにつぎの命令を実行してしまうので、
Wait 関数を使ってスリープ状態を作ってあげなければなりません。
多少、持続時間に余裕を持たせてあげた方がいいでしょう。
□ PlayToneEx 関数
---
PlayToneEx(frequency, duration, volume, bLoop) Function
トーンを、周波数、持続時間、音量を指定して鳴らす。周波数は
Hz、持続時間はミリ秒、音量は 0 (なし) から 4 (最大)を指定す
る。
例:
PlayToneEx(440, 500, 2, false);
---
□ 周波数はつぎの表によります。
--- Sound 3 4 5 6 7 8 9 B 247 494 988 1976 3951 7902 A# 233 466 932 1865 3729 7458 A 220 440 880 1760 3520 7040 14080 G# 415 831 1661 3322 6644 13288 G 392 784 1568 3136 6272 12544 F# 370 740 1480 2960 5920 11840 F 349 698 1397 2794 5588 11176 E 330 659 1319 2637 5274 10548 D# 311 622 1245 2489 4978 9956 D 294 587 1175 2349 4699 9398 C# 277 554 1109 2217 4435 8870 C 262 523 1047 2093 4186 8372 ---
■ トーンを鳴らすマクロ
PlayingMusic01 と同じであるが、PlayToneEx 関数と Wait 関数を
使ったマクロ PLAY_TONE を作る。引数は PlayToneEx に加えて、
間隔時間として interval を指定する。duration + interval で、
Wait 関数の時間とする。
ついでに、音階 A を 3 から 9 まで鳴らしてみる。
--- /** * PlayingMusic02.nxc * 「トライボット」使用 * 音を鳴らす。 * @author maruno * @version 1.0, 2008-01-12 * @since 1.0 */ #include "NXCDefs.h" #define PLAY_TONE(frequency, duration, volume, bLoop, interval) \ do { \ PlayToneEx((frequency), (duration), (volume), (bLoop)); \ Wait((duration)+(interval)); \ } while(false) task main() { // 音階6 を B から C まで PLAY_TONE(1976, 400, 2, false, 100); PLAY_TONE(1865, 400, 2, false, 100); PLAY_TONE(1760, 400, 2, false, 100); PLAY_TONE(1661, 400, 2, false, 100); PLAY_TONE(1568, 400, 2, false, 100); PLAY_TONE(1480, 400, 2, false, 100); PLAY_TONE(1397, 400, 2, false, 100); PLAY_TONE(1319, 400, 2, false, 100); PLAY_TONE(1245, 400, 2, false, 100); PLAY_TONE(1175, 400, 2, false, 100); PLAY_TONE(1109, 400, 2, false, 100); PLAY_TONE(1047, 400, 2, false, 100); Wait(500); // 音階A を 3 から 9 まで PLAY_TONE(220, 400, 2, false, 100); PLAY_TONE(440, 400, 2, false, 100); PLAY_TONE(880, 400, 2, false, 100); PLAY_TONE(1760, 400, 2, false, 100); PLAY_TONE(3520, 400, 2, false, 100); PLAY_TONE(7040, 400, 2, false, 100); PLAY_TONE(14080, 400, 2, false, 100); } ---
■ 実際の音楽っぽく
つぎは、ある曲を実装したものです。
楽譜を基に実装したのだが、まったく違うものらしい。
わたしの楽譜の読み方が違うのか、周波数のトーンが間違っている
のか?
(中学の音楽は 1 がついたこともあったくらいなので...)
--- /** * PlayingMusic03.nxc * 「トライボット」使用 * 音を鳴らす。 * @author maruno * @version 1.0, 2008-01-12 * @since 1.0 */ #include "NXCDefs.h" #define FR_B3 247 #define FR_B4 494 #define FR_B5 988 #define FR_B6 1976 #define FR_B7 3951 #define FR_B8 7902 #define FR_AS3 233 #define FR_AS4 466 #define FR_AS5 932 #define FR_AS6 1865 #define FR_AS7 3729 #define FR_AS8 7458 #define FR_A3 220 #define FR_A4 440 #define FR_A5 880 #define FR_A6 1760 #define FR_A7 3520 #define FR_A8 7040 #define FR_A9 14080 #define FR_GS4 415 #define FR_GS5 831 #define FR_GS6 1661 #define FR_GS7 3322 #define FR_GS8 6644 #define FR_GS9 13288 #define FR_G4 392 #define FR_G5 784 #define FR_G6 1568 #define FR_G7 3136 #define FR_G8 6272 #define FR_G9 12544 #define FR_FS4 370 #define FR_FS5 740 #define FR_FS6 1480 #define FR_FS7 2960 #define FR_FS8 5920 #define FR_FS9 11840 #define FR_F4 349 #define FR_F5 698 #define FR_F6 1397 #define FR_F7 2794 #define FR_F8 5588 #define FR_F9 11176 #define FR_E4 330 #define FR_E5 659 #define FR_E6 1319 #define FR_E7 2637 #define FR_E8 5274 #define FR_E9 10548 #define FR_DS4 311 #define FR_DS5 622 #define FR_DS6 1245 #define FR_DS7 2489 #define FR_DS8 4978 #define FR_DS9 9956 #define FR_D4 294 #define FR_D5 587 #define FR_D6 1175 #define FR_D7 2349 #define FR_D8 4699 #define FR_D9 9398 #define FR_CS4 277 #define FR_CS5 554 #define FR_CS6 1109 #define FR_CS7 2217 #define FR_CS8 4435 #define FR_CS9 8870 #define FR_C4 262 #define FR_C5 523 #define FR_C6 1047 #define FR_C7 2093 #define FR_C8 4186 #define FR_C9 8372 #define NOTE_SEMIBREVE 1200 // 全音符 #define NOTE_MINIM (NOTE_SEMIBREVE / 2) // 二分音符 #define NOTE_CROTCHET (NOTE_MINIM / 2) // 四分音符 #define NOTE_QUAVER (NOTE_CROTCHET / 2) // 八分音符 #define PLAY_TONE(frequency, duration, volume, bLoop, interval) \ do { \ PlayToneEx((frequency), (duration), (volume), (bLoop)); \ Wait((duration)+(interval)); \ } while(false) #define INTERVAL 80 task main() { PLAY_TONE(FR_C6, NOTE_MINIM, 2, false, INTERVAL); PLAY_TONE(FR_C5, NOTE_QUAVER, 2, false, INTERVAL); PLAY_TONE(FR_C4, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_C5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL + NOTE_CROTCHET); PLAY_TONE(FR_DS5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_DS5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_DS5, NOTE_CROTCHET, 2, false, INTERVAL + NOTE_CROTCHET); PLAY_TONE(FR_G6, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_G8, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_G8, NOTE_CROTCHET, 2, false, INTERVAL + NOTE_CROTCHET); PLAY_TONE(FR_C6, NOTE_MINIM, 2, false, INTERVAL); PLAY_TONE(FR_C5, NOTE_QUAVER, 2, false, INTERVAL); PLAY_TONE(FR_C4, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_C5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_AS6, NOTE_CROTCHET, 2, false, INTERVAL + NOTE_CROTCHET); PLAY_TONE(FR_DS5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_DS5, NOTE_CROTCHET, 2, false, INTERVAL); PLAY_TONE(FR_DS6, NOTE_MINIM, 2, false, INTERVAL); PLAY_TONE(FR_DS5, NOTE_QUAVER, 2, false, INTERVAL); PLAY_TONE(FR_C4, NOTE_SEMIBREVE, 2, false, INTERVAL); } ---
周波数をあらわすマクロなどもまとめて、ヘッダーファイルにしておくといいでしょう。
以上
http://pc.bookmall.co.jp/search/info.php?Code=0000001481198&PCID=18537e441a0023a86e5803da01723d03
著者 吉池美由喜、野口庄一、和田泰子、たかぎ 著
出版社 ローカス
ISBN 978-4-89814-836-5
発行日 2007年08月31日
価格 \2,205 (本体\2,100)
仕様 B6判278頁 二色刷
著者 吉池美由喜、野口庄一、和田泰子、たかぎ 著
出版社 ローカス
ISBN 978-4-89814-836-5
発行日 2007年08月31日
価格 \2,205 (本体\2,100)
仕様 B6判278頁 二色刷
プログラマの数学
http://www.hyuki.com/math/
著者 結城浩 著
サイズ種別 B5変/1色
ページ数 272
ISBN 4-7973-2973-4
価格 2310円(税込)
出版日 2005/03/25
第1章 ゼロの物語 ―― 「ない」ものが「ある」ことの意味
10進法 / 2進法 / 位取り記数法 / 指数法則 / 0の果たす役割 / 人間の限界と構造の発見
第2章 論理 ―― trueとfalseの2分割
どうして論理が大切なのか / 網羅的で排他的な分割 / 演算子で複雑な命題を組み立てる / ド・モルガンの法則 / カルノー図 / 未定義を含む論理
第3章 剰余 ―― 周期性とグループ分け
曜日クイズ / オセロで通信 / 恋人探し / 畳の敷き詰め / 一筆書き
第4章 数学的帰納法 ―― 無数のドミノを倒すには
ガウス少年 / 数学的帰納法 / オセロクイズ / ループ・インバリアント
第5章 順列・組み合わせ ―― 数えないための法則
数えるとは / 植木算 / 数え上げの法則 / 置換 / 順列 / 組み合わせ
第6章 再帰 ―― 自分で自分を定義する
ハノイの塔 / 階乗 / フィボナッチ数列 / パスカルの3角形 / 再帰的な図形
第7章 指数的な爆発 ―― 困難な問題との戦い
倍倍ゲーム / バイナリサーチ / 対数 / 計算尺 / 暗号
第8章 計算不可能な問題 ―― 数えられない数、プログラムできないプログラム
背理法 / カウンタブル / 対角線論法 / 計算不可能な問題 / 停止判定問題
第9章 プログラマの数学とは ―― まとめにかえて
本書を振り返って / 問題を解くということ / ファンタジーの法則
http://www.hyuki.com/math/
著者 結城浩 著
サイズ種別 B5変/1色
ページ数 272
ISBN 4-7973-2973-4
価格 2310円(税込)
出版日 2005/03/25
第1章 ゼロの物語 ―― 「ない」ものが「ある」ことの意味
10進法 / 2進法 / 位取り記数法 / 指数法則 / 0の果たす役割 / 人間の限界と構造の発見
第2章 論理 ―― trueとfalseの2分割
どうして論理が大切なのか / 網羅的で排他的な分割 / 演算子で複雑な命題を組み立てる / ド・モルガンの法則 / カルノー図 / 未定義を含む論理
第3章 剰余 ―― 周期性とグループ分け
曜日クイズ / オセロで通信 / 恋人探し / 畳の敷き詰め / 一筆書き
第4章 数学的帰納法 ―― 無数のドミノを倒すには
ガウス少年 / 数学的帰納法 / オセロクイズ / ループ・インバリアント
第5章 順列・組み合わせ ―― 数えないための法則
数えるとは / 植木算 / 数え上げの法則 / 置換 / 順列 / 組み合わせ
第6章 再帰 ―― 自分で自分を定義する
ハノイの塔 / 階乗 / フィボナッチ数列 / パスカルの3角形 / 再帰的な図形
第7章 指数的な爆発 ―― 困難な問題との戦い
倍倍ゲーム / バイナリサーチ / 対数 / 計算尺 / 暗号
第8章 計算不可能な問題 ―― 数えられない数、プログラムできないプログラム
背理法 / カウンタブル / 対角線論法 / 計算不可能な問題 / 停止判定問題
第9章 プログラマの数学とは ―― まとめにかえて
本書を振り返って / 問題を解くということ / ファンタジーの法則