「○×ノート」ノススメ

「ひとつでも手を抜くと、全体的なクオリティが低下する」と、ふと思った。ひとつでも手を抜くと、まったく関係の無い物事であったとしても、クオリティが低下する。これは自分に限った話かも知れないけれど、自分自身の傾向を見ていると、そう言うパターンが存在する。

例えば、「A案件はちょっと手を抜いてやろう」「これはちょっと面倒なので後回し」と言った対応をすると、平行して走っている、まったく関係の無いB案件まで手を抜いてしまう。それどころか、日常生活まで手抜きに、怠惰になってしまう。

Read more…

Posted in: 個人的なこと

Tags:

一度も植民地になったことがない日本

「一度も植民地になったことがない日本」を読んだ。

本の内容としては、著者であり、30年間以上の海外生活経験をお持ちのデュラン・れい子さんが体験した、ヨーロッパから見た日本像に関するエッセイとなっている。

僕は海外に出張では言った事があるけれども、まともに英語もしゃべれないし、ましてや住んだ経験も無い。ヨーロッパには行った事も無いし、日本で働く外国人の知り合いの中にはヨーロッパの方もいるけれど、あまりこの手の話もした事が無い。Amazonのレビューを見てみると、賛否両論だけれども、そんな僕の読了後の素朴な感想は、「あぁ、僕はヨーロッパどころか、日本の事もよく知らないんだなぁ。」と言うものだった。

Read more…

Posted in: 本の事

Tags: , , , , , , ,

人生と仕事について知っておいてほしいこと

松下幸之助さんの言葉をまとめた、「人生と仕事について知っておいてほしいこと」を読んだ。

改めて思う事だけれども、何にせよ極めた人の言葉というのは似てくる。松下幸之助さん(はたして、”さん”と言う言い方が正しいのか、どうなのかすら解らない程、遠い存在なのだけど)もまた、パナソニックの経営を通じて、人としての生き方を極めた人なのだろうと思う。
Read more…

Posted in: 本の事

Tags:

スラムダンク勝利学

中学生の時にバスケットを3年間続け、当時は(今も)あまりぱっとしない選手でした。チームもあまり強くありませんでしたが、バスケは大好きでした。最近でも、社会人の草バスケチームに参加し、週に1度程度、練習をしています。そして、スラムダンクが大好きです。当然、全巻持っています。多い時には週に1,2度全巻読み返しをしたりもします。そんな僕にぴったり!と思い、古本屋で購入した、「スラムダンク勝利学」を先ほど読了しました。

常々、マンガのスラムダンクを読み返す度に(バガボンドでも同じように思いますが)、「人生にとって大切な事は井上雄彦のマンガに全て書いてある」と感じていました。この本は、漠として感じ続けていたものを整理し、スポーツ心理学という切り口において整理してくれる内容となっていました。

Read more…

Posted in: 本の事

Tags: , , , ,

PROJECT OF LIFE

プロジェクトマネージャーと言う仕事を初めて、もうかれこれ10年位経つのですが、今まで読んだプロジェクトマネジメントの本で恐らく一番わかりやすく、簡潔に書かれている本だと思います。

プロジェクトと言うと、なんだか畏まった感じがしますが、「具体的な目標」がある、「期限」が決まっている物事のすべてをプロジェクトと考えると、恐らく日常の中の多くの物事がプロジェクトだと言えるのでは無いか?と思います。仕事だけでは無く、私生活の中にも多くのプロジェクトが隠れていると思います。

そう考えると、この本に書かれている、非常に簡潔で、且つ具体性を持ったプロジェクトマネジメントのお話は、全ての人にとって有益な情報になるのでは無いか?とも思います。
Read more…

Posted in: 本の事

Tags: , , , ,

成功はゴミ箱の中に

マクドナルドの創業者である、レイ・クロックの自伝、「成功はゴミ箱の中に」を読んだ。

マクドナルドは子供達が大きくなってから、週1回位は行く様になっており、日常に入り込んでいる数少ない飲食店の一つだと思う。日本のマクドナルドの創業者と言えば、藤田田氏。あまりにも有名すぎる藤田氏だけれども、そもそもの創業者レイ・クロックに関しては、全く聞いた事も無い名前だったので、興味深く読む事ができた。また、本自体は、レイ・クロック氏が語る自伝書となっており、洋書の翻訳版にありがちな、言い回しのもたつき感も無く、非常に読みやすい内容となっている。

この一冊を通して感じた事は、レイ・クロック氏の仕事に対する、マクドナルドと言う企業や事業に対する「徹底」ぶりと、自分の「ぬるさ」だった。

Read more…

Posted in: 本の事

Tags: , , ,

独立、一年が経ちました

ちょうど昨年の6月末日をもって9年間努めたデジタルガレージを退職、翌7月1日からフリーランスとしての活動を開始しました。今日で丸一年。長かった様な、短かった様な、何とも言えない感じです。

この一年の間に、ORIGINサイトに掲載させて頂いている案件に加え、掲載出来ない仕事も含め、かなり多くのプロジェクトに関わり、お仕事をさせて頂きました。

お仕事を通じて関わらせて頂いた方々には、本当に感謝の気持ちでいっぱいです。正直、フリーランスとしてスタートをして、不安と期待が入り交じり、自分をコントロール出来ない事も多々あり、多くのご迷惑をかけてしまったわけで、でも、今もこうしてフリーランスと言う立場でお仕事をさせて頂いている事を考えると、皆様からの本当に優しい助力によるものだと思います。

フリーランスを一年続けてみて、ぼんやりと見えて来た事、見えなくなってしまった事も多々ありますが、今日からスタートした新しい一年について、焦らず、ゆっくり考えてみたいと思います。

Posted in: 仕事のこと

Tags:

「アイデア道場」始めました

Twitterで新たにアカウントを取得し、アイデア道場(@ideadoujou)と言う企画を開始しました。

このアカウントに、みなさんが日々ひらめいたり、あったらいいのにと思っているアイデアを@で投げかけて下さい。皆さんから集められたアイデアの中から、僕の力で実現出来そうなものを片っ端から実現していきます

もちろん、アイデアをつぶやく事も、そのアイデアを実現する事も基本は無料です。ただ、初期投資が大きくかかってしまう、運用の手間が結構かかるなど、実際問題としてお金がガンガン出て行ってしまう様なアイデアにはとても対応する事ができませんが、そうでは無く、ボクが独断と偏見で「おもろい!」と思ったアイデアに関しては、実際に実現してみたいと思います。

企画背景などは後日まとめたいと思いますが、ここ数ヶ月やってみたいなぁと思っていた事を少しでも前に進められたらと思い、始めて見ました。

さあ、皆さんからのフォロー、アイデアをお待ちしています。

Posted in: アイデア道場

Tags: , ,

Tranceが昔から好きになれない理由

大概の音楽は好き嫌い無く聴く方だと思います。でも、どうもTranceだけはちょっと好きになれません。昔から。その理由はよく分かっていなかったのですが、ふと思いついたのでメモ書き。

  1. 用途や目的が明らかな音楽である
  2. 設備や環境が限定される音楽である

まあ、そもそもTranceについてあまり良く知らないと言うところからスタートをしているので、異論反論はあろうかと思いますが、一個人の意見として受け止めて下さい。で、「用途や目的が明確」と言う点に関してですが、要するにあたかも人をトランス状態に誘うような音楽であって、まあ、トビたい気分の時にオススメなわけです。金曜日の夜中とか。逆に言えば、トビたくない時に聞いても仕方が無いと言うか、時と場合を限定した用途となるんだと思うんです。常にトビたい人なんて希なわけで、日常生活の中ではなかなか、余程好きでない限りマッチしないわけです。BGM的な要素はあまり無く、音楽と融合する事が前提。なんなら、酒前提という事かと思います。

2の「設備や環境が限定される音楽」という点に関して言えば、レゲエもそれに近いのかも知れませんが、余程パワーのあるサウンドシステムで聴かない限り、Tranceと言う音楽が持つポテンシャルを引き出すことはほぼ不可能なのでは無いかと思うわけです。しかも、密閉されている空間であればあるほど、音が跳ね返り、共鳴し、Tranceが持つ魅力を最大限に生かす事が出来るのでは無いかと。そう考えて見ると、お家のリビングで聴ける様な代物では無いと言う事になるわけです。と言うか、本気で考えると一般住宅ではムリ。ましてや素人がやるようなレイブや野外パーティーなんかでは相当厳しい結果になるでしょう。

と、考えて見て思ったのですが、要するに僕はそんなにトビたくないし、スーパーサウンドシステムもそれを聴ける空間も無いと言う事で、ちょっと自分の生活からは遠い存在だからこそ、あまり好きになれないと言う事になるんだと思います。逆説的に言えば、

  1. 用途や目的が不明確である
  2. 設備や環境が限定されない音楽である

と言う音楽が自分の好みなのかも知れません。その時々にマッチした音楽というものはあるし、環境もある程度は選ぶ事にはなりますが、それでも毎日の生活の中に入り込んでくる事ができる音楽が好きなんだと思います。個人的に。

Posted in: 音楽

Tags: ,

Tweetの開封率

先日、ある筋からホットリンクさんが展開されている、twitter分析レポートとか言う商品の情報が流れてきたのですが、ふとブログの企業活用が始まった頃の事を思い出しました。

当時、今は無きTechnorati Japanと言うブログ検索サイトを運営していたのですが、そこで求められたものが、まさにホットリンクさんが展開されている商品と同じ様なもの。特定のキーワードに関するブログ記事がどの程度書かれているのか?特定の記事間のリンクネットワークはどうなっているのか?と言うものでした。そのレポート自体がどうなったか?は置いておくとして、「結局はブログでもTwitterでも変わらないのね。」と言う事を思ったわけです。

こういったいこうしたレポートがどんだけ役に立つんだろう?単に「やりました、これが証拠です」的なものなのだろうか?こうしたレポートを見て「効果あったね」と、判断できるのでしょうか?

プロモーション全体の設計があり、その中でのTwitterの役割があり、仮説があり、仮説を検証する為の結果レポートがある。と言うのが普通なんじゃないか?と思うのですが、それにマッチした情報として、いったい何が必要なのでしょう?フォロワーの数?RTの数?Tweetに含まれた短縮URLのクリック数?Twitterからのトラフィック?とかとか、色々とあるわけですが、どんな事を思って実際にプロモーションってやっているんでしょうか?

今日たまたま、古巣で同僚だった、たけちゃんの記事がITProに上がっていたので、中の人の立場としての話を読んでみると「メルマガの代替えになりそう」とのこと。

だとすると、何人にフォローしてもらっているか?1つのTweetがどの程度RTされているか?がメルマガの配信数みたいなものになって、短縮URLが何回クリックされたか?が開封数になるって事になるって事かな?まあ、特定のTweetやReTweetをフォロワーの全員がみているわけは無いので、そこら辺をどう換算するか?がポイントになるんだろうけど。

とか考えながら、ちょっと試しにデータをとってみました。

この前、このブログに書いた、i219の件をTwitterにつぶやいた時なんですが、

  • 全体の合計:1,182(私のフォロワー(726)+RTしてくれた方のフォロワー数(456)※重複は考慮していません)
  • Bit.lyでとったクリック数の合計:36

でした。更に計算を進めると、このTweetの開封率は3.05%となりました。いったいこれが高いのか、低いのかわかりませんが、そう言う事でした。

ここら辺のデータ、少し集められるか調べてみようかと思います。掘り始めるとアイデアの源泉になりそな予感がします。

Posted in: ネットの事

Tags: , , , , ,

CakePHPのShellでコマンドラインから引数を受け取る

これも忘れがち。

./cake シェル名 ファンクション名 引数

とかやると、

$this->args

にコマンドライン引数が入ってくる。dumpしてみると、こんな感じ。

array(1) {
  [0]=>
  string(11) "引数"
}

Posted in: 技術の話

Tags: , , ,

CakePHPのShellでComponentを使う

忘れがちなので、備忘録的エントリー

<?php
App::import('Component', 'コンポーネント名');
class TestShell extends Shell {
    function test () {
        $this->コンポーネント名 = new コンポーネント名Component( $this );
    }
}
?>

結構、良く忘れる。

Posted in: 技術の話

Tags: , ,

i219再始動

えー、以前やりかけて企画倒れとなった企画、i219(アイニイク)に復活の呪文を念じてみました。

と、言うことで会いに来て欲しい、ちょっと手伝ってよ!的な方、募集しております。

Posted in: 自作サイトとか

Tags: ,

WordPress + Paypalで簡単ECサイト

お仕事で、WordPress+ PaypalなECサイトを作っています。非常に簡単にスタートできそうなイメージでしたので、レシピを紹介。

用意するもの

セットアップ手順

  1. Hetemlの簡単インストール機能を使って、WordPressをワンクリックでインストール
  2. WordPressにログイン後、WP Simple Paypal Shopping cartプラグインを追加
  3. WP Simple Paypal Shopping cartの管理ページから、Paypalの設定を行う
  4. ウィジェット機能を使って、カートをお好みの場所に配置
  5. 終わり

これだけで、簡単にECサイトの準備が完了しました。笑っちゃう位あっという間です。

後は商品の紹介ページを普通のブログ記事として投稿、「カートに追加」ボタンをWP Simple Paypal Shopping cartの記述方法でブログ記事の中に追記するのみです。

[wp_cart:PRODUCT-NAME:price:PRODUCT-PRICE:end]

あまりに簡単なので、自分でも何かECやろうかな?と言う気になってしまいました。オンラインのCDショップとか?(儲からないなーww)

Posted in: 技術の話

Tags: , , , , ,

CentOS5.2のPHPを5.3にアップデート

CentOS5.2のデフォルトはPHP5.1なので、色々と困る事が多くなってきた。なので、PHP5.3にアップグレードしてやれーと言う事になり、やった作業ログ。

Remiと言うリポジトリを利用しました。RemiはEPELリポジトリと依存関係にあるようなのでそちらも追加。

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

デフォルトでは、epelリポジトリが有効なので無効化。

sed -i "s/^enabled=1$/enabled=0/" /etc/yum.repos.d/epel.repo

PHP, MySQL, Apacheも全てupdateしました。

yum --enablerepo=remi,epel update php httpd

つつがなく完了。バージョンを確認してみると、

# php -v
PHP 5.3.2 (cli) (built: Mar  4 2010 21:52:46)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

これでPHP5.1から5.3へのバージョンアップが完了です。ほんと、ここら辺のサーバー周りの事、もっと勉強しなきゃなーと思いました。

Posted in: 技術の話

Tags: , , , ,

CakePHP Bit.ly Component

長いURLを短くしてくれて、クリック数を計測してくれるサービス、Bit.lyをCakePHPから簡単に利用する為のComponentを作ったので公開します。

とりあえず実装した機能としては、shorten(長いURLを短縮)、expand(短いURLやハッシュから元の長いURLを取得)、clicks(クリック数の取得)です。shorten辺りは、いくつかオプションのパラメータを省いてしまっているので、適宜改造してご利用頂ければと思います。

Bit.ly Componentのセットアップ

  1. Bit.lyにユーザー登録します
  2. APIキーを取得します(APIキーは、こちらのページで確認する事ができます)
  3. 登録したユーザ名と、APIキーをconfig/core.phpに記載します
  4. controllers/components内にbitly.phpを作成し、下のコードをコピペします。

config/core.phpへの記載例

define('BITLY_LOGIN', 'ユーザー名' );
define('BITLY_API_KEY', 'APIキー' );

controllers/components/bitly.php

<?php
class BitlyComponent extends Object {

    var $domain = "api.bit.ly";
    var $version = "v3";

    function shorten ( $longUrl = null ) {
        if ( is_null( $longUrl ) ) return false;
        return $this->__execute ( $this->__buildUrl( "shorten", array( 'uri' => $longUrl ) ) );
    }

    function expand ( $shortenUrls = array(), $hashs = array() ) {
        if ( !is_array( $shortenUrls ) && !is_array( $hashs ) ) return false;
        if ( is_array( $shortenUrls ) ) $params['shortUrl'] = $shortenUrls;
        if ( is_array( $hashs ) ) $params['hash'] = $hashs;
        return $this->__execute ( $this->__buildUrl( "expand", $params ) );
    }
   
    function clicks ( $shortenUrls = array(), $hashs = array() ) {
        if ( !is_array( $shortenUrls ) && !is_array( $hashs ) ) return false;
        if ( is_array( $shortenUrls ) ) $params['shortUrl'] = $shortenUrls;
        if ( is_array( $hashs ) ) $params['hash'] = $hashs;
        return $this->__execute ( $this->__buildUrl( "clicks", $params ) );
    }
   
    function __buildUrl ( $path = null, $params = array() ) {
        if ( !is_array( $params ) ) return false;
        $return = "http://".$this->domain.DS.$this->version.DS.$path."?";
        foreach ( array_keys( $params ) as $key ) {
            if ( is_array( $params[$key] ) ) foreach( $params[$key] as $value ) $return.= $key."=".urlencode($value)."&";
            if ( !is_array( $params[$key] ) ) $return.= $key."=".urlencode($params[$key])."&";
        }
        $return.= "login=".BITLY_LOGIN."&apiKey=".BITLY_API_KEY."&format=json";
        return $return;
    }
   
   
    function __execute ( $url = null ) {
        if ( is_null( $url ) ) return false;
        App::import('HttpSocket');
        $http = new HttpSocket();
        $result = json_decode( $http->get( $url ) );
        if ( $result->status_code !== 200 ) return false;
        return $result;
    }
}
?>

Bit.ly Componentの使い方
以下、サンプルコードになります。

/* 長いURLを短縮化 */
$shortenUrl = $this->Bitly->shorten( "http://straighte.jp/" );

/* 短いいURLを元の長いURLに戻す */
$expand = $this->Bitly->expand( array( $shortenUrl->data->url ) );

/* 短いいURLのクリック数を取得する */
$click = $this->Bitly->clicks(  array( $shortenUrl->data->url ) );

間違いや、アドバイスをお待ちしております!

Posted in: 技術の話

Tags: , , ,

筋肉痛の都市伝説

週末にバスケを20年ぶり位にやりました。中学生の時に引退したまんまなので、本当に20年ぶり位。引退した年に生まれた子供が、今頃「はたち!かんぱーい!」なんてことを渋谷界隈の居酒屋でやってるなんて事を想像すると、結構ぞっとする年月です。そう言えば、この前イベントに呼んでくれた大学生の方々なんて、もっと下なんじゃ….まあ、そんな話はどうでもいいのですが。

で、あれですよ。あれ、一日遅れで筋肉痛がやってきました。今年で33歳になるのですが、もうそろそろ心も体も年を喰ってきたのかと、一人寂しい想いをしておったわけです。

しかし、元来あきらめの悪いボクは、Wikipediaで筋肉痛について調査を決行、結果、

筋肉痛

一日置いて

やってきた

三十路のカラダは

嘘がつけない

と言う定説は、実は都市伝説であることが判明!

筋肉痛が運動の翌々日以降に発生すると「年取った証拠」などと揶揄されることがある[要出典]。これは「筋肉痛の加齢遅延説」とも呼ばれ、様々な仮説が立てられているが、科学的にこれを証明したデータはない。

と、言うことでボクはまだまだ…

とか思ってる時点で、年齢を重ねたのだと筋肉の痛みと共に、心も少しだけ痛んだ、そんな一日でした。

Posted in: 個人的なこと

Tags: , ,

PECLのOAuthでTwitter OAuth

少し前の話ですが、PECLのOAuthライブラリを利用して、TwitterにOAuthしてみたので、その過程を思い出しながらメモしておきます。

まずは、PECL OAuthのインストール。(環境はOSXです)

sudo port install php5-oauth

httpdを再起動して終わり。(だったはず。もしかすると、php.iniとかいじらないといけないかも。忘れました。)

で、実際にTwitterにOAuthするには、まずはTwitterでOAuthのConsumer keyと、Consumer secretを取得すべくアプリケーションの登録をこちらから行います。で、次はいよいよコードです。

OAuthのフローは、TwitterのDevサイトにわかりやすい絵がありますので、そちらを拝借してきました。このフローにそって、コードを説明。

// まずは、OAuthオブジェクトを生成します。
$oauth = new OAuth('あなたのConsumer Key','あなたのConsumer secret',OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);

// フローのA、戻ってくるのがフローのB
$request_token = $oauth->getRequestToken('http://api.twitter.com/oauth/request_token');

// フローのCとDは、ブラウザーでのアクセスになります。Twitterの場合は、こんなフォーマットです。
echo "http://api.twitter.com/oauth/authorize?oauth_token=".$request_token["oauth_token"];

// フローのEとF(アクセストークンの取得)
$oauth->setToken($request_token['oauth_token'],$request_token['oauth_token_secret']);
$access_token = $oauth->getAccessToken('http://api.twitter.com/oauth/access_token');

// フローGの部分ですが、ここでは、Hello! world!!と、つぶやきつつ、レスポンスを出力してみます。
$params = array( 'status' => 'Hello! world!!' );
$oauth->setToken($access_token["oauth_token"],$access_token["oauth_token_secret"]);
$oauth->fetch('http://api.twitter.com/1/statuses/update.xml', $params, OAUTH_HTTP_METHOD_POST );
var_dump( json_decode( $oauth->getLastResponse() ) );

と言う流れです。

Posted in: 技術の話

Tags: , , ,

Snow LeopardにMac PortsでApache2+PHP5+MySQL5をインストールしたメモ

MBPをSnow Leopardにやっとアップデートしたので、その際のメモ。

まずはSnow Leopard用のMac portsをサイトからダウンロードして、インストール。その後、port自身のupdateを行います。

sudo port selfupdate

はい、準備ここまで。僕の場合、過去の資産はほぼ全てSVNに突っ込んでいるため、/optを惜しみなく削除をしたのちに、portのインストールを行いました。

次はMySQL5のインストールと、起動設定、初期設定。

sudo port install mysql5-server
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
sudo -u _mysql mysql_install_db5
sudo ln /opt/local/bin/mysql5 /opt/local/bin/mysql

ああ、簡単。次はApache2へ

sudo port install apache2

が、エラーが出た。

Error: Checksum (md5) mismatch for httpd-2.2.14.tar.bz2
Error: Checksum (sha1) mismatch for httpd-2.2.14.tar.bz2
Error: Checksum (rmd160) mismatch for httpd-2.2.14.tar.bz2
Error: Target org.macports.checksum returned: Unable to verify file checksums
Error: Status 1 encountered during processing.
Before reporting a bug, first run the command again with the -d flag to get complete output.

うーむ、なぜ?と思いながら、一旦、cleanしてみてやり直して見ることに。

sudo port clean --all apache2
sudo port install apache2

お、出来ました。すかさず、Apache2の起動設定を行います。

sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

最後は、PHP5をインストール。

sudo port install php5 +apache2 +mysql5 +sqlite +pear
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini

ApacheにPHPの設定を施す。

sudo vi /opt/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php # この行をhttpd.confに追加
sudo /opt/local/apache2/bin/apachectl restart

念の為、info.phpを作成して閲覧してみると、こんな感じに起動します。

他に必要なものは順次インストールするとして、とりあえずのベースは出来ました。めでたしめでたし。

Posted in: 技術の話

Tags: , , , , ,

手書きのワイヤーフレーム書く時に便利なテンプレート

いやー、これは便利だ。実に便利だ。これを印刷して、手書きでガシガシ、ページ構成とか考えられる。いやん!素敵!(方眼紙でやれば良いじゃんと言う突っ込みはありますが…)

Posted in: 仕事のこと

Tags: , , , , , ,