α77を買いました

2011 年 10 月 16 日

α77 SLT-A77VQ ズームレンズキットを買いました。

前評判は結構グダグダでしたが、結構いいんじゃないかと思います。
まぁ、自分にとっては初のレンズ交換式カメラだからかもしれないですが。

そのうち、画像をアップするかもです。

—- 追記 —-

近所のコスモス畑に行ってみました。
なかなかいい感じです。


A77 16-50 ISO100 F3.2 1/3200 16mm

PHPでライブラリを使わずにtwitterのOAuth認証を行うサンプル(つぶやき投稿編)

2011 年 9 月 21 日

前回書いた「PHPでライブラリを使わずにtwitterのOAuth認証を行うサンプル」の続きです。

前回書いたサンプルの続きとして、つぶやき投稿のサンプルを掲載してみます。

まず、つぶやき投稿のAPI仕様書を見てみます(長いので一部抜粋です)。

API URL:

  • URL
    http://api.twitter.com/1/statuses/update.format
    (format は xml, json のうちのいずれかを指定)

引数:

  • status=ステータス (必須)
    ステータス(発言、投稿内容)を指定する。必ず URL エンコードすること。
    ステータスは 140文字以内におさめること。140文字を超えるステータスを投稿しようとした場合は、単純に無視される
  • in_reply_to_status_id=ステータスID (オプション)
    返信(reply)対象のステータスIDを指定する。どのステータスに対する返信か明示するのに使用する。
    存在しない、あるいはアクセス制限のかかっているステータスIDを指定した場合は無視される。
    「@ユーザ名」が含まれない、あるいは@ユーザ名」で指定したユーザが存在しない場合、本引数は無視される。
  • lat=緯度 (オプション)
    投稿しようとしている発言に関する位置情報のうち、「緯度」を指定する
  • long=経度 (オプション)
    投稿しようとしている発言に関する位置情報のうち、「経度」を指定する
  • place_id=geocode (オプション)
    geo/reverse_geocode で取得した geocode を使って、位置情報を指定する
  • display_coordinates (オプション)
    緯度、経度を表示するかどうか指定する。指定できる値は true または false
    本引数を指定しない場合は、true を指定したものとみなす

メソッド:

  • POST

API制限:

  • 適用対象外
    ただし、一定時間辺りの実行回数上限が設定されている1日辺り 1000回まで (API による実行以外に、Web での投稿、モバイルでの投稿、SMSでの投稿もカウント対象)上限に到達すると、それ以降は 403 エラーが返るようになる

status

いろいろ書いてありますが、重要なのはstatusです。この値にURLエンコードされた文字列入れてPOSTすればつぶやきとして投稿できます。なお、ここでの注意点としてurlエンコードを行う関数は、urlencodeでは無くて、rawurlencodeを使用してください。半角スペースの扱いが違います。

rawurlencode("つぶやき");

また、上記のAPIのパラメータの他に、oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_version, oauth_token, oauth_signatureの各パラメータが必要です。詳細は前回の記事と同じなので、そちらを参照ください。

なお、oauth_tokenについては前回取得したアクセストークンの値を設定します。

最終的には、status〜oauth_tokenまでのパラメータの値をパラメータ名の昇順に並べて、前回と同様oauth_signatureを生成し、POSTすることでつぶやきの投稿が完了します。

実際のプログラムは次のような感じになるかと思います。実行すると投稿した内容をxml形式で返します。twitterにアクセスするとつぶやき内容が投稿されていることが確認できます。

/**
 * つぶやき投稿サンプル
 */

// 開発者情報設定
$oauth_consumer_key = "xxxxxxxxxxxxxxxxxxxx";
$oauth_consumer_secret = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";

// アクセストークン
$oauth_token = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
$oauth_token_secret = "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww";

$api_url = "http://api.twitter.com/1/statuses/update.xml";

// 必要なパラメータを設定
// 基本パラメータ全部必要
$param_array = array();
$param_array["oauth_consumer_key"] = $oauth_consumer_key;		// twitterで取得したConsumer key
$param_array["oauth_nonce"] = md5(uniqid(rand(), true));		// ランダムな英数字のみからなる文字列32文字を設定
$param_array["oauth_signature_method"] = "HMAC-SHA1";			// HMAC-SHA1固定
$param_array["oauth_timestamp"] = mktime();						// いわゆるUNIXタイムスタンプ
$param_array["oauth_version"] = "1.0";							// 1.0固定
$param_array["oauth_token"] = $oauth_token;						// アクセストークン
$param_array["status"] = rawurlencode("つぶやき " . mt_rand(0, 9999));		// つぶやきの内容。同一文字列を投稿できないので、あえて乱数を付加している

// パラメータ名でソートされていないといけないためソート
ksort($param_array);

// シグネチャ作成用にパラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .="&";
	$param .= $key . "=" . $value;
}

// シグネチャの生成
$signature_param = "POST&" . urlencode($api_url) . "&" . urlencode($param);
$key = urlencode($oauth_consumer_secret) . "&" . urlencode($oauth_token_secret);
$oauth_signature = base64_encode(hash_hmac("sha1", $signature_param, $key, true));

// シグネチャの設定
$param_array["oauth_signature"] = urlencode($oauth_signature);				// シグネチャを設定

// 再度パラメータ名でソート
ksort($param_array);

// 投稿用パラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .= "&";
	$param .= $key . "=" . $value;
}

// アクセスURL設定
$url = $api_url;

// curl初期化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch,CURLOPT_POST, true);// POSTでアクセス
curl_setopt ($ch,CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);// 文字列として取得する設定

// POST実行
$response = curl_exec($ch);

// curl終了
curl_close($ch);

print($response);

以上のような感じでつぶやきの投稿はできます。何かの参考になればと思いますので、ぜひ、いろいろいじってみてください。

PHPでライブラリを使わずにtwitterのOAuth認証を行うサンプル

2011 年 9 月 13 日

今更感はありますが、twitterのOAuth認証をライブラリとかは使わないでPHP(curl)のみで行う方法のまとめです。

とりあえず、twitter関連のAPIを使うにはtwitterに開発者登録が必要なので、こちらのページから開発者登録を行いましょう。

開発者登録の詳細は、他のブログ等でいろいろ解説されていますので、そちらを参照してみてください。

開発者登録を行うとconsumer keyとconsumer secretが取得できますので、これをどこかにメモっておいてください。twitter APIの利用の際に使用します。また、API利用の過程で、リクエストトークン取得後にコールバックURLにリダイレクトされますので、その受け口のURLを登録する必要があります。最初の時点で決まって無い場合は後から登録することもできます。

OAuth認証の流れ

OAuth認証の流れは次のような感じになります。

  1. consumer keyとconsumer secretを使って、リクエストトークン(tokenとtoken secret)を取得
  2. リクエストトークンのうちtokenを使って、ユーザにアクセス許可を求めるためのURLを生成し、そのURLにリダイレクト(Webブラウザにはtwitter上のアクセス許可を求めるページが表示されます。)
  3. ブラウザに表示された「許可(allow)」ボタンをユーザが押すと、開発者登録時に入力したコールバックURLにリダイレクトされる
  4. コールバックURLへのアクセスされたら、そのURL中に含まれるoauth_verifierパラメータを取得
  5. consumer key, consumer secret, token, token secret, oauth_verifier を使って、アクセストークン(token2とtoken2 secret)を取得
  6. 以後、consumer key, consumer secret, token2, token2 secret を使って、APIを実行します

リクエストトークンの取得

では、まずは最初のリクエストトークンの取得から説明します。
実際のリクエストトークンの取得ですが、twitter APIの仕様書を見ると次のような感じで書いてあります。

API URL:

  • URL
    http://api.twitter.com/oauth/request_token

引数:

  • oauth_consumer_key (必須)
    アプリケーションの consumer key
  • oauth_nonce (必須)
    ランダムな適当な長さの文字列。使用可能な文字は ASCII コードの 0×21 〜 0x7F の範囲内で printable なもの
  • oauth_signature_method (必須)
    署名方式。Twitter では常に HMAC-SHA1 を指定する
  • oauth_timestamp (必須)
    本リクエストを実行するための処理を開始した日時
  • oauth_version (オプション)
    適用する OAuth のバージョン。Twitter では常に 1.0 を指定する
  • oauth_signature (必須)
    上記パラメータ(oauth_consumer_key ? oauth_version)等を元に生成した文字列を、「アプリケーションの consumer secret(を URL エンコードしたもの)」を暗号鍵として HMAC-SHA1 方式で生成した署名を BASE64 エンコードしたもの

メソッド:

  • GET

応答:

  • トークンの取得に成功すると、以下のような文字列が返る
    oauth_token=トークン&oauth_token_secret=トークンシークレット

これだけの説明だとよく分からないと思いますので、1つずつ説明します。

oauth_consumer_key

開発者登録時に取得したconsumer keyを設定します。

oauth_nonce

ランダムで適当な長さの文字列を設定します。ようは英数字のランダムな文字列ですね。PHPであれば次のような感じでランダムな文字列が生成できます。

md5(uniqid(rand(), true));

oauth_signature_method

この値は HMAC-SHA1 固定でOKです。

oauth_timestamp

いわゆるUNIXタイムスタンプです。処理日時を設定します。ちなみに、この値が現在時刻からかけ離れているとtwitter側からエラーで弾かれます。
PHPだとmktime関数の値をそのまま設定すればOKです。

mktime();

oauth_version

この値は 1.0 固定でOKです。

oauth_signature

この値を生成するのが一番面倒です。
oauth_consumer_key〜oauth_versionまでのパラメータの値をパラメータ名の昇順に並べて、

HTTPのメソッド名&URLエンコードされたAPIのURL&URLエンコードされた昇順に並べたパラメータ文字列

という文字列を生成し、それのSHA1ハッシュを取得し、さらにBASE64エンコードした値ということになります。

文章で説明するだけだと、多分訳が分からないことになると思いますw
なので次のソースを見てもらった方が早いかなと思います。

$api_url = "http://twitter.com/oauth/request_token";

// 必要なパラメータを設定
$param_array = array();
$param_array["oauth_consumer_key"] = "XXXXXXXXX";		// twitterで取得したConsumer key
$param_array["oauth_nonce"] = md5(uniqid(rand(), true));	// ランダムな英数字のみからなる文字列32文字を設定
$param_array["oauth_signature_method"] = "HMAC-SHA1";		// HMAC-SHA1固定
$param_array["oauth_timestamp"] = mktime();			// いわゆるUNIXタイムスタンプ
$param_array["oauth_version"] = "1.0";				// 1.0固定

// パラメータ名の昇順でソートされていないといけないためソート
ksort($param_array);

// シグネチャ作成用にパラメータの文字列を生成
// oauth_consumer_key=XXXXXXXXX&oauth_nonce=xxxxx...のようなパラメータ文字列を生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .="&";
	$param .= $key . "=" . $value;
}

// シグネチャの生成
// 「HTTPのメソッド名&URLエンコードされたAPIのURL&URLエンコードされた昇順に並べたパラメータ文字列」を作ります
$signature_param = "GET&" . urlencode($api_url) . "&" . urlencode($param);

// SHA1ハッシュを取得し、BASE64エンコードします。
// これでoauth_signatureの値が完成です。
$oauth_signature = base64_encode(hash_hmac("sha1", $signature_param, urlencode($oauth_consumer_secret) . "&", true));

非常に面倒な手続きですが、twitterのAPI呼び出しでは、ほとんどのAPIでパラメータ文字列のシグネチャを生成する必要があるので内容をしっかり把握しておくといいと思います。

応答

前述で生成したシグネチャとパラメータを設定してAPI URLにアクセスすると、処理が正常に行われた場合、

oauth_token=トークン&oauth_token_secret=トークンシークレット

という形でリクエストトークンが取得できます。次はこのリクエストトークンを使ってアクセストークンを取得します。

アクセストークンを取得するには、リクエストトークンを使って、ユーザにアクセス許可を求めるためのURLを生成し、そのURLにリダイレクトする必要があります。

リダイレクト後、ユーザが許可ボタンを押すと、開発者登録で設定したcallback URLに処理がリダイレクトされ、アクセストークンの取得が行われます。

とりあえず、ここでは、「アクセストークンを取得するために、リクエストトークンを使って、ユーザにアクセス許可を求めるためのURLを生成する」処理までのサンプルを載せます。本来はこのURLに自動的にリダイレクトするのが望ましいですが、分かりやすくするため、URLのリンクとして表示するサンプルになっています。

/**
 * リクエストトークン取得サンプル
 */

// 開発者情報設定
$oauth_consumer_key = "xxxxxxxxxxxxxxxxxxxx";
$oauth_consumer_secret = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";

// API URL
$api_url = "http://twitter.com/oauth/request_token";

// 必要なパラメータを設定
$param_array = array();
$param_array["oauth_consumer_key"] = $oauth_consumer_key;		// twitterで取得したConsumer key
$param_array["oauth_nonce"] = md5(uniqid(rand(), true));		// ランダムな英数字のみからなる文字列32文字を設定
$param_array["oauth_signature_method"] = "HMAC-SHA1";			// HMAC-SHA1固定
$param_array["oauth_timestamp"] = mktime();						// いわゆるUNIXタイムスタンプ
$param_array["oauth_version"] = "1.0";							// 1.0固定

// パラメータ名でソートされていないといけないためソート
ksort($param_array);

// シグネチャ作成用にパラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .="&";
	$param .= $key . "=" . $value;
}

// シグネチャの生成
$signature_param = "GET&" . urlencode($api_url) . "&" . urlencode($param);
$oauth_signature = base64_encode(hash_hmac("sha1", $signature_param, urlencode($oauth_consumer_secret) . "&", true));

// シグネチャの設定
$param_array["oauth_signature"] = $oauth_signature;				// シグネチャを設定

// 再度パラメータ名でソート
ksort($param_array);

// トークン取得用パラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .= "&";
	$param .= $key . "=" . $value;
}

// アクセスURL生成
$url = $api_url . "?" . $param;

// curl初期化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);// 文字列として取得する設定

// トークンの取得
$response = curl_exec($ch);

// curl終了
curl_close($ch);

// トークンをセッションに設定
session_start();
$token_array = explode("&", $response);
$token = explode("=", $token_array[0]);
$oauth_token = $token[1];
$token = explode("=", $token_array[1]);
$oauth_token_secret = $token[1];

$_SESSION["oauth_token"] = $oauth_token;
$_SESSION["oauth_token_secret"] = $oauth_token_secret;

// 取得したリクエストトークンを使ってtwitterにアクエスする
// 下記URLにアクセスし、許可ボタンを押下すると、開発者登録でしていした
// callback URLにリダイレクトが行われる
print("<a href=\"http://api.twitter.com/oauth/authorize?oauth_token={$oauth_token}\">http://api.twitter.com/oauth/authorize?oauth_token={$oauth_token}</a>");

アクセストークンの取得

次にアクセストークンの取得です。前述のサンプルを実行し、最後に表示されるリンクをクリックすると、twitterの画面に飛んでアカウントの利用許可画面が表示されます。

そこで、許可ボタンを押すと、開発者画面で登録してあるcallback URLにoauth_verifierというパラメータ付きでリダイレクトが行われます。callback URLの処理内では、このoauth_verifierの値を使ってアクセストークンを取得することとなります。

まず、アクセストークン取得のAPIの説明を見てみます。

API URL:

  • URL
    http://api.twitter.com/oauth/access_token

引数:

  • oauth_consumer_key (必須)
    アプリケーションの consumer key
  • oauth_nonce (必須)
    ランダムな適当な長さの文字列。使用可能な文字は ASCII コードの 0×21 〜 0x7F の範囲内で printable なもの
  • oauth_signature_method (必須)
    署名方式。Twitter では常に HMAC-SHA1 を指定する
  • oauth_timestamp (必須)
    本リクエストを実行するための処理を開始した日時
  • oauth_token
    リクエストトークン取得時に取得したoauth_tokenの値
  • oauth_verifier
    パラメータとして渡されたoauth_verifierの値
  • oauth_version (オプション)
    適用する OAuth のバージョン。Twitter では常に 1.0 を指定する
  • oauth_signature (必須)
    上記パラメータ(oauth_consumer_key ? oauth_version)等を元に生成した文字列を、「アプリケーションの consumer secret(を URL エンコードしたもの)」を暗号鍵として HMAC-SHA1 方式で生成した署名を BASE64 エンコードしたもの

メソッド:

  • POST

応答:

  • 認証に成功すると、以下のような文字列が返る
    oauth_token=トークン&oauth_token_secret=トークンシークレット&user_id=ユーザID&screen_name=スクリーン名

ほとんどのパラメータはリクエストトークンの取得時と同じです。今回新たに加わったパラメータについて説明します。

oauth_token

リクエストトークンの取得時に取得したトークンです。サンプルではセッションに入れていますので、その値を取得して使用できます。

session_start();
$oauth_token = $_SESSION["oauth_token"];

oauth_verifier

callback URLにリダイレクトされる際に付加されたURLパラメータから取得します。

$oauth_verifier = $_REQUEST["oauth_verifier "];

oauth_signature

この値も基本的にはリクエストトークン取得時の処理と同じです。
oauth_consumer_key〜oauth_versionまでのパラメータの値をパラメータ名の昇順に並べて、

HTTPのメソッド名&URLエンコードされたAPIのURL&URLエンコードされた昇順に並べたパラメータ文字列

という文字列を生成し、それのSHA1ハッシュを取得し、さらにBASE64エンコードした値となります。
注意点としては、今回はHTTPのメソッドがPOSTになっているぐらいです。

応答

前述で生成したシグネチャとパラメータを設定してAPI URLにアクセスすると、処理が正常に行われた場合、

oauth_token=トークン&oauth_token_secret=トークンシークレット&user_id=ユーザID&screen_name=スクリーン名

という形でアクセストークンとユーザの情報が取得できます。後はこのアクセストークンを使って様々なtwitterのAPIを利用することができます。

ここでは、アクセストークンの取得までのサンプルを掲載します。

/**
 * アクセストークン取得サンプル
 * この処理はtwitterからリダイレクトされて呼ばれる
 * このPHP自体のURLを開発者登録の画面でcallback URLとして設定しておく必要がある
 */

// 開発者情報設定
$oauth_consumer_key = "xxxxxxxxxxxxxxxxxxxx";
$oauth_consumer_secret = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";

// API URL
$api_url = "http://twitter.com/oauth/access_token";

// リクエストトークンをセッションより取得
session_start();
$oauth_token = $_SESSION["oauth_token"];
$oauth_token_secret = $_SESSION["oauth_token_secret"];

// oauth_verifierの取得
$oauth_verifier = $_REQUEST["oauth_verifier "];

// 必要なパラメータを設定
$param_array = array();
$param_array["oauth_consumer_key"] = $oauth_consumer_key;		// twitterで取得したConsumer key
$param_array["oauth_nonce"] = md5(uniqid(rand(), true));		// ランダムな英数字のみからなる文字列32文字を設定
$param_array["oauth_signature_method"] = "HMAC-SHA1";			// HMAC-SHA1固定
$param_array["oauth_timestamp"] = mktime();				// いわゆるUNIXタイムスタンプ
$param_array["oauth_token"] = $oauth_token;				// 取得済のリクエストトークン
$param_array["oauth_verifier"] = $oauth_verifier;			// 取得したoauth_verifier
$param_array["oauth_version"] = "1.0";					// 1.0固定

// パラメータ名でソートされていないといけないためソート
ksort($param_array);

// シグネチャ作成用にパラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .="&";
	$param .= $key . "=" . $value;
}

// シグネチャの生成
$signature_param = "GET&" . urlencode($api_url) . "&" . urlencode($param);
$oauth_signature = base64_encode(hash_hmac("sha1", $signature_param, urlencode($oauth_consumer_secret) . "&", true));

// シグネチャの設定
$param_array["oauth_signature"] = $oauth_signature;				// シグネチャを設定

// 再度パラメータ名でソート
ksort($param_array);

// トークン取得用パラメータを生成
$param = "";
foreach ($param_array as $key => $value) {
	if($param != "") $param .= "&";
	$param .= $key . "=" . $value;
}

// アクセスURL生成
$url = $api_url;

// curl初期化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch,CURLOPT_POST, true);// POSTでアクセス
curl_setopt ($ch,CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);// 文字列として取得する設定

// トークンの取得
$response = curl_exec($ch);

// curl終了
curl_close($ch);

// アクセストークンの表示
print($response);

本来、アクセストークンを取得した後につぶやき投稿処理等のサンプルを載せようと思ったのですが、だいぶ説明が長くなってしまったので、とりあえず、そこら辺はまたの機会にしたいと思います。

まぁ、twitter用のPHP関連ライブラリもいろいろ出ていますので、わざわざライブラリを使わないで書く必要はあんまりないんですけど、ライセンスの問題やいろいろと自分で書いてみたいって人のためにサンプルとして載せておきます。

なお、例によって、サンプルプログラムは自由に使っていただいてOKです。無保証ですので、不具合等あったらがんばって直してみてくださいw

とりあえず、そんなとこで技術メモでした。

————————————————————–
2011-09-21
PHPでライブラリを使わずにtwitterのOAuth認証を行うサンプル(つぶやき投稿編)も書きましたので、合わせてどうぞ。

JANコードをネットと郵送のみで個人で取得する方法

2011 年 8 月 21 日

とある製品を個人で開発してJANコードを取得したので、その方法を簡単に説明したいと思います。

JANコード

まず、JANコードですが、これはいわゆる商品についているバーコードのことだと思ってもらってOKかと思います。ジュースのペットボトルとかについているバーコードですね。お店で買うとピッってやって値段が表示されるやつです。

このJANコードは財団法人流通システム開発センターというところで、管理されています。基本的に、今の日本でなんらかの製品を流通させようと思ったら、その製品にJANコードを付けるのが必須の状態だったりします。POSシステムや在庫管理システム、オンラインショッピングシステムとかでもJANコードが必要だったりして、このJANコードを取得しておかないと、なかなか話が進みません。

このJANコードは全部で13桁の数字で構成されていて、上位9桁がJAN企業コード、次の3桁が商品アイテムコード、最後の1桁がチェックデジットになります。取り扱う製品の数が多い企業は上位7桁がJAN企業コードで、次の5桁が商品アイテムコードになりますが、まぁ個人でやる範囲なので今回は9桁+3桁+1桁のコードを取得しました。

JANコードを取得するという場合、この上位9桁のJAN企業コードを割り当ててもらうということになります。このJAN企業コードさえ割り当ててもらえれば、3桁の商品アイテムコードは001〜999まで自由に番号を付ける事ができます。

JANコードのさらなる詳細は財団法人流通システム開発センターのサイトに詳しく解説されていますので、そちらを参照するといいかと思います。

JANコードの申請

財団法人流通システム開発センターのサイトを見ると、申請するには、「JAN企業コード利用の手引き」(定価1,200円(税込))という冊子を買ってくださいと記載されています。この冊子は全国の商工会議所で購入するか、流通システム開発センターから購入してくださいと記載されています。

この冊子は次のような感じの薄っぺらな冊子で、この冊子に申し込み用紙と振込み用紙がついています。

正直、全部ネットで済ませてほしいところですが、この冊子を買うのがJANコード取得の必須条件なので購入するしかないです。商工会議所か、流通システム開発センターから購入となっていますが、実はamazonでも販売しているので、amazonから買うのがいいかと思います。今なら送料無料で数日で到着しますし、地元の商工会議所まで出向く手間も省けます。

この冊子が届いたら、添付の払い込み票を使って郵便局で登録料を払います。通常個人で登録する場合10,500円で3年間有効の登録管理費を払うだけですむかと思います。払い込みが完了したら、同じく添付されているJAN企業コード登録申請書に記入して、払い込み受領証の写しを添付の上、流通システム開発センターに申請します。冊子には地元の商工会議所に提出してくださいと記載されていますが、流通システム開発センター宛てに直接郵送でもOKでした。

申請後問題が無ければ、1週間ぐらいで流通システム開発センターから次のような感じの封筒が送られてきてJAN企業コードの登録が完了します。後は、自分でバーコードを印刷したり、各システムの商品マスタに登録したりして運用する感じです。

まとめ

ということで、結構簡単に個人でもJANコードは取得できることが分かりました。できれば、全部ネットですむとさらにいいですね。ドメイン取得するぐらい簡単になってほしいものです。

あんまり、個人でJANコードを取得することは無いかと思いますが、何か自分で製品を開発したような場合は取得してみるのも面白いかもしれないですね。

計画停電があっても自動でエアコンの電源を入れる方法

2011 年 6 月 23 日

今年の夏は原則計画停電は実施しない方向らしいですが、ここ最近の暑さのせいで、早速こんな事態になっている模様です。

夏至の22日、日本列島は高気圧に覆われ、群馬県館林市で36.5度を観測するなど、気温35度以上の「猛暑日」をこの夏初めて全国13地点で観測した。東京電力管内で同日の電力需要が4129万キロワットと東日本大震災以降で初めて4000万キロワットを超えたほか、各地で電力需要が急増した。
—- 中略 —-
東電は22日朝の時点で電力需要ピークを3990万キロワット(午後2-3時)と見込んでいたが、内陸部の気温が想定以上に上昇。22日の供給力を4730万キロワットとしていたため、供給予備率は約15%となり、安定供給に必要な8-10%を上回った。

原発事故の対応を見ている限り、東京電力の言っていることは、そのまま信用できなそうなので、もしかすると、計画停電は実施せざるおえない状況になるのかなぁとは思います。

まぁ、停電になってしまうのは、現状仕方無いとしても、停電になるといろいろと困ることが出てくる分けです。

特に、エアコンの電源が問題です。わんこやにゃんこ等のペットを飼っていたり、自宅にサーバ設備があったりで、留守中も常時エアコンの電源を入れっぱなしにしておかなくてはならない人が結構いるんじゃないでしょうか。

停電時のエアコンの最大の問題は、一度停電でエアコンの電源が切れると、電気が復旧してもエアコンの電源が入らないということです。停電中エアコンが使えないのは仕方無いですが、電気が復旧しても使えないのは厳しいです。

エアコン自体がネットワークに繋がるようなら、遠隔から電源ONなんてこともできるのですが、流石に今時のエアコンでもそんなすごい機能はありません。

仕方無いので、なんとか簡単にエアコンの電源を入れられる方法を探したところ、良さそうなモノがあったので、紹介したいと思います。

それは、オーム電機のエアコン汎用リモコンOAR-10Rという製品です。

ようは、どのメーカーのエアコンにも使用できる、汎用リモコンなんですが、これの優れている点は、指定した時間後に電源を入れる「おはよう機能」というタイマーがリモコン自体に内蔵されていることです。

このタイマー機能を利用すれば、計画停電終了に合わせて電源が入るよう設定できる分けです。計画停電がありそうな日は毎日設定しなければなりませんが、エアコンが止まってしまうよりはましかなと思います。

計画停電が無いのが一番なのですが、計画停電が起こりえることを想定して準備しておくのもいいんじゃないかなと思います。値段もそんなに高くないですしね。備えあれば憂い無しです。

あと、当たり前ではあるのですが、あくまでリモコンが赤外線で電源を入れてくれるという製品なので、タイマーを設定した後、リモコンはエアコンの方向に向けて置いておく必要があるというのがポイントですね。