心をつかむのはコピーか

このまま一生、砂糖水を売りつづけるのか、
 それとも世界を変えるチャンスをつかみたいか。

Do you want to sell sugar water for the rest of your life,
 or do you want to change the world?

〜wikipedia日本語版:ジョン・スカリーの項より〜

これは、スティーブ・ジョブスが、ペプシコーラ事業担当社長をしていたジョン・スカリーを、アップルの社長に誘うのに使った言葉です。 凄いですよね。これを言われたジョン・スカリーの心境や如何に…と思いました。最終的には、ジョブスの誘いに乗ってアップルの社長に就任されたところを見ると、多かれ少なかれグラっと来たのかもしれません。

この言葉、もはやアップルの社長という職業につけたコピーといっても良いと思いますが、この言葉は真実でしょうか。つまり、本当に、ペプシコーラ=砂糖水で、アップル=世界を変える企業 なのかということです。 嘘ではありませんが、真実でもありません。

たとえば立場が逆、つまり、スティーブ・ジョブスがペプシコーラ事業担当社長を捜していて、ジョン・スカリーがアップルの社長だったら、ジョブスはこう言ったかもしれません。

「このまま一生、ガラクタを売り続けるのか、それとも世界を潤す仕事をしたいか。」
※これは私が書いた言葉です。念のため。

ここで言いたいのは、アップルの商売が凄いんじゃなくて、それを言い表した言葉が凄いんでもなくて、人(ここではスティーブ・ジョブス)が凄いんだということです。 何を当たり前のことを…という感じですが、本をたくさん読んでいると、そういうことを忘れそうに私はなるので書いてみました。

コピーや言葉には、力を宿すことは出来ても、力を発することはありません。他人の心をつかむ力を持っている人がいて、彼らが発する言葉には、その力が宿っている、というだけです。 言葉そのものよりも価値があるのは、言葉に力を込める方法を知っているヒトです。



スティーブ・ジョブスの伝説的エピソード満載の本3冊をピックアップしてみました。
「神の..」はいくら何でも言い過ぎじゃないか、と思いましたが、確かにギリシャ神話の神様っぽい人柄かもしれないな、と思い直しました。

[Java,log4j]log4jでのログ出力を、標準出力と標準エラー出力に振り分ける

cc:mwichary

仕事で以外に手間取ったのでメモ。

log4jのログ出力機構は、Loggerごとに複数Appenderを設定できるが、各Loggerには1つの出力レベルしか設定できない。なので普通に設定するだけだと、同一カテゴリに対する特定レベルのログを複数Appenderに出力することは出来ても、ログレベルごとに出力先Appenderを振り分けるような事は出来ない。

なので例えば、標準出力にはdebugを含めて全てのログを出力し、標準エラー出力にはerror,fatalだけを出力したいような場合に困ってしまう。

これを解決するには、Appenderにfilterを適用する。

ログ出力設定を読み込む。(javaコード)

org.apache.log4j.xml.DOMConfigurator.DOMConfigurator.configure("log4j.config.xml");

log4j.config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!– 標準出力へのアペンダ –>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %5p %c{1} – %m%n"/>
        </layout>
    </appender>

    <!– 標準エラー出力へのアペンダ(ERROR,WARNのみ出力) –>
    <appender name="stderr" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.err" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %5p %c{1} – %m%n"/>
        </layout>

        <!– ERROR, WARNのみ出力するfilter設定 –>
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="LevelToMatch"  value="ERROR" />
            <param name="AcceptOnMatch"  value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
            <param name="LevelToMatch"  value="FATAL" />
            <param name="AcceptOnMatch"  value="true" />
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter" />
    </appender>

    <!– 特定製品についてはdebugレベルで出力しておく(不要ならこの要素ごと削除する) –>
    <logger name="com.example">
        <level value="debug" />
        <appender-ref ref="stdout" />
    </logger>

    <!– 全体ではエラー出力のみログ出力 –>
    <root>
        <level value="error" />
        <appender-ref ref="stderr" />
    </root>

</log4j:configuration>

javaプログラムの標準出力先、標準エラー出力先を指定するには(Windowsの場合)

(java 実行クラス名 2 > stderr.txt) > stdout.txt

のように指定すればよい。

腹式呼吸だと何が嬉しいのか

# 知っている人は普通に知っているような気もしますが、個人的に新鮮だったのでメモ。


cc:ralphbijker

先週末、ボイストレーニングの勉強会に行ってきました。

ボイストレーニングといっても「ボーカリストのための」トレーニングだったので、「息継ぎ」のトレーニングもあったりとか色々新鮮でした。

ボーカリストとかになりたいわけでは全然ないのですが、一番「へー」と思ったのは腹式呼吸の話です。

スピーチやプレゼンで、声を「張る」のは重要なポイントとされていて、いろんな本に「腹式呼吸でやると良い」と書かれているのですが、理由が説明されているものを読んだことがなかったので「へー。でもなんで?」と思っていたのですが、その謎が解けたことです。

横隔膜をしっかり下げると、肺が横方向だけでなく縦方向にも膨張するので、肺活量を増やすことができるのです。これをちゃんとやると、結果としてお腹が出っ張るわけで、そこから「腹」式呼吸といってるわけですね。

しっかりと声を出すためには、声を「出す」方だけではなくて、そのために息を「吸う」ときから意識しないといけないというのも、なるほど〜と感じたポイントでした。

腹式呼吸とは、別に腹筋を意識することが目的ではなくて、肺活量を増やすことが目的だったわけです。