Raspberry Pi 2でNFCタグを読み取って音を鳴らす

2017年3月26日

用意するもの


動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • Git 2.1.4 ※今回導入します
  • nfcpy 0.10 ※今回導入します

Continue reading Raspberry Pi 2でNFCタグを読み取って音を鳴らす

Raspberry Pi 2からBluetoothでスピーカーに音を飛ばす

2017年3月25日

用意するもの

  • Raspberry Pi 2 Model B
  • Bluetoothアダプタ IODATA USB-BT40LE
  • Bluetoothスピーカー ELECOM LBT-SPP20
  • オーディオケーブル(有線接続の確認用。省略可)


動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • Bluetoothd 5.23 ※今回導入します
  • PulseAudio 5.0 ※今回導入します

Continue reading Raspberry Pi 2からBluetoothでスピーカーに音を飛ばす

HUIS UI CREATORで遊んでみよう(カスタマイズ編)

2016年6月27日

準備編でHUIS UI CREATORが使えるようになったので、早速リモコン画面をカスタマイズしてみます。
[New]をクリックして新規作成画面に移動し、中央の作業領域の何も無いところをクリックすると、左側領域で背景画像が選択できるようになります。
ui-creator-5
任意の画像を指定します。
ui-creator-6
Saveをクリックして「保存してHomeに戻る」を選択すると、すぐに同期されます。UI CREATORを終了してからHUISの接続を切断すると反映されます。
IMG_9035
追加されていますね。


カスタマイズ例です。詳細は省略します。
ui-creator-7
上半分のボタンはうちの液晶モニタ、下半分のボタンはAVアンプを学習させて割り当てています。
便利。
IMG_9033


詳しい説明はGitHubのREADMEを読みましょう。
できること、できないこと、注意が必要なことを挙げておきます。
HUIS本体で作成した画面とUI CREATORで作成した画面は別管理っぽい
HUIS本体で作った画面を直接UI CREATORで編集したり、その逆をしたりはできません(不具合?)。UI CREATOR上でボタンのコピーはできますので、既存ボタンを新規作成した画面へコピーするなどしてうまく編集しましょう。
ボタンタップ時のアクションを変更できるが、プリセットされている内容からしか選べない
UI CREATORで作ったボタンにリモコン学習したアクションを割り当てることができません。HUIS本体側で適当なボタンに一旦リモコン学習させておいて、UI CREATOR上でそれをコピーしてから編集する必要があります。
テキストのフォントサイズや位置設定が反映されない
UI CREATOR上でフォントサイズを指定しても反映されないようです。また、UI CREATOR上ではテキストがセンタリングされているのに実際には左寄せで表示されます。
フォントサイズの件は不具合っぽいので、正式リリースまでに解消されるのではないかなーと思います。

HUIS UI CREATORで遊んでみよう(準備編)

IMG_8810
SONYの電子ペーパー式学習リモコン「HUIS REMOTE CONTROLLER」を購入しました。
HUISが他の学習リモコンに比べて優れているのは、ボタンの大きさや形をソフトウェアで自由にカスタマイズできるということ。
ただ、そのカスタマイズに必要なソフトウェア(UI CREATOR)がまだ正式にリリースされていません(8月末予定)。現時点ではプリセットされたいくつかのボタンの中から選ぶしかありません。片手落ちですね。
とは言え、UI CREATORプレビュー版のソースコードは既にGitHub上で公開されていて、環境を揃えてビルドすれば今からでも使うことができます。
GitHub: sony/huis-ui-creator
https://github.com/sony/huis-ui-creator

私にはちょっと難しくて上手くいかなかったのですけど、とある友人の協力によりビルドされたものを入手できたので、使ってみようと思います。


まず、HUIS側のソフトウェアを2.0.3にアップデートします。ちなみに6/27現在、公式で公開されている最新バージョンは2.0.2です。
アップデートファイル「update_2.0.3.dat」をダウンロードページからダウンロードします。
HUISをPCに接続すると、ストレージ「HUIS-100RC」として認識されます。

ストレージとして認識された状態
ストレージとして認識された状態

ストレージの直下にアップデートファイルを移動します。
アップデートファイルを移動した状態
アップデートファイルを移動した状態

HUIS上で、設定ボタン→システム→「アップデートする」をタップ。
IMG_9027
「アップデート」をタップ。
IMG_9028
アップデート中…
IMG_9030
アップデート完了。
IMG_9031


次に、UI Creatorのファイル一式をここからダウンロードして、ローカルに展開します。

ファイル一式でだいたい188MB程度
ファイル一式でだいたい188MB程度

huis.exeを起動します。このときHUISをPCに接続した状態にしておきます。
起動画面1
同期中画面

同期画面が一瞬出て
起動画面2
起動画面

起動が完了します。ここで[New]をクリックすると
編集画面
編集画面

リモコン画面の新規作成ができます。
準備は以上です。
HUIS UI CREATORで遊んでみよう(カスタマイズ編)へ)

ワンタイムトークンの喪失リスクとバックアップ

2015年4月20日

GoogleやEvernoteなどのWebサービスではセキュリティのために多要素認証(MFA)を設定できる。メジャーどころはだいたいOATHに準拠したTOTPを使っていて、トークンアプリを一つ入れておけば各サービスのトークンが使えるようになる。
私の場合はスマホにGoogle Authenticator(Google認証システム)を入れているのだけど、もしスマホが壊れたときに認証できなくなるリスクがあるので、バックアップとなる緊急認証手段を用意しておきたい。

Google Authenticator 画面
Google Authenticator 画面

私の手元には10種類以上のアカウントが設定されている。

  • Google
  • Facebook
  • Evernote
  • Microsoft
  • Yahoo! Japan
  • AWS
  • Github
  • Slack

(※ほか多数)
2段階認証におけるTOTPトークンアプリの移行方法
http://reliphone.jp/totp-apps/

どのサービスも基本的に、認証さえできていれば既存のを無効化して新しいトークンを設定できるので、認証済みのPCやスマホを複数用意しておけば緊急時でも再設定ができる。
IIJ SmartKey
http://www.iij.ad.jp/smartkey/

またトークン自体のエクスポート機能を持ったアプリもあるので、データだけ保管しておいて新しいスマホにインポートする事もできる。
もし手元のデバイスが全部壊れた場合、つまりサービス側に保存されている“信頼されたデバイス”が全喪失したときは次回ログイン時にトークンが要求されて(そしてトークンも失われていると)ログイン不可能な状態になる。機種変更するなどの対処で一旦電話が使える状態にまでできればSMS・電話認証で済ませられるが、登録電話番号が分からなくなったとか、携帯電話を出先に忘れてきたとかで待ってられない場合は最終手段バックアップコードの出番になる。事前に紙に印刷するなどしてオフラインで安全に保存しておきたい。

Evernoteのバックアップコードの例
Evernoteのバックアップコードの例

ここからは細かい話。
iPhone5sの交換からAWSコンソールへログインできなくなって復活したところまでの顛末
http://blog.mittostar.info/2014/07/13/iphone5s%E3%81%AE%E4%BA%A4…

AWSだと復旧手段が英語の電話になってしまうようなので、英語に自信がないなら前述のアプリでエクスポートをしておくか、初めからトークンを多重化しておくのがいいだろう。多重化は同一のキー(二次元バーコードのアレ)を複数端末で読み取っておくだけ。
ただ、トークンを多重化した場合たとえば2台持ちが2台とも水に濡れたとか車に轢かれたとかで全滅するリスクもあるので、全滅を防ぐため少なくとも一つはできるだけ安全な場所にバックアップを保管しておきたい。つまりゴミのようなAndroid端末にトークンを設定し、オフライン設定にして、電池を抜いて保管しておくのがいいだろう。(リスクを最小化するなら空き巣に入られても金目のものに見えないようなゴミ端末が良いと思う)
Google Authenticatorを使ったSSHのワンタイムパスワード認証の設定(CentOS 7)
http://blog.virtualtech.jp/tmiyahar/1311

サーバのSSH接続にMFAを設定している場合も、ログイン不能になることを防ぐために同じ方法が使える。
以上、トークンの喪失リスクとバックアップについて長々と紹介したのだけど、結局のところ多要素認証というのはパスワード攻撃を防ぐためのものなので、あまりトークン自体のリスクに悩むよりはパスワードそのものの管理を強化した方がよいかもしれない。

東京アメッシュと気象庁ナウキャストと国土交通省XRAINの違い

2014年8月24日

結論から言うと、気象庁の高解像度降水ナウキャストが一番精度が高そう。
(A)降水ナウキャスト(気象庁)
http://www.jma.go.jp/jp/radnowc/
(B)高解像度降水ナウキャスト(気象庁)
http://www.jma.go.jp/jp/highresorad/
(C)XRAIN(国土交通省)
http://www.river.go.jp/xbandradar/
(D)雨雲予報 by XRAIN(日本気象協会)
http://n-tenki.jp/sp/xmp/
(E)東京アメッシュ(東京都下水道局)
http://tokyo-ame.jwa.or.jp/
(F)雨雲レーダー Ch.(ウェザーニューズ)
http://weathernews.jp/radar/

気象レーダーのソースの違い

ざっくり言うとこのような関係。

観測レーダー A B C D E F 解像度 間隔 説明
気象庁
Cバンドレーダー(全国20箇所)
1km 5分 半径120km
国土交通省
Cバンドレーダー(全国26箇所)
1km 5分 半径120km
国土交通省
XバンドMPレーダー(主要部14箇所)
250m 1分 半径60km
東京都下水道局など
Xバンドレーダー(関東5箇所)
250m
〜1km
1分 半径50km
ウェザーニューズ社
WITHレーダー(全国31箇所)
150m 6秒 半径50km
※指向性あり

この他にもレーダー以外(雨量計など)の情報が使われていたり、さらに予想データの提供有無もあるので、詳しくは各項目で後述。
Cバンドは周波数が低いためカバー半径が広く降雨減衰が少ない。Xバンドは逆に周波数が高いためカバー半径が狭く降雨減衰が大きい。Xバンドはその分メッシュを細かくとることができるので、両者を組み合わせることで精度の高い観測ができる。

降水ナウキャスト(気象庁)

レーダー・ナウキャスト
http://www.jma.go.jp/jp/radnowc/

降水ナウキャストの説明
http://www.jma.go.jp/jma/kishou/know/kurashi/kotan_nowcast.html

降水のほか雷・竜巻の観測データとあわせて「レーダー・ナウキャスト」という名称で公開されている。ほぼ全国をカバーしている。降水予想も見ることができる。

高解像度版降水ナウキャスト(気象庁)

高解像度降水ナウキャスト
http://www.jma.go.jp/jp/highresorad/

高解像度降水ナウキャストの説明
http://www.jma.go.jp/jma/kishou/know/kurashi/highres_nowcast.html

2014年8月から提供開始された、従来の降水ナウキャストのパワーアップ版。気象庁レーダーに加えて国土交通省XバンドMPレーダーと、そのほか気象庁・国土交通省・地方自治体が保有する全国の雨量計のデータ、ウィンドプロファイラ(上空の風データ)やラジオゾンデの高層観測データを使用。

XRAIN(国土交通省)

XRAIN
http://www.river.go.jp/xbandradar/

XRAINの説明
http://www.river.go.jp/xbandradar/inform.html

全国の河川管理のための観測データを活用したサービス。気象庁のような降水予想はなし。大都市部を中心とした多くの地域(=Xバンドのカバー地域のみ)をかなり詳細に見ることができる。カバーされていない地域(=Cバンド)も一応トップページでだいたいの様子をつかむことはできるが、こちらは低解像度で見づらい。

雨雲予報 by XRAIN(日本気象協会)

雨雲予報 by XRAIN
http://n-tenki.jp/sp/xmp/

日本気象協会のサービス。国土交通省XバンドMPレーダーのデータを元に、降水予想を提供している。

東京アメッシュ(東京都下水道局)

東京アメッシュ
http://tokyo-ame.jwa.or.jp/

東京アメッシュの説明
http://tokyo-ame.jwa.or.jp/ja/amesh/index.html

東京都内の下水道施設の管理のための観測データを活用したサービス。東京都とその周辺地域のデータを見ることができる。気象庁のような降水予想はなし。気象庁レーダー、東京都・埼玉県・横浜市・川崎市の各自治体レーダーと雨量計などの情報を合成している。合成処理とWeb公開は日本気象協会(tenki.jpの運営元)で行っているが、その情報がtenki.jpのデータに流用されているかどうかはよく分からない。

ウェザーニューズ

雨雲レーダー Ch.
http://weathernews.jp/radar/

ウェザーニューズ社のサービス。気象庁のデータを基本としているが、ゲリラ雷雨の予想精度を上げるためか、気象庁レーダーの弱い地域などに小型レーダーを独自整備している。気象庁と同じく降水予想も提供している。独自レーダーのデータが全国の雨雲レーダーに合成されているのかはよく分からない。

Webに転がっている情報をもとにまとめてみたけど、間違っているかも。

参考

気象庁 防災気象情報の技術の現状(2012)
http://www.jma.go.jp/jma/kishou/minkan/koushu120203/shiryou1.pdf
国土交通省 防災 Xバンドレーダー雨量計の整備
http://www.ktr.mlit.go.jp/ktr_content/content/000049078.pdf
東京都下水道局 降雨情報システム(東京アメッシュ)の概要について(2007)
http://www.asianhumannet.org/db/datas/0912-j/sewerage-amesh.pdf
日本気象協会 局地豪雨に関する情報提供について
http://www.mlit.go.jp/common/000032842.pdf
WITHレーダーによる局地的強雪の捕捉と除雪作業支援
http://www.hkd.mlit.go.jp/kanribu/chosei/fuyutopia/ronbun/r81.pdf
レーダー・ハンター れー太ー君
http://rebamga.web.fc2.com/weather/3-radar.html

VALUEDOMAINのDynamicDNSを自動で更新する(PowerShell編)

2014年4月25日

ただのコピー記事だけど、自分用メモとして。
やりたいこと
・自宅サーバのIPアドレスが固定じゃないので、変更を検知してDNSレコードを随時更新したい
・自宅サーバはWin32環境(WS2008R2)、DNSサーバはVALUEDOMAINを使用
Win32ならDiCE使えって話だけど、このページのスクリプトを使ってみた。DiCE有料版でサービス使わなくてもログオフ状態で更新できるよ。
POWERSHELL スクリプトで VALUE-DOMAIN の DDNS を更新
http://awoni.net/blog/2009/10/362/

導入方法

(※Windows Server 2008 R2で確認)
まずはこのファイルをローカルのどこかに置いて、14行目までを自由にカスタマイズ。

ddnsupdate.ps1

# ドメイン名
$DOMAIN = "example.com"
# パスワード
$PASS = "password"
# サブドメイン名 すべての場合は*
$HOSTNAME = "targetserver"
# IP アドレスを取得するページのURL
$IP_URL = "http://example.com/getremoteaddress.php"
# Value-Domain のDDNSサーバの登録ページのURL
$DDNS_URL = "http://dyn.value-domain.com/cgi-bin/dyn.fcg?"
# ログファイルを保存するディレクトリ
$DATAPATH = "C:\path\to\"
$IP_FILE = "old_ip.txt"
$LOG = "log.txt"
# ログの出力
function write_log($message)
{
    $now = Get-Date;
    Add-Content ($DATAPATH + $LOG) ($now.ToString("yyyy/MM/dd HH:mm:ss") + " " + $message)
}
# 記録しているIPアドレスの取得
if (Test-Path ($DATAPATH + $IP_FILE))
{
    $old_ip = Get-Content ($DATAPATH + $IP_FILE)
}
else
{
    $old_ip = "0.0.0.0"
}
echo $old_ip
# IPアドレスの取得
$wc = New-Object System.Net.WebClient
try
{
    $new_ip = $wc.DownloadString($IP_URL)
    $wc.Close;
}
catch
{
    write_log("11:IPアドレスが取得できません。")
    try
    {
        $new_ip = $wc.DownloadString($DDNS_URL + "ip")
        $wc.Close;
    }
    catch
    {
        write_log("12:IPアドレスが取得できません。")
        echo "12:IPアドレスが取得できません。"
        return;
    }
}
echo $new_ip
if ($old_ip -eq $new_ip)
{
    write_log("00:IPアドレスの変更がありません")
    echo "00:IPアドレスの変更がありません"
}
else
{
    # アドレスが変更されている場合にVALUE-DOMAINのDDNSサーバーの更新
    $wc = New-Object System.Net.WebClient
    try
    {
        $status = $wc.DownloadString($DDNS_URL + "d=" + $DOMAIN + "&p=" + $PASS + "&h=" + $HOSTNAME)
        echo $status
    }
    catch
    {
        write_log("12:サーバに接続できません。")
    }
    $st = $status.Split("`n")
    if ($st[0] -eq "status=0")
    {
        Set-Content ($DATAPATH + $IP_FILE) $new_ip
        write_log("0:OK IP:" + $new_ip)
    }
    else
    {
        write_log($st[0] + ":" + $st[1])
    }
}

[DOWNLOAD]
(※ダウンロード後に拡張子をtxtからps1に変更して下さい)
設定について少し解説。

# ドメイン名
$DOMAIN = "example.com"
# パスワード
$PASS = "password"
# サブドメイン名 すべての場合は*
$HOSTNAME = "targetserver"

これらはVALUEDOMAINで使っているものを入力。

# IP アドレスを取得するページのURL
$IP_URL = "http://example.com/getremoteaddress.php"

IP_URLはリモートアドレスを取得できるURLを入力。
巷にはいくつかあるが、ひとまず自前で用意。

getremoteaddress.php


3行だけ。このgetremoteaddress.phpを任意のリモートサーバに置く。アクセス可能な場所なら自宅サーバでなくても良い。別にリモートホスト取得できてHTTPで返却さえできればPHPでなくても良い。

# ログファイルを保存するディレクトリ
$DATAPATH = "C:\path\to\"
$IP_FILE = "old_ip.txt"
$LOG = "log.txt"

このあたりはローカルの問題なのでお好みで。
設定完了したら右クリック→「PowerShellで実行」してみて動くかどうか確認。たぶん初期状態だと署名を求められて動かない。
そんな時は管理者権限でWindows PowerShellを実行して、以下コマンドを実行。

> Set-ExecutionPolicy Unrestricted

powershell1
やばげなメッセージが出るので、セキュリティリスクを受け入れてもいい人は「Y」を入力。自己責任でやっちゃえない人は回れ右しましょう。
再度実行してみて、ps1ファイルと同じディレクトリにログファイル(log.txt)とIPアドレスメモ(old_ip.txt)が置かれたらちゃんと動いた証。実行時刻と「0:OK」が記録されていれば更新成功。
あとはタスクスケジューラにでも登録して、バックグラウンド更新させましょう。
powershell2
実行するスクリプトは「C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe」で、引数として「-c C:\path\to\ddnsupdate.ps1」などとフルパスでファイル名を指定してやればOK。

参考

POWERSHELL スクリプトで VALUE-DOMAIN の DDNS を更新 – Webアプリ作成日記
WSH/サンプル/DDNS更新スクリプト – jomura.net

BluetoothとiTunesで作る快適オーディオ環境

2014年4月23日

新しくデジタルアンプを買って、私にとって理想的なオーディオ環境が整ったので晒してみる。

オーディオネットワーク構成図
オーディオネットワーク構成図

ポイント

  • PCで再生しようがタブレットで再生しようがすべてスピーカー出力
  • 音楽ライブラリはすべてiTunes上にある
  • TVを試聴する場合はNexus7からnasneへ接続し、音はBluetoothでアンプへ飛ばす
  • 常時稼働のサーバ上でiTunesを動かしておき、PCで再生したい場合はホームシェアリング機能で転送し、音はUSBでアンプへ飛ばす
  • 外出時などサーバが使えない場合はiPhoneにインポートしてある音楽ライブラリから聴く。音はBluetoothでアンプへ飛ばす

PCもiPhoneもタブレットもすべての音声をスピーカーから出力したい……という理想を実現したらこうなった。過去にはアクティブスピーカーに無理やりアナログ線を多重接続してTVとPCの両出力対応させたり、別のアンプを買ってiPhoneからAirplayで飛ばしたり様々な苦労を重ねて試行錯誤することになった。

TEAC AI-301DA
TEAC AI-301DA

このデジタルアンプ、TEAC AI-301DAはとても気に入っている。現在発売されているUSB DAC兼プリメインアンプの中でBluetoothに対応しているのはこれぐらいしかない(中華系にあるにはあるがあまり流通してないようだ)。そもそもアンプやネットワークプレーヤーにワイヤレスでデータを飛ばすという発想をしているのがTEACぐらいしかない。他社はせいぜいAirplayをオマケに付けているか、単体アンプじゃなくてBluetoothスピーカーにしてしまうか、「Bluetooth使いたいなら別売りレシーバーあるから勝手にしろやオラ」みたいな姿勢らしい。そうじゃないんだ。別売りレシーバー増えたら電源管理が面倒になるからオールインワンがいいんだよ。Bluetoothオンにして、アンプの電源入れて、レシーバーの電源入れて……とかいちいち面倒くさいでしょ。
その点、このAI-301DAはBluetoothクライアントが再接続すれば自動検知してスリープ復帰してくれるし、PCの電源を入れればUSB接続を自動検知してスリープ復帰してくれる。話の分かるやつだ。
(Bluetoothはペアリングの問題で同一デバイスでないと自動検知してくれない。後述)
おまけにこいつはとても小さい。AVアンプやデジタルアンプはどれも両手で持たなければいけないほどデカいのだけど、これは片手でひょいと持ち上げられるサイズ。重量も2kg程度と軽いので、うちではミドルタワーデスクトップPCの上に置いている。
この構成で不満がある点は2つ。
1つめはBluetoothのペアリングを一対多で共存させることができない。Macbook Airで音楽再生した後にベッドに寝転んでTVでも見ようとすると、Macbook Air⇔アンプ間のペアリングをNexus7⇔アンプ間のペアリングに変更しないといけない。新たなペアリングを探索するにはアンプ本体側のボタンを押せばいいのでたいした手間じゃないといえばそうなんだけど、できればAirplayのように、クライアント側の操作だけでリモートで上書きペアリングして欲しいところ。おそらくBluetoothの仕様による制限なのだろうけども。
上記の問題のため、一旦ペアリングしたデバイスでないとスリープ状態から自動復帰してくれない。スリープ状態時に別デバイスを使いたい場合は手動でスリープ復帰させて手動でペアリングし直す必要がある。
ちなみにBluetoothの代わりにAirplayを活用するというワザもあるけど、Airplayは遅延がひどい。平均1秒、ひどいときで2秒くらい遅れる。音楽を流す分には問題ないんだけど、Macbook AirでYouTube見ながら音だけアンプに飛ばしてみるとまともに楽しめないほど遅れる。間にワイヤレスルータ1個挟んでるだけなんだけどな。その点、Bluetoothはそういう使い方をしてもひどい遅延だと感じることはない。
そんなわけでうちには不要になったAirplay/DLNA対応アンプ、TEAC NP-H750があるんだけど誰か買い取りませんか。
不満点2つめは複数インプットのミックスをしてくれない点。これはデジタル入出力なのとミキサーがないため仕方ない。例えばデスクトップPCでゲームしながらMacbook Airで音楽も流す、ということが同時にできない。これはわざわざ分ける必要もないので、デスクトップPC側で音楽再生して内部でミックスさせればよいだけの話だけど、できたら自由度上がるのになー、という意見。
そんな不満はありつつも、PCだろうがタブレットだろうがスマホだろうが関係なく、快適なスピーカーで音楽を楽しめる環境になったので嬉しい。ひとまずNexus7やiPhoneの本体スピーカー等でシャカシャカした不快な音を聴く状況からは逃げることができた。
音源⇔アンプ間をデジタルで統一することにこだわってみたのだけど、いざ導入してみるとそこまで聞き分けられるほど耳が良くなかったらしく、アナログ接続時代からの音質向上を実感することはなかった。最終的に使い勝手がよくなったからいいんだけどね。

OGPでフェイスブックアビリティを改善する

2013年12月6日

UDCP Advent Calendar 2013 の 6日目。
http://www.adventar.org/calendars/233
先日書いたエントリがFacebookでシェアされたりイイネされたりしたのだけど、それを見て愕然。

なんぞこのドット絵みたいな関係ないアイコン…。
どうやらFacebookではリンクのサムネイルを付けようとするらしく、お節介にも自動で適当な画像を見つくろってサムネイルに仕立て上げるらしい。なのでサムネイルや説明画像がないようなエントリを書いてしまうと手近にある無関係な画像がこのように現れてしまうワケ。まったく大きなお世話ですね。

こっちはタイトルすら分からないURLだけ…。まるでフィッシングサイトみたいだ。
どうやらサムネイルすら自動で作れなかったらしい。
これを解決するにはFacebookがちゃんと解釈できるようにソースを仕込むしかない。ページのサムネイルやデスクリプションを定義できるオープングラフプロトコル(OGP)というものがあるので、それをMETAタグ内に指定する。OGPはFacebookに限らず他のSNSでも使われているらしい。
Facebookでシェアされた時のテキスト・サムネイルの変更方法
http://html-five.jp/84/

私は面倒くさいのでWordpressプラグインに頼った。
Open Graph Pro – OGPに対応したメタタグを出力するWordPressプラグイン
http://netaone.com/wp/open-graph-pro/

たぶんこれで大丈夫なはず。
もはやAdvent Calendar関係ないけど、まあいいや。