JSON出力を処理するGoogle Gadgetの作り方#1
某組織向けにGoogle Sitesを利用しているが、お知らせ/Announcementsページテンプレートを利用したお知らせページの投稿要約出力機能(ガジェット)は好みの出力ができないし、カスタマイズできるところも限られていて残念なのである。直ぐには思い通りの要約が貼れるGoogle Apps Script(GAS)やGoogle Gadget(GG)を見つけられなかったので、指定したお知らせページの要約出力機能を持つGASまたはGGを作成してみることにした。
一つのガジェットの作成だけに留めず、Googleはもとより、これまでの数年間で相当の利用者・開発者のオープンなネット上で読めるドキュメントが蓄積されているが、まとまっていて特定の目的に絞ったものがないので(書籍やオライリーのネット無料版にあるのかもしれないが)、開発備忘録代わりに残しておくことも念頭にあった。また、この記事に正確なタイトルを付けるなら「RSS JSON出力からタイトルや要約などを抜き出すGoogle Gadgetの作り方」だが、他に応用が利くのと、周辺予備知識の備忘録、GASで最初に実装してみたので、少々曖昧なタイトルのままにしておく。使っていて自然にわかるということは解説しない。(でも稀に簡単なことが思い出せなくて数時間潰す事があるよね?)
最初はサーバーサイドで全て処理させようと思い、Google SitesのGASエディタを利用してスクリプトを書いてみた。タイトルと異なる内容になるが、GASでの実装方法も備忘録代わりに書いていく。実は2種類のスクリプトを書いてみた。一つはHTMLドキュメント中に差し込みを行う方法である。もう一つはパネルやラベルなどのウィジット(widget)を利用したものである。まずは前者の実装を紹介する。
実は、思ったとおりに作れなかった。差し込みを行った後、呼び出されたGASがHTMLドキュメント内から消えてしまい、一度しか更新できないのである。何か知らないこと、見逃していることがあるのであろうが、この方法は使えない。ページに任意の文字列を差し込み・置換しているサンプルスクリプトを拝見してはいるが、ひょっとしてタイムイベントのトリガーで呼び出しているのではと推測している。とりあえず、スクリプトを掲載する。
var MAIL = "メールアドレス";
var DEBUG_MAIL_SUBJECT = "【DEBUG】最新のお知らせ";
var FEED_URL = "http://www.hoge.com/info/posts.xml";
var LINK_URL = "http://www.hoge.com/infoe";
var SITE_NAMESPACE_URL = "http://schemas.google.com/sites/2008";
var TITLE = "お知らせ";
var TARGET = "recent_announcements";
var zero_suppress = false;
var japanese_date_format = true;
function getJapaneseFormatDate( date ) {
var html = "";
html += date.getFullYear() + "年";
var m = date.getMonth() + 1;
if ( !zero_suppress && m < 10 ) html += "0";
html += m + "月";
var d = date.getDate();
if ( !zero_suppress && d < 10 ) html += "0";
html += d + "日";
html += " ";
var h = date.getHours();
if ( !zero_suppress && h < 10 ) html += "0";
html += h + "時";
m = date.getMinutes();
if ( !zero_suppress && m < 10 ) html += "0";
html += m + "分";
var s = date.getSeconds();
if ( !zero_suppress && s < 10 ) html += "0";
html += s + "秒";
return html;
};
function makeSummary( url ) {
var content = "";
var doc = Xml.parse( UrlFetchApp.fetch( url ).getContentText() );
// title of the feed
//content += "<b>" + doc.getElement().getElement( "title" ).getText() + "</b><br><br>"
content += "<b>" + TITLE + "</b><br><br>"
var entries = doc.getElement().getElements( "entry" );
for ( var entry in entries ) {
// date of a entry
var date = new Date( entries[entry].getElement( "published" ).getText() );
if ( japanese_date_format ) {
content += getJapaneseFormatDate( date ) + " ";
} else {
content += date;
}
// link and title of a entry
content += "<a href='" + LINK_URL + entries[ entry ].getElement( SITE_NAMESPACE_URL, "pageName" ).getText() + "'>";
content += entries[ entry ].getElement( "title" ).getText() + "</a><br>";
}
return content;
}
function insertToPage( html, s, target ) {
var i = html.indexOf( 'name="' + target + '"', 0 );
i = html.indexOf( '>', i );
var j = html.indexOf('</div>', i + 1 );
return html.substring( 0, i + 1 ) + '<div name="' + target + '">'
+ s + '</div>' + html.substring( j );
}
function debug() {
var content = makeSummary( FEED_URL );
Logger.log( content );
var html = insertToPage( '<div name="recent_announcements"></div>', content, 'recent_announcements');
Logger.log( html );
MailApp.sendEmail( MAIL, DEBUG_MAIL_SUBJECT, Logger.getLog() );
}
function doGet(e) {
var app = UiApp.createApplication();
var page = SitesApp.getActivePage();
var content = page.getHtmlContent();
var insertion = makeSummary( FEED_URL );
content = insertToPage( content, insertion, TARGET );
page.setHtmlContent( content );
app.add(app.createLabel(TITLE));
return app;
}
少々、幼稚なプログラムだが、備忘録としてエッセンスを分かりやすくしておいている。ネット上のスクリプトのサンプル、インテリセンスによってメソッドなどが補完されるので、簡単に10分ぐらいでコーディングが終了し、幾つかのテストを経て感性するのかと思いきや、そうはならなかった。嵌りどころ、気づかないことが多かった。
11行目からの日本風の日付時間文字列の生成を行うgetJapaneseFormatDate()という関数が書いてあるが、引数に渡された日付時間情報をブラウザがあるPCのローカル時間に変換している。Google Sitesがお知らせページで出力するposts.xmlのページ公開時間などは全てUTCで記録されており、特にタイムゾーンを設定しなくても、ローカルの時間を返す関数を利用してれば、閲覧している環境の時間に自動的に合わせることができる。どの地点の時間かが必要な場合にはタイムゾーンも文字列に付加しておくことも必要だが、国内向け専用であれば、これで十分だ。また、ゼロサプレスをするかしないかを指定できるようにしておいた。ゼロをつけないと見た目に崩れた印象を与えてしまう。ゼロサプレスをしないようにしておけば、崩れない。
33行目からの、タイトル・要約の文字列を作成するmakeSummary()という関数は、単純にXMLドキュメントをパースして目的のエレメントの属性やテキストを抜き出して、HTML形式のドキュメントに作り直しているだけで、スクリプトも簡単に書けているが、簡単に書くために幾つかのツールや知っていなければならないことがある。まず、Google Sitesが出力するお知らせページのRSSフィード(posts.xml)内容を詳しく知る必要がある。また、XMLの名前空間とその扱い方についても知っておかないといけない。
Google Sitesを使っているのが理由ではないのだが、Chromeブラウザでposts.xmlのようなXMLファイルを人間に見やすく、構造がよくわかるようにインデントをいれてくれるXVというXMLドキュメントビューワーがChromeプラグインとして登録されている。posts.xmlファイルのようなXMLドキュメントにブラウザでアクセスすると自動的にこのXVの画面になり、ドキュメントが非常に見やすく表示される。ドキュメントのタグや属性、テキストなどをクリックすると、画面上部のウィンドウにそのエレメントまでに至るパスを表示してくれる。
<sites:pageName>のような名前空間が指定されているタグを指定・アクセスするには、getElement()メソッドで最初の引数に名前空間を示す文字列を指定すればよいが、XMLのハンドリング、特にGoogle Apps Scriptでの扱いに慣れていないと戸惑う。この引数には、XMLドキュメントの先頭で指定されているxmlns属性で定義されている名前空間のURLを指定すればよい。本当は、XMLをハンドリングするオブジェクトに名前空間のファイルを読み込ませておいて、名前空間の識別子を引数に与えるだけでよいのかもしれない(要調査)。
56行目からのinsertToPage()関数で、既存のページにある<div name=”TARGET NAME”></div>(TARGET NAMEは任意)を見つけ、このタグの間にmakeSummary()が返す内容を差し込んでいる。Google Sitesのページには<div name=”TARGET NAME”></div>を記述しておけばよい、というトリックである。
枝幸に50メガトンのツァーリ・ボンバが落とされたら
某所で核爆弾の威力についてつぶやいている方がいらしたので、そのつぶやきで言及しているURL先のサイト”Ground Zero“に行ってみると、過去に実際に使用されたことがある核兵器の威力がどの程度に及ぶのかGoogle Mapsを利用して視覚的にわかりやすいマップレットがあった。試しに、人類史上最強の兵器である50メガトンのツァーリ・ボンバを枝幸役場に落としてみたら、枝幸市街にいる人間は24時間以内に死亡、枝幸郡内に居る人間は沸騰したお湯を掛けられたときの火傷のような痛みと水疱ができてしまうとシミュレーションされた。表示されている被害範囲の円は熱線のみ被害半径を示したものである。実際は、半径6.6キロメートルに1次放射線が降り注ぎ、半径23キロメートル内に爆風が吹き、半径58キロ内に致命的な火傷を負う熱線が降り注ぐとされる(参照1)。
参照・参考:
- Wikipedia 日本語版「ツァーリ・ボンバ」, 2012年2月23日閲覧
- Tsar Bomba Crater – largest nuke detonated, 2012年2月23日閲覧, ツァーリ・ボンバの爆心地
2013年から枝幸のホタテもEU輸出再開
2012年2月21日の日本経済新聞の記事によると、北海道はEUに輸出できるホタテの漁獲海域を現在の2海域から6海域に増やすそうだ。その海域の一つに枝幸ー浜頓別の宗谷南部海域がある。この海域は2013年からの輸出を可能にするそうだ。今年は、水産試験場からの報告によると、枝幸沖の漁獲量が多くないと見込んでいるので、来年以降の枝幸沖以外の海域でちょうど良かったんじゃないだろうか。ホタテは世界中の冷たい海域ならおおよそどこでも漁獲されているそうで、ホタテの水揚げ量の半分は中国で水揚げされており、堂々の1位です。日本は2位です。
枝幸町自治体公式ウェブサイトのfavicon画像の背景が透明色だった件
枝幸町の自治体公式ウェブサイトのウェブデザイナーはfavicon.ico画像が他の環境で閲覧されることまでは配慮しなかったのか。それとも真ん中のEのピクトは透明色という仕様なんだろうか?
ブラウザなどがタブで表示したり、ブックマークで表示したりするのに、考慮してないとは。
子テーマを作って親テーマの更新に備える
WordPressはよく利用されているテーマやプラグインの更新がなされていて非常に保守のし易いBlogシステム/CMSですが、テーマによっては折角カスタマイズしたものが無くなってしまうことがあります。様々なサイトで紹介されていますが、利用してたテーマを親テーマとして引き継ぎながら子テーマでカスタマイズする方法を備忘録代わりに書いておきます。しかし、これは私の環境の場合なので、アレンジして利用するとよいでしょう。
今回の場合、すでに利用しているテーマ(desk-mess-mirrored)があり、誰か閲覧中かもしれないので、それがわからないように、親テーマからファイルを幾つかコピーするところから始めます。WordPressのテーマはおおよそ次の例のようなディレクトリに配置されています。
…/wp-content/themes/desk-mess-mirrored
このdesk-mess-mirroredと同じディレクトリにdesk-mess-mirrored-customというディレクトリを作ります。このディレクトリにカスタマイズを加えているファイルとstyle.cssをコピーします。style.cssは絶対必要です。またscreenshot.pngをコピーするから現状のサイトのスクリーンショットを作成してアップロードしておくとよいでしょう。作成すると次のような構成になるはずです。
…/wp-content/themes/desk-mess-mirrored
…/wp-content/themes/desk-mess-mirrored-custom
…/wp-content/themes/desk-mess-mirrored-custom/style.css
…/wp-content/themes/desk-mess-mirrored-custom/index.php
…/wp-content/themes/desk-mess-mirrored-custom/screenshot.png
…/wp-content/themes/desk-mess-mirrored-custom/…
次に、ここがミソですが、上記のstyle.cssの編集をします。アップロードする前にしておいてもよいでしょう。私の環境ではブラウザ上で直接ファイルを編集できるのでアップロードしたから編集しました。style.cssのヘッダー部の記述にTemplateという項目を追加し、”@import”行で継承しているテーマのスタイルシートへのパスを記述します。次は記述例です。
/* Theme Name: Desk Mess Mirrored Custom Description: Desk Mess Mirrored theme customized Version: 1.0 Author: Ken ichi AKIMOTO Author URI: http://www.esashi.mobi/ Version Required: 3.1.0 Version Tested Up To: 3.3.1 License: GNU General Public License v2 License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Template: desk-mess-mirrored */ @import url(‘../desk-mess-mirrored/style.css’);
上記ではTemplateという項目に継承しているテーマの名前(ディレクトリ名と同じ(要調査))を記述し、さらに@import行で継承しているテーマの相対パスを指定しています。これだけです。あとは、自由にカスタマイズできます。編集が終わったら、テーマを切り替えるだけです。簡単ですね。
これでテーマの更新があってもカスタマイズ部分は保護されます。もっとも、更新によってカスタマイズが影響を受けることもありえましょうが、保守作業は楽になったことでしょう。
これでテーマの更新があってもカスタマイズ部分は保護されます。もっとも、更新によってカスタマイズが影響を受けることもありえましょうが、保守作業は楽になったことでしょう。
desk-mess-mirroredの場合、このカスタマイズ抽出作業をすると、ウィジットが初期化されるようです。これは仕方ないでしょうね。この場合は、MySQL DBに対して継承元のウィジットの情報をSQL文などを発行してコピーするしかないですね。幸いdesk-mess-mirroredはウィジットが停止中なだけで、ドラッグして戻せば元通りになりました。
枝幸の”Google Street View”作成大作戦の調査
先日のこと。Google Map上に表示されるサムネール画像を何気もなく覗いていたら、Google Street View(以下GSVと略す)対象外のところでもGSVのように移動できるようになっていることに気が付いた。Googleが撮影した画像以外でも繋げられる画像があれば繋げられ、現実世界の画像テクスチャが貼り付けられた仮想の世界を移動できる。たとえばこんな風に:http://g.co/maps/qfe3g
そのサイトを開くと浜名湖の弁天島にある鳥居の画像が閲覧できるが、画像にマウスカーソルを置くと、画像の下のほうに”<”や”>”の山括弧が現れる。その記号のどちらかを押すと、まるで歩いているように、次の画像に移動できる。このようなところは日本に限ってもかなりの箇所があり、「ほんのちょっとした観光気分」が味わえる。
弁天島の画像の左下にサービス提供者らしい”Panoramio“という小さいロゴがあるのでクリックしてみるおt、Googleが2008年下半期からサービスしていた、風景画像などを世界中で共有するサイトであった(買収したのかもしれないし、調べないといけないが省略)。このPanoramio上でGPS情報を含んだ風景画像を公開しておくと、Google Maps上でその画像へのリンクがついたサムネールが表示されるようになる(すべて表示されるわけではないらしい。人気のスポットでは多すぎるもんね(笑))。
人口が少なくても有名どころの観光地ならGoogleカーは撮影しにくるだろうが(北海道では上川南部、留萌や増毛などがそう)、枝幸まで来るわけがない!と思っている。それなら、折角サービスは誰にでも何時でも開かれているのだから、積極的に利用してやろうじゃないかと考えてしまうのは私だけではあるまい。(でも、いつまでこのサービスあるのかな?)。本当は、自分の好きな風景があるところに出かけて先ほどの弁天島のように雰囲気のある画像を連続させたいけれど、本当にうまく取り扱ってくれるのか良く分からないのと、折角やるなら枝幸のこの厳冬の季節だけの画像を撮影しまくって連続させたい野望に駆られたので、この記事のタイトルどおり、「枝幸のGoogle Street View」を作成する作戦を決行してみた。サービスのID/パスワード登録方法など、初歩的なことは省略するが、備忘録代わりに書いておこう。
先ずは、撮影した画像がないと始まらない。撮影して直ぐにアップロードしてもよいが、GSVを作るのだから大量に撮影して後ほどアップロードしたほうが効率的だろう。また、重たいカメラを背負っていては骨が折れるし(最近のカメラは小さくて軽いけど)、お手軽なGPS機能付デジタルカメラは昨年夏に標準機能となってきたばかりで(参照1)、数年前に購入した手元のデジタルカメラにはない。そこでお手軽なスマートフォンで撮影することにした。私の場合はiPhone 4を利用している。400から500万画素あれば十分である。この画素数を十分・適当とするには理由がある(後述)。ばしばし少しずつずらして撮りまくるべし。ただし、あくまでも風景を撮ること。人物が写っていたり、プライバシーを侵害するような画像はPanoramioでは受け付けない(参照2)。また、Panoramioのアップロードポリシーでは、GPS機能を使って記録された位置情報を画像が含んでいれば、何枚でもアップロード可能だ。含んでいなければ、合計2GBまでアップロードできる。また、1枚の画像は25MB以下、50Mピクセル以下でないと受け付けない。一般普及型のデジカメなら10Mピクセル程度で、画像サイズも1枚5MBもない画像が殆どだろうから心配は要らないだろう。また、忘れてはならないのが、iPhoneの場合、「位置情報サービス」を「オン」にしておくことである。設定の最初のページにあるので、確認されたい。
撮影後は画像をどこかのクラウド上にアップロードする。画像の取り扱い方によるが、最終的にPanoramioにアップロードするまで幾つかの経路がある。スマートフォンかデジタルカメラか、スマートフォンから直接アップロードするかPCからアップロードするか、アプリ・レタッチ機能を使って加工してからアップロードするかなど、TPO、コスト・環境に幅広く応じられると考える。
- スマートフォンのPanoramioアプリを使って1枚撮影直後に直接Panoramioに1枚だけ(ずつ)アップロードする。
- スマートフォンのPanoramioアプリを使って撮り貯めてあった画像を直接Panoramioに1枚だけ(ずつ)アップロードする。
- スマートフォンに撮り貯めてからアプリ(PictShare)を使って一旦Picasaウェブアルバムにアップロードし、PC閲覧モードのスマートフォンのブラウザからPicasaウェブアルバム上でPanoramioに1枚ずつアップロードする。
- スマートフォンに撮り貯めてからアプリ(PictShare)を使って一旦Picasaウェブアルバムにアップロードし、PCのブラウザからPicasaウェブアルバム上でPanoramioに1枚ずつアップロードする。
- スマートフォンに撮り貯めてから、一旦PCに移し(Picasaやエクスプローラー、iFunBoxなどで)、PCのブラウザから複数枚選んでPanoramioにアップロードする。
- スマートフォンに撮り貯めてから、一旦PCに移し(Picasaやエクスプローラー、iFunBoxなどで)、Picasaで著作権表示などの設定をしてから一旦Picasaウェブアルバムにアップロードし、Picasaウェブアルバム上で1枚ずつPanoramioにアップロードする。
最もアップロード作業効率が良いのは、5の「スマートフォンに撮り貯めてから、一旦PCに移し(Picasaやエクスプローラー、iFunBoxなどで)、PCのブラウザから複数枚選んでPanoramioにアップロードする。」である。
上記1と2の場合、直ぐにPanoramioにアップロードできるが、1枚ずつのアップロードのため、効率が悪い。記念にとったとっておきの一枚をアップロードするときに利用するべきである。
3の場合も同様で、スマートフォンで一枚ずつ大量にアップロードするのは指が折れそうになるだろう。そればかりでなく、もしiPhone 4/4Sで撮影した画像をそのままアップロードすると、直ぐにPicasaウェブアルバムの容量1GBを使い切ってしまうだろう。iPhone 4のメインのカメラで撮影した画像のサイズは2592×1936である。そしてPicasaの容量を減らさない画像ファイルの幅と高さの最大値はGoogle+未加入の場合は800×800ピクセルであり、Google+加入時は2048×2048で(参照3)、サイズが大きい。そこでPictShareを利用して、画像をリサイズしてアップロードする。有料で250円かかるが、ビジュアルに日付管理もしているのでその日撮った画像を全てアップロードするのに同じ操作を何回もしなくてよく、大変有用なアプリである(参照4)。実は、Google+に加入しているアカウントを利用してPIcasaやブラウザでPicasaウェブアルバムにアップロードすると自動的に容量にカウントされないようにリサイズしてくれるので(縦横比を同一にしたまま長辺を2048ピクセルにする)、必要ないかもしれないが、手元にPCがないときはやはり大変重宝するだろう。
5の場合は、大量の画像を手間をかけずにアップロードしたいときに有用であるが、一度に数百枚単位でPanoramioにアップロードしてないのでわからないが、それでも他の方法よりは断然効率的である。
6の場合は、例えばPicasaの機能である著作権の文字列を入れてアップロードしたい時である。1枚ずつにPanoramioへのアップロードになるが、著作権を明示しておきたいときには仕方が無い。因みに、PicasaウェブアルバムとPanoramioにアップロードした画像の著作権は自動的に与えられ、元の著作権を維持する。また、Creative Commonsライセンスへの変更も可能となっている(参照5,6)。
さて、Paranomioにがんがんアップロードされた画像は、Google Earth/Google Map掲載プロセスを経て、掲載・不掲載がされる。基準に沿った風景画像であれば、殆どの場合10日ぐらいで掲載される。私が大量にアップロードした画像も実際に10日ぐらいで掲載された。アップロードしたらニヤニヤしながら待つべし。
本題はここから、Google Mapに掲載された画像がGoogle Street Viewのように繋げてもらっているかどうかである。私の場合はごく一部が成功した。つぎのGoogle Mapを見て頂きたい。マウスでドラッグしたり、画面の端のほうにある灰色の小さい矢印をクリックすると移動できることが分かると思う。
細かい説明を省いてきたが、Google Street Viewのようなものは、全て望んだとおりにはならないが、作れることが分かった。効率よくアップロードして、タグや説明、タイトルを入れなくてもGoogle Earth/Google Mapsに採用され、マウスでドラッグしてストリートを移動できることもわかった。あとややる気次第。枝幸をくまなく歩いてアップロードし続けるしかない(笑)。
PicasaウェブアルバムからParanomioに一枚ずつクリックしてアップロードするのは効率が悪いので、GAS/GAEで自動的にアップロードができるスクリプトを作成したほうが良い(つくってみよう!)。
さらに、自分の車の上に変なものを乗せても気に留めない、500万画素程度のカメラと大容量高速SSDメモリを8台用意できる人は、次のサイトを参考にして街中を車で撮影し続けるとよいかもしれない(笑)。
以上、殴り書きのような文章を読んでくれた方に感謝します。
ところで、上の図のアイコンとかロゴをこのように使って大丈夫なんだろうか?
参照
- “2011年版「GPSデジカメ」の傾向と対策”, http://dc.watch.impress.co.jp/docs/review/special/20110601_449571.html,2012年2月4日閲覧.
- “Panoramio 写真ポリシー”, http://www.panoramio.com/help/acceptance_policy, 2012年2月4日閲覧.
- “Picasa と Picasa ウェブ アルバムの無料の保存容量の制限”, http://support.google.com/picasa/bin/answer.py?hl=ja&answer=1224181, 2012年2月4日閲覧.
- “[Picasa×iPhone] 目指せカメラロール0枚。iPhoneの写真を無限にアップロードする最もカンタンな方法。”, http://kazoo1837.blog23.fc2.com/blog-entry-202.html, 2011年11月3日作成, 2012年2月4日閲覧.
- Picasa と Picasa ウェブ アルバムのライセンス オプションを変更する, http://support.google.com/picasa/bin/answer.py?hl=ja&answer=94293, 2012年2月4日閲覧.
- Panoramio 著作権ポリシー, http://www.panoramio.com/help/copyright, 2012年2月4日閲覧.
肖像権についての備忘録
先日、枝幸三笠山スノーフェスティバル2012という催しを見物しに行きました。滑走斜面の下のほうにジャンプ台が設置されていて、そこを勢いをつけて滑走してきたライダー達が様々な技を披露しながらジャンプしていました。年齢・レベルでいえば下は小学生から上は毎年札幌で開催されているトヨタビッグエアーの決勝に残るようなゲストライダー、そして中年のライダーまで参加していたようです。また、多くの地元のライダーのほかにも近隣や200km以上遠方からの一般ライダーも参加していたようです。また、枝幸町が運営しているケーブルテレビEOSも取材に来ていました。
実は、ただ見物していただけではなく、Ustreamを利用した生放送をしていたんですが(視聴者はおりませんでしたが(涙))、低速な3G回線ではiPhone4(4Sではない)の性能を活かしたライブストリーミングが送れず、仕方なく録画してからアップロードしたのですが、Ustreamで作っておいた番組はデフォルトで公開する仕様であったので、このまま公開し続けておいてよいのか不安になりました。そこで法律的・現実的にどうなのか、備忘録としてここにまとめておくことにしました。日本でのインターネット黎明期、Mosaic 1.0を使っていたような頃にインターネット上における画像の取り扱いなどを学んだ気がするだけでしたので、知識はかなり彼方に飛び去ってしまっていますから、またこれから動画を広く公開するような機会も増えるでしょうから、これを機に学び直そうと思いました。
この不安を取り去るために、知りたいことは、大会などを撮影した動画を撮影された方々の許可を得ずにインターネット上に公開しても法律違反にならないかということです。また、法律違反にならなくても、世間的に暗黙の了解がどうなっているかも調べてみる必要はあります。結論から言えば、今回のような大会で、マスコミ(EOSを一応マスコミとしましょうか)そして観客など、不特定多数が撮影できる状況では、先ず撮影することは問題なしと考えます。そして、公開に当たっては、今回の大会の場合、一般の方々に対しては肖像権はなく、そしてプロスポーツ選手が混ざっていてその技を披露して対価を得ていますので、その方々のパブリシティ権を侵害しないようにその方々だけに公開許可をいただければ何の問題もないと考えました。今回は2名のプロスノーボードライダーの方々にとあるメッセージ交換サービス上で許可を得ました。実際は紙媒体か、電子個人認証を利用した許可を得たいところですが、手間を考えるとメッセージを保存しておくだけでよいと考えました。こういうところも不安の要素ですし、またそんなに手間をかけるべきことなのかとも思ってしまいます。
実際に、法律文書を参照し、知人の弁護士さんや司法書士さんから助言を受ければよいと思いますが、機会と時間がとれたら、もう少し勉強してみたいと思います。そもそも日本の法律に「肖像権」が明文化されてないとも聞きます。
よくかんがえたら、パパラッチともかく、新聞社やテレビは勝手に撮影してながしてるよね?
jpドメインで登録されていない短いドメインを探し易いサービス
8年ぐらい前から、そして他社でも、短いドメイン名検索のサービスがあり続けてきましたが、短いURLが利用されることが多くなってきたので、備忘録代わりに残しておきます。このサービス自体のドメインは6文字ですね。
株式会社日本レジストリサービス(JPRS)のまだ登録されてない4文字のドメイン名、3文字ドメイン名の検索サービス http://mijikai.jp/
アイキャッチの画像はhttp://jprs.jp/resources/ja/widgets/header/tm_alt.gifを利用
Rust—安全で並行実行可能な実用的プログラミング言語
プログラミングに精通している方々の中でもアーリーアダプターの皆さんが新しいプログラミング言語Rustを発見したり、FizzBuzzをプログラミングしていたのを見つけて、私もプログラミング言語Rustのサイトを覗いてみたり、コンパイラをダウンロードしてプログラムを書いてみることにしました。詳しい説明や日本語サイトは誰かが書くと思うので、私が企画していたSapphireに持ち込める良いところがないかを探す・感じる目的で「いぢって」みようと思います。
ソースファイルをチラリとみてみると、LLVMを利用していることがわかります。プログラミング言語の移植性・可搬性を維持するには最善の策でしょう。SapphireもRVM/LLVMどちらでも対応する仕様にしたら面白いかも(どんな仕様だ!?)。
・・・
まだこのブログにはプログラムを見やすく掲載する機能がないので、後ほど更新します。
ところで、並列と並行って、少なくとも情報処理分野では明らかな違いがあるって知ってましたか?小生が学生をしていた頃、「並列コンピュータ SM-1」というのが研究室にあったので、いじっておりました。研究室の教授が某有名ハッカーの先生が要らなくなったというから引き取ったらしいのですが(笑)。小生の研究対象ではなかったんですが、数式処理などで行列方程式のバイラテラル・ユニラテラルな行列を見つけるために素因数分解を研究をしていた(たしかそのはず)の先輩にSunのワークステーションから接続する方法をこっそり教えてもらっていぢっていました。いぢっていたといってもLispかCのサンプルプログラムを動かしてみただけです。Sunのワークステーションが並行処理、SM-1が並列処理という意識をその当時きちんと持っていたかというと持っていなかったでしょう(笑)。
参考
書籍は参照しにくいもんね。日本では電子書籍・EPUBの普及もまだまだだし。
- “parallel と concurrent、並列と並行の違い”, http://d.hatena.ne.jp/keisukefukuda/20100915/p1, 2010年9月15日作成, 2012年1月25日閲覧
- “並列と並行の違い”, http://d.hatena.ne.jp/icysnow/20070807/p1, 2007年8月7日作成, 2012年1月25日閲覧
- “データ処理に関するIT英語「concurrent」「parallel」「distributed」”, http://ascii.jp/elem/000/000/061/61378/, 2007年2月2日更新, 2012年1月25日閲覧
テーマを更新したらトップメニューからホームページへ戻るリンクが消えてしまったらどうする?
今このブログで利用してるWordPressのテーマは”Desk Mess Mirrored 2.0″といって私の机の上と同じような状態なのをそのままカスタマイズせずに利用しています。先日、このテーマかWordPress自体のバージョンアップをして以来だと思うのですが、サイトヘッダー部にある付箋のようなデザインのトップメニューからホームページへ戻るリンクが消えてしまっていました。
“Desc Mess Mirrored 2.0″は他の高機能なテーマと違って、調整するにはソースに直接手をいれないといけないので保守が面倒になります。また、このテーマのディレクトリにサブディレクトリを作ってそこを子テーマにして扱うやり方もあるのですが、こんなことごときでそういう操作をするのも面倒だと思ったので、リダイレクションを使って実現しようと思いました。
幸い、WordPressにはありとあらゆるプラグインが同種のもので複数あるので、良いプラグインが選べます。今回は”Redirection“というJohn Godleyさんが作成したプラグインを使ってリダイレクションを実現することにしました。本当はプラグインをインストールしなくてもWordPressで用意している関数で実現できるようですが。プラグインのインストール方法はWordPress上でやるなり、FTPでファイルをアップロードするなりあると思うので省略。
最初に”HOME”という固定ページを作ります。パーマリンクは例えばhttp://FQDNまたはdomain name/home/としておきます。すでにこの時点でヘッダー部のメニューに”HOME”が表示されます。”HOME”を左端に表示させたいときは表示順序をページごとに設定して、昇順で調整します。たとえば”HOME”は”1″、”abount this”は”2”というふうに。次にプラグインの一覧の”Redirection”の真下にある「設定」をクリックしてリダイレクションの設定画面が移ります。「新しい転送ルールを追加」という大きな枠組みなかに設定項目があるので設定します。
- ソースURL:リダイレクション元のURLを指定します。今回の場合はhttp://FQDNまたはdomain name/home/
- 一致条件:URLのみ
- 操作:URLへ転送
- 正規表現:チェックなし
- ターゲットURL:リダイレクション先のURLを指定します。今回の場合はhttp://FQDNまたはdomain name/
以上を設定して、「新しい転送ルールを追加」をクリックすれば、ヘッダー部にある”HOME”メニューのリンクを押せばサイトのホームページ(http://FQDNまたはdomain name/)に移れます。



