カテゴリー : 2010年 8月

吹き出しを表示するツールチップ

ブログの記事や、自分の場合では Webアプリケーションなどで、その言葉やカラムが何を意味するのか説明を加えたいときがある。プログラムで一覧表など作っている場合は、特にそのID(数字)がどのテーブルデータにリンクしているのか、リンク先データの名前を示したい。が、画面サイズは限りがあるので、一覧表に何でもかんでも掲載できない。

そのような制約がある中で、マウスカーソルをその上に置くと吹き出しとなって表示する、ツールチップと呼ばれる機能が重宝する。情報量が多い場合は Ajax を利用する方法もあるが、そこまでする必要がない場合はツールチップが役に立つ。

で、何か気のきいた jQuery プラグインを利用してその紹介記事を、と思ったのだ。が、試しているうちにツールチップの表示は、どうやらブラウザがデフォルトでその機能を有しているのではないか?という事に思い当った。

と言うのも、HTML タグに title 属性を追加することで、div のようなブロックタグでも、span のようなインラインタグでもツールチップを表示するからである。これは、HTML では一般的なのだろうか?

お恥ずかしい事に、title 属性をあまり意識して使っていなかった。これからは是非利用させていただこう。

あなたのブラウザで、上の太字の「ツールチップ」にマウスカーソルを置いて説明文が表示されるか、試してみて下さい。

WordPress で jQuery と UI を簡単に組み込む方法

プラグインを作っていて気が付いた事の備忘録。

プラグインで利用する jQuery と jQuery UI を利用した JavaScript ソース「test.js」がプラグインディレクトリにあるとき、「wp_enqueue_script()」を利用して次のように記述すれば、WordPress にバンドルされた jQuery の各ソースと共にHTMLヘッダ部にscriptタグで組み込まれる。

wp_enqueue_script('test-js', plugin_dir_url(__FILE__) . 'test.js', array('jquery', 'jquery-ui-core', 'jquery-ui-dialog'));

WordPress にバンドルされている JavaScript ライブラリとハンドル名の一覧は、wp_enqueue_script リファレンスに掲載されている。

ブラウザで位置情報を取得するGeolocation APIを使ってみる

W3Cから、ブラウザで位置情報を取得する Geolocation API 仕様書の草案が公開されている。

どうやら JavaScript を使って、 GPS 機能があるデバイスから位置情報が取り出せる仕様のようだ。GPS 機能が無い場合は、IPアドレス、RFID、WiFI や Bluetooth MAC アドレス、GSM/CDMA セル ID などから推定された情報を戻すとの事。この機能を JavaScript の「navigator.geolocation」オブジェクトとして利用できるらしい。

以下、試した内容の備忘録です。Firefox 3.6.8、Chrome 5.0.375.126 で動作しました。IE8はNG。

先ずは位置情報の取得から。プログラムは簡単です。

<html>
<head>
<title>Test Geolocation API</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
	google.load("jquery", "1.4.2");
</script>
<script type="text/javascript">
$(document).ready(function() {
	var showMap = function(position) {
		// Show a map centered at (position.coords.latitude, position.coords.longitude).
		alert("緯度:" + position.coords.latitude + " 経度:" + position.coords.longitude);
	}

	// One-shot position request.
	navigator.geolocation.getCurrentPosition(showMap);
});
</script>
</head>
<body>
<h1>Test Geolocation API</h1>
</body>
</html>

マウスをソース上に置くと右上にアイコンメニューが表示されるので、コピーしてテキストエディタで test.html として保存、そのままブラウザで指定すれば実行できます。ブラウザを開くと位置情報の許可を求めてくるので許可すると、しばらくしてから位置情報が戻ってくる。

次のボタンで試せます(Firefoxだと表示まで5,6秒時間が掛ります)。
※ ライブラリ内部でエラーが発生して動作しない場合がありました。無線LANルータが原因?

位置情報が取得できるなら Google マップで現在地を表示するなど、アプリケーションへの活用もいろいろできそう。以下戻ってきた位置をマップ上に表示するプログラムです。リンクは、The Google Maps Javascript API V3 のドキュメントです。

<html>
<head>
<title>Test Geolocation API</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
	google.load("jquery", "1.4.2");
</script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&region=ja"></script>
<script type="text/javascript">
$(document).ready(function() {
	var showMap = function(position) {
		var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
		var options = {
			zoom: 16,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};

		var map = new google.maps.Map($("#map_canvas").get(0), options);
		var marker = new google.maps.Marker({
						map: map,
						position: latlng
					});
	}

	$("#abtn").click(function() {
		navigator.geolocation.getCurrentPosition(showMap);
		return false;
	});
});
</script>
</head>
<body>
<h1>Test Geolocation API</h1>
<p><input type="button" id="abtn" value="現在地表示" /></p>
<div id="map_canvas" style="width:480px; height:400px;"></div>
</body>
</html>

以下のボタンを押すと、実際に地図と現在地を表示します。

いかがでしたか?

iPhone 3GS 4.0.2 の Safari で、このページで地図を表示する事ができた。が、これはどこを表示しているのだろう?

JavaScriptのreplaceで正規表現と変数利用

CMS(WordPress)の管理画面上で、フォームの項目をユーザーがボタンを押して追加する動作を、jQueryを使って「DOMをコピーしよう」と考えたのは名案だと思った。ところがタグに付けられた id 属性や name 属性が重複するため、支障がある事に気付いた。この記事は、それを書き換えるのに利用した JavaScript の replace と正規表現による置き換えや、Windows 操作の Tips 備忘録です。

replace の引数、文字列と正規表現

date = "2010-08-20";
when = date.replace("-", "/");
alert(when);

を実行すると、「2010/08-20」と置き換えられる。そこで

when = date.replace(/-/g, "/");

と、修飾子gを使って正規表現で実行すれば、希望通り「2010/08/20」が得られる。

それでは、「-」を変数 c とした場合、どうすればいいのだろう。

date = "2010-08-20";
c = "-";
when = date.replace(eval("/"+c+"/g"), "/");
alert(when);

ところで日付データが「2010/08/20」で、URIエンコードで「2010%2F08%2F20」としたいときは?

date = "2010/08/20";
c = "\\/";
uriwhen = date.replace(eval("/"+c+"/g"), "%2F");
alert(uriwhen);

エスケープする文字の前にエスケープ文字をエスケープすれば、即ち「¥¥」と重ねておけばいいようだ。

alert 表示が画面サイズになったときの終了方法

変数の内容を確認するため alert() 表示したら、うっかり画面一杯表示されてしまい困ってしまった。
alert表示が画面一杯、あらら

[alt]+[ctrl]+[del]でタスクを終了すると、ブラウザの終了で他に開いているページまで(T_T)ノシ てなことになる。

カレントウィンドウの終了は、[alt]+[space]でウィンドウタイトルのメニューを開いて終了すればよい。

2010-07-31 テント1泊 白馬三山と不帰嶮から八方へ その2

テント1泊 白馬三山と不帰嶮から八方へ その1 へ戻る

テン場では17時頃から雨が降り、夜も降り続けた。夕食は、マカロニにレトルトのカルボナーラを掛けたものだが、体を使いすぎたせいか食欲が湧かず残してしまった。しばらく置いてから片付け、翌日に備えて早々に就寝することにした。

夜半何回も目を覚まし、その度に雨が降っているので、鑓ヶ岳温泉へ下降することも考えた。が、3時30分に目が覚めると雨は上がり、雲はなく、山や星がハッキリ見えた。おかげでモチベーションも回復、朝食のラーメンを食べて出発する事に決めた。今日は不帰嶮だ!

テントを撤収、小屋で用を足し、4:45出発。雪渓のおいしい水1L+0.5Lを持つ。シュラフやテントが水分を含んでいるせいか、軽くなってないようだ。小屋の横から来た登山道を振り返ると、白馬鑓ヶ岳がくっきり見える。

今日は天気が良さそうだ、とこの時は思った。

緩やかな登りから稜線を進み、途中で横から射し始めた朝日に手を合わせる。

一登りすると、天狗の頭に到着。眺めが大変良い。西側のピラミッドのように見えているのは、剱岳だろうか?

振り返ってみると、白馬鑓ヶ岳の向こうに見えるのが白馬岳だろう。

そしてこれから越えようとする不帰嶮は… どうやら流れる雲に隠されているようだ。天狗の大下りから登り返しがあるが、残念ながらベールで隠されてしまっている。

稜線は天狗の大下りに向かって、緩やかに下降して行く。そのうちガスに巻かれ始めてきた。こんな時太陽と反対の方向を見れば。久しぶりにブロッケン現象に遭遇した。デジカメに収めてみると、肉眼で見るよりハッキリ虹輪が写っていた。

天狗の大下りに掛る頃には、すっかりガスに包まれてしまった。見える範囲は、20mから40mぐらいと言ったところか。

登山道は一気に下降し、岩を掴みながら足を下ろして行く。鎖場もあるが、垂直ではないので恐怖感はない。長い鎖場が1ヶ所あり、そこを抜けるとつづら折りの下降を繰り返す。ガスは布に小さな水の粒を作り、湿り気が多い。いつしか方向感覚は失われてしまった。

出発してから1時間半ぐらいしたところで、どうやら最下降点のコルに着いたようで、いよいよ登り返しが始まった。出だしは多少岩を掴みながらとなったが、不帰1峰はそれほどきつくはないようだ。

登り切ったところで1峰の頭に着いたようだ(6:40)。

1峰の頭から少し下り、左上する岩壁を見るといよいよ2峰の始まりである。コルでは10名のツアー団体と思われる人たちが、休息やカッパを着るなど準備をしており、ツアーを率いる65才前後のリーダー格の人が、自分に先に行くように指示を出した。

自分もカッパを着るので、先に行ってもらった。ここからしばらく、この団体ツアーの後ろをついて行く事になる。

おばさんの多いツアー客を連れている関係で、大きな声で話が切れることなく、足の置く位置や以前の事や冬山の事など話し続けている。が、たまにこちらの事に話の内容を振ったりするのは余計だ。ほっといて欲しい。

右側は多分切落ちてるのでしょうね。

ここを登ると、格子状の鉄の橋がある。多分この辺が、天気が良ければ一番怖いところかな?と思う。

一段登ると、凹角に切れ落ちた所をまたぐ鉄の橋が掛っている。足元は、直下が抜け落ちているので怖い。写真は渡った後振り返ってみた所。

更に崖っぷちを登って行くと、少し開けたところで前のパーティーが休息していた。そのまま通過し、さらによじ登って行くと前方から団体様が下降してきた。ここにも口うるさいおばさんがおり、人の事を何か言っていた。旦那と思われる爺さんが「人の事はいいから」とか注意していた。そう、山では倒れてない限り人の事はほっといて欲しい。

そこを通過したところで、いよいよ最後のバンドを通過する。信州側のこちらは、鎖はない。写真は、このまま上に登って行くと思ったら、印のある岩をバンドが左下に下降していた。

後ろに付いた10人パーティーのガイドの親父さんが言うには、冬場はこのまままっすぐ上に登って行くとか。

バンドを左下に下降し右に回り込むと少しの登りになるが、小中学生の娘2人を連れた家族が下降してきた。彼らにはこの先に、崖っぷちの下降が待っている。さて、この登りをこなしたところでいやらしいトラバース地点となった。

対向する2パーティーの通過を見送り、トラバースに取り掛かる。ここがいやらしかったのは、スラブ状の岩場で、なおかつ足の置き場が悪いのである。手でホールドを掴むと体が上がるため、左足を置くホールドが斜め下に来る。そこで、腕を伸ばして股を開き左足をホールドに乗せるのだが、その動作が怖いのだ。

ところで鎖場なので、鎖をしっかり掴めばよい。ガイドの親父さんが、足を下ろせとか鎖を掴めとか、落ちて死んだ人がいるとか、いろいろと世話を焼いてくれた。どうもありがとう(;´д`)。

トラバース後、少し登って不帰北峰の頂上となった。

岩場はⅢ級程度で、手掛かりは沢山あるので注意さえすれば問題ないと思う。実際、団体客やファミリーとすれ違っているので、2度と来たくないと思う人はいるかもしれないけど、命を落とすほどでもないだろう。

頭は開けているので、そこで休息。カッパは暑いので、脱いで行く事にした。岩場はここで終わった。不帰2峰の南峰は、お花を写真に写しながら行った。水滴を帯びたチングルマがとても綺麗だった。

後ろから10人パーティーに追われながら、南峰を過ぎ唐松岳に向かう。途中大きく左に回り込むのだが、ガスに巻かれっぱなしで方向感覚はさっぱりだ。相変わらずガイドの親父さんの声が聞こえ、休むことなく追われるように進み、8:40に唐松岳山頂にたどり着いた。

後は下るだけだ。八方のバスセンターから猿倉へ戻るバスが12時台にあったので、何とか降りたい。地図のコースタイムを見るとなんとか降れそうだ。ガスの中を進み、唐松山荘を過ぎる。大きな山荘だ。

登山道を間違えないように標識を確認し、八方尾根方面に進む。と、何と登山道の脇にライチョウが姿を現していた。周りの人が写真を撮ろうとするので逃げようとするが、逃げ場を失ってオロオロしていた。

八方尾根に入ると、登ってくる登山客が一段と増えてきた。最近はトレイルランが盛んなのか、軽装で走ってくる人が何人かすれ違った。登りの人が来るたびに道を譲ってよけるのだが、その回数も多くて辟易だ。

丸山ケルンまで来ると、ガスも晴れ眺めが得られるようになった。

丸山ケルンから下降途中、樹林帯の手前で団体様を何パーティも見送る。浜ちゃんの10秒飯を飲み、軽く餡ドーナツなど食べやり過ごした。

八方池が見えてくると、夏休みで遊びに来た観光客で混雑も激しくなってきた。口々に景色の雄大さを褒めており、全くその通り、素晴らしい景色だ。多くの人が訪れるのもよく分かる。

10:50 第三ケルンを過ぎ、40分ほど降って八方池山荘のあるリフトの終点だ。ここからは、クワッドを2本乗り継ぎ、黒菱から兎平に降り、ゴンドラで一気に山麓まで降る。料金は1,400円。

ハンググライダー、パラグライダーが上昇気流に乗って飛んでいる。12:00頃山麓駅に到着、八方のメインストリートを歩き、バスセンターに12:10、到着。途中、クマよけの鈴が煩かったらしく、どこかの爺さんになじられた。

上の方は観光客でいっぱいだったが、お昼だと言うのに下の方は閑散としていた。

猿倉までバス代900円、今回も無事に山行終了。


天狗山荘(4:45)-不帰1峰頭(6:40)-唐松岳山頂(8:40)-第三ケルン(10:50)-
バスセンター(12:10)-バス発(12:55)-猿倉駐車場(13:25)