BootCampで起動したWindowsでパーティションを変えずにDドライブを使う方法

MacBook Airが届いたのでBootCampを使ってWindowsを入れてみたのですが、デフォルトだと1パーティションでCドライブしか使えません。普段オンラインソフトをD:\Online Softに入れて使っていて、パスが同じ方が都合がよいので1パーティションのまま、C:\dataの内容をDドライブとして見えるようにしてみました。

ディレクトリをドライブとして見えるようにするsubstコマンドの永続版、psubstを使います。psubstを使うとレジストリに設定が書き込まれるので、Dドライブに入れたソフトをスタートアップに登録しても問題なく起動できます。

インストール

Persistent SUBST command をダウンロードして、psubst.batをC:\windowsに配置します。

ドライブの割り当て

管理者権限でコマンドプロンプトを起動します。(コマンドプロンプトを右クリック>管理者として実行)

C:\data をDドライブとして使いたい場合は

psubst  D:  C:\data  /P

を実行します。

ドライブレターが重複しているとエラーになるので、コントロールパネル>コンピューターの管理>ディスクの管理 からCD/DVDドライブをQドライブなどに変更しておきます。


割り当ての確認はオプション無しでpsubstコマンドを実行します。

C:\Windows\System32> psubst
D:\ => C:\data

再起動後にドライブの割り当てが反映されます。

ドライブの割り当て解除

ドライブの割り当てを解除するときは

psubst  D:  /D

を実行します。

マッシュアップサービスをつくろう in 山口 を開催しました

山口県WEB勉強会のスピンオフイベントとして「マッシュアップサービスをつくろう in 山口」の主催をさせていただきました。


プログラムを書いたことはあるけどマッシュアップは初めて、という想定で

の3点をスライドで説明しました。

そしてお昼にピザと(ノンアルコール)ビールをつまんだ後で午後からもくもくプログラミング。スライドの途中で紹介だけしたInstagram APIが興味をひいたみたいで、デモでは使い方を説明しなかったのですが早速APIキーを取得して使い始める方もいました。

[twitter:@garakuc]くんは前日に呼んで来てもらったということもあり、MAMPをインストールするところからはじめて手取り足取り教えつつだったのですが、選んだキーワードの写真を画面に並べるところまでやってくれました。


僕はATND地域検索ハッシュタグ検索を、Twitterに丸投げしていたのを、TwitterSearchAPIを使ってダイアログの中にインラインで表示するようにしました。1つのイベントに2つ以上のハッシュタグがある場合も、別のハッシュタグをクリックすると即座に読み込まれます。イベントのハッシュタグを次々見られるようになってちょっと便利になったかな? 本家Twitterの表示にならって最近のつぶやきの時間表示を ○秒前、○分前、○時間前 としているのがミソです。

振り返り

少しのコードで意外性のある結果が得られる、という点でマッシュアップというお題は良かったかなーと思います。プログラムって簡単で面白いんだ、と思ってもうことが今日の目標で、一応達成できたのではないかと思います。

山口県WEB勉強会はワークショップ、スピーカーセッションが中心なので、WEB勉強会2〜3回に1回くらい、開発系のイベントを織り交ぜて行きたいと思っています。今のところはプログラム好きの人が集まるイベントになっていますが、デザイナーの方にも参加してもらえる会にできたらなーと思います。また、初心者の方でも大歓迎ですので興味のある方はどしどしご参加ください。

Ustreamの録画 ( その1 / その2 )

Google+とPicasaを行き来するブックマークレット

Google+POSTから。

写真を見たい人のプロフィールページを開いてG2Pブックマークレットを実行するとPicasaページに飛びます。G2PPだとGoogle+に投稿した写真に直接飛びます。
PicasaページでP2Gブックマークレットを実行するとGoogle+に戻ってきます。

Picasaで見ると便利なこと

  • 投稿写真の一覧をまとめて見られる
  • フルサイズの画像をダウンロードできる(Google+側でもフルサイズの画像が参照できてる気も。最近?)
  • アルバムを一括ダウンロードできる

Google検索を使って住所から郵便番号に変換する方法

住所から郵便番号への変換を真面目にやるとDBを用意したり検索ロジックが大変だったりするのでGoogleの検索結果からスクレイピングで郵便番号を得る方法を紹介します。

郵便番号 東京都千代田区千代田1−1

のようにGoogle検索で「郵便番号 住所」で検索すると郵便番号検索がトップに表示されます。ここの郵便番号を取ってくれば住所を郵便番号に変換することができそうです。

Firebugでソースを見ると郵便アイコンに郵便番号付のURLがあるのでここから郵便番号を取得します。

  1. file_get_contentsで検索結果を取得
  2. 最初に現れる www.post.japanpost.jp の位置から適当な長さの文字列を切り出す
  3. 文字列に含まれる***-****を取り出す

コードに落とすとこんな感じ。

<?php
$address = '東京都千代田区千代田1−1';
$query   = urlencode("郵便番号 " . $address);

// 郵便番号が含まれる文字列を切り出す
$str   = file_get_contents("http://www.google.co.jp/search?q={$query}");
$start = stripos($str, 'www.post.japanpost.jp');
$str   = substr($str, $start, 200);

// 文字列から正規表現で郵便番号を取り出す
$matches = array();
if (preg_match('/\d{3}\-\d{4}/', $str, $matches)) {
  echo $matches[0];
}
?>

実行結果

> php test_address_google.php
100-0001

住所から郵便番号に変換できました。

PHPWordを使ってPHPで日本語Word文書を出力する

PHPWordを使うとWord2007以降で使われているdocx形式のWord文書を扱うことができます。これを利用してWord文書のテンプレートを読み込んで、値を埋めて出力することができます。よくある帳票処理に使えます。また、Win32OLEを経由しないのでLinuxでも動きます。

Wordテンプレートに日本語を埋め込む

PHPWordのExampleフォルダにTemplate.phpがあるのでこれをコマンドプロンプトなりで実行してみましょう。うまく動いたら置き換える文字列を日本語にして実行してみます。

<?php
require_once '../PHPWord.php';

$PHPWord = new PHPWord();

$document = $PHPWord->loadTemplate('Template.docx');

$document->setValue('Value1', '太陽');
$document->setValue('Value2', '水星');
$document->setValue('Value3', '火星');
$document->setValue('Value4', 'Earth');
$document->setValue('Value5', 'Mars');
$document->setValue('Value6', 'Jupiter');
$document->setValue('Value7', 'Saturn');
$document->setValue('Value8', 'Uranus');
$document->setValue('Value9', 'Neptun');
$document->setValue('Value10', 'Pluto');

$document->setValue('weekday', date('l'));
$document->setValue('time', date('H:i'));

$document->save('Solarsystem.docx');
?>

はい、化けました。

フォーラムの記事を参考にPHPWord/Template.phpのsetValue()からutf8_encodeをコメントアウトします。

<?php
    public function setValue($search, $replace) {
        if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
            $search = '${'.$search.'}';
        }
        /*
        if(!is_array($replace)) {
            $replace = utf8_encode($replace);
        }
        */
        $this->_documentXML = str_replace($search, $replace, $this->_documentXML);
    }
?>

今度はうまくいきました。

置換対象文字列を書くときの注意

PHPWordでやってる文字列置換というのが、OpenXML上の文字列をそのまま置換してるだけなのでOpen XML上で文字が離れてしまうと置換されなくなります。

例えば ${Value4} を ${Value3} に数字の部分だけ書き換えると↓のように文字が離れてしまい置換されなくなります。これで半日無駄にしました…。

一旦消してから1入力で${Value3}と入力すればOKです。

ちなみにOpen XMLの中身を見るには、private $_documentXML; の宣言をpublicにするか、getterを用意するなどして、var_dump($document->_documentXML); すると見えます。

参考サイト

PHPWord
http://phpword.codeplex.com/
East Asian characters appears wrongly
http://phpword.codeplex.com/workitem/8

Skype座談会用イヤホン分配セット

6/11の第9回山口県WEB勉強会では2会場を繋いでのSkype座談会でハウリングに悩まされました。2会場で共にスピーカー・マイクを使うと音声がループしてハウリングが起きます。原理的にハウリングを無くすにはサテライト会場が全員イヤホンにするのがいいかなと思ってできるだけ安価な方向で機材を揃えてみました。


計5,800円。この装備で1つのイヤホン/ライン出力から12人までイヤホンが使えます。6ポート分配機が4つあれば20人までOKです。5人までなら6ポート分配機1つでもいけそうですが音量面でヘッドホンアンプを挟んだ方がいい気がします。

ケーブルと変換アダプタはサウンドハウスのCRASSIC PRO製品がやたら安いです。品質に不安を感じるのであればちょっと多めに買っておくといいと思います。僕のところでは特に不良品には当たっていませんが、CRASSIC PROのステレオフォンケーブルの赤白ゴムはすぐ取れるのでLRをマジックで書いておくと良いと思います。


ヘッドホンアンプもチャンネル数に応じて選べます。庶民の味方BEHRINGER
4ch-4out

ベリンガー ヘッドホンアンプ HA400 Microamp 4ch

ベリンガー ヘッドホンアンプ HA400 Microamp 4ch

4ch-8out
BEHRINGER ヘッドフォンアンプ AMP800

BEHRINGER ヘッドフォンアンプ AMP800

4ch-12out


Amazonにちょっとおされなのがあった。

【国内正規代理店品】belkin ベルキン マルチ イヤフォン スプリッター ROCKSTAR F8Z274

【国内正規代理店品】belkin ベルキン マルチ イヤフォン スプリッター ROCKSTAR F8Z274

お知らせ

山口県WEB勉強会ではSkype対談などコラボレーションをしていただける勉強会を探しています。ご相談は[Twitter:@mikage014]までどうぞ=D

*1:店頭売りの特価品を購入

第9回山口県WEB勉強会 東京サテライトを作って参加してみました

今回はINTEROP2011と予定が被ってしまったので、東京サテライトを立ち上げて東京から参加してみました。

ぼくは5月末くらいにわーっと作ったWebサービスATND地域検索」について発表しました。ぜひ使ってみて下さい><。

勉強会の流れ

今回は2拠点開催の利点を活かして、Webサービスの地域性について座談会を行いました。

13時〜14時 前回のふりかえり・自己紹介
14時〜15時 第2回 東京×山口 Skype座談会「WEBサービスの使い方に地域性はあるのかしら?」
15時〜18時 発表 (東京組:17:30撤収)
18時〜19時 ふりかえり
19時〜 懇親会

私の発表スライド「ATND地域検索作ったよー」

USTREAM録画

僕の発表は1:10:00くらいから。たぶん・・

それ以外の録画はこちらから http://www.ustream.tv/channel/ywebgrp/videos

振り返り

Skype音声通話のセッティングが難しい

    • Ustreamは山口から配信
    • 山口と東京の映像をSkype接続その1(さえきPC)
    • 山口と東京の音声をSkype接続その2(みかげPC)

という構成で行いました。Skype接続その2は当初予定になかったのですが、山口会場のマイク→さえきPCのスピーカーだと音が小さかったので、急遽むいちPC→みかげPCの音声接続を別途立ち上げました。

2会場ともマイク・スピーカーONにすると音声がループしてハウリングしてしまい、東京側で喋るときはマイクON、マイクONの時はスピーカーボリュームを下げる、ということをやっていたので東京側発表のときに山口側の反応が拾えていませんでした。すみません。

マイク・スピーカーとも本番で使うセッティングでテストしておくべきでしたね。

ハウリング問題は双方でマイク・スピーカーを使う限り避けられない感じなので人数少ない方が全員イヤホン使うのもありかなーと思って帰りにアキバで6ポートイヤホン分配器を買ってみたりしました。
HA400と組み合わせて結構な数をまかなえそう。(ポチ済

思いつきに乗ってくれて会議室の確保、プロジェクター等機材の準備にあたってくれた[twitter:@saekisms]、また、意思疎通が取りづらい中、進行して頂いた[twitter:@azmitter]氏には大変感謝しております。
山口、東京で参加してくれたみなさま、USTで見て頂いた方も、ありがとうございました。次回以降もぜひご参加下さい!