巨人の肩の上に登る

先人の積み重ねた発見に基づいて、なにかを発見しようとすることを指す。

【書評】マイケル・ポーターの競争戦略

古典のやっかいなところは、”誰もがよんでおけばよかったと思うが、誰も読みたいとは思わない”という点だ

マーク・トウェインが言った通り、古典というものはには中々手が出しにくい。本書は、M.E. ポーターの古典的名著「競争の戦略」のエッセンスをまとめたものだ。研究者にではなく、企業の経営者や管理職のためにまとめられており、事例を交えて説明されているので、直感的に理解できた。

最近、数年前に読んだ本の内容が全く思い出せないことがある。あるときから、読んだ本の内容をメモしたり、ブログにしたりしていたが、横着したりそれ以前に読んだ本だと、読んだだけになってしまっている。小説ならともかく、実用書だと、読むだけでは意味がない。なるべく、学んだことが活かせるように、簡単にまとめてみる。


競争

競争とは

ポーターは競争を2つに区別して考えいる。

  • 最高を目指す競争 ー 1位になるための、市場シェアを重視した、「最高の」製品によって「最高の」顧客に対応する、模倣による競争と、誰も勝てないゼロサム競争
  • 独自性を目指す競争 ー 収益を高めるための、利益を重視した、ターゲット顧客の多様なニーズを満たす、イノベーションによる競争と、複数の勝者と多くの土俵を創るプラスサム競争

W・チャン・キムレネ・モボルニュの言葉でいうならば、前者が”レッドオーシャン”、後者が”ブルーオーシャン”ということになる。


5つの競争要因(ファイブフォース)

5つの競争要因とは、業界の構造を決定し、収益性に影響を与える。

  1. 既存の競合企業同士の競争
  2. 買い手の交渉力
  3. サプライヤーの交渉力
  4. 代替品の脅威
  5. 新規参入の脅威

収益は下記の単純な式で求めることができ、5つの要因は、価格かコストかあるいは両方に影響を与える。

価格 - コスト = 収益

例えば、買い手の交渉力が強いと、値下げ(価格を下げる)の圧力をかけたり、製品・サービスの向上(コストを高める)を求める。


競争優位

競争優位とは、他者と異なるバリューチェーンを構築し、業界平均を上回る業績を確保することを意味する。

バリューチェーンとは、企業が製品を設計、販売、配送、サポートするために遂行する活動の集合のことだ。そしてこのバリューチェーン内の活動の組み合わせが、業界内での相対的なポジションを決定する。 ポーターの言う戦略とは、相対的な価格または相対的なコストを自社に有利に変化させるために、バリューチェーンの活動を選択することである。
つまり、ライバルと同じ活動をより優れて行うことで、低いコストでニーズを満たすことは、最高を目指す競争を行うことであり、その事業に戦略がないことを意味している。

あらゆる間違いのうちの最たるものは、最高を目指して競争することです。みんなと同じ道を行き、なぜか自分だけが良い結果をだせると思い込む。

また、企業の評価尺度としてポーターは、資源を有効に利用することが組織の本来の努めであると考えていて、この考えを最もよく表す財務指標が、投下資本利益率(ROIC)であると述べている。長期的(長期の定義は業界によって異なる)なROICを見れば、企業が経営資源をどれだけ有効に活用できているかが分かる。


戦略

戦略とは、競争から身を守るためのものであり、次の5つの基本的条件をクリアするものが堅牢な戦略であると言える。

1. 価値提案

戦略の第一条件は、価値提案がライバル企業のものと異なることだ。他と同じ顧客に対応し、同じニーズを満たし、同じ相対的価格で販売する企業に、戦略はない。

  1. どの顧客を対象とするのか
  2. どのニーズを満たすのか
  3. 相対的価格をどのように設定すれば、顧客にしかるべき価値を提供しつつ、しかるべき収益性を実現できるだろうか?
2. 独自に調整されたバリューチェーン

第二の条件は、バリューチェーンを価値提案に合わせて、調整することだ。

戦略と競争優位の核心は活動にある。つまり競合他社と同じ活動を異なるやり方で行うか、他者と異なる活動を行うかを選択することだ。

3. トレードオフ

ここで言うトレードオフとは、一部の顧客のニーズによりよく答えるために、他の顧客のニーズには答えないことである。このような制約を受け入れることが、競合他社との価格やコストの差を生み出し、競合他社の模倣を阻む。

4. 適合性

適合性はバリューチェーン内の活動の相互関係である。相互依存的な活動を選択することが、優れた戦略を実現するためにはかかせない。競争での成功が一つのコアコンピタンスで成り立っているというのは誤解である。

5. 継続性

逆説的だが、継続的な戦略は、組織の環境変化への適応能力とイノベーション能力を高める。

上記の4つの条件を満たすには、時間がかかる。変化に乏しい企業が批判されがちだが、企業は変化しすぎたり、誤った方法で変化することがある。


関連記事

自己表現が抑圧される社会で如何に創造性を発揮するか

韓国の小説家キム・ヨンハは「アーティストになろう、今すぐに」というテーマでTEDxSeoulに登壇しスピーチをした。我々は、生まれながらにアーティストであり、アートに対する欲求は消えたりしない。自信の経験と偉大な芸術家の作品から、自己表現が抑圧される社会の中で、如何に創造性を発揮するのか?、そうすることの意義は何か?を語った。


創造性が死ぬ瞬間

何か創造的な活動を始めようとしたときに、それをやめるための沢山の否定的な理由がでてくる。多くの人が次のエピソードに共感できるはず。

「公民館のクラスで演技を習ってみようかな」 とか 「カンツォーネを習いたい」というと「ふーん? 何のために?」と訊かれる。この「何のために?」というのが悪魔の呪文なのです。アートは何かのためにやるものではない。アートこそが究極のゴールです。


創造性を育む

アートは天才や修行を重ねたプロフェッショナルのものだけじゃないと語る。子どもの創造性の育みかたに、感銘を受けた。

「ママ! 帰り道に誰に合ったか分かる? 宇宙人だよ」 と子供に言われたら、普通の親は「やめなさい!」と応える。理想的な親はこんな風に応えるだろう 「本当?宇宙人がいたの? どんなだった?何かしゃべった? どこで会ったの?」 「えっと...スーパーの前だよ」こんな風に話をすれば、子供は次の展開をちゃんと考えなきゃいけなくなる。そうするうちに物語がどんどん発展していくのです 。
...
(中略)
...
この文をちょっと見てみましょう「ある朝、グレゴール・ザムザが気がかりな夢から目ざめたとき、自分がベッドの上で一匹の巨大な毒虫に変ってしまっているのに気づいた。」 カフカの「変身」の冒頭の1 文です。こんな有り得ない出だしなのに、それが説得力を持つように続けることでカフカは現代文学の名作を生み出しました。


創造性を発揮するコツ

作文の講義で、キムは学生に白紙とテーマを与える。ただし、狂ったように書け! と制約を課す。

狂ったように書けというのは、ゆっくり書くといろんなことを考えて、悪魔に隙を与えることになるから。悪魔はいくつもの理由を持ち出して、書くことを諦めさせようとする。 「みんなに笑われるよ」「下手くそだな!」 「変な文章!」「字が汚い!」 そういうことを次々に言う。この悪魔に捕まらないように、全力疾走しなきゃいけない。僕の授業でこれまで一番良かった作品は、じっくり取り組める長期間の課題ではなく 1 時間以下の短い時間に、僕の目の前で学生が鉛筆で書きなぐった文章だった。


Just do it

創造的であるために必要なこと。

1990年にモダンダンスの先駆者マーサ・グラハムが韓国を訪れた際、金浦空港に降り立った90代の偉大な芸術家に、記者たちが型どおりの質問をした。 「優れたダンサーになるために すべきことはありますか? 韓国のダンサーたちにアドバイスをお願いします」 。彼女の答えはこうだった 「just do it(とにかくやってみるのよ)」


関連記事

これは1650に入るのか?おすすめのKindle書籍と受動的読書

f:id:mayo_yamasaki:20140918155453j:plain Kindle books on tablet By: thestorylady

Kindleのおすすめ書籍

最近、Kindle電子書籍を読み始めた。
夏目漱石の「こころ」や、夢野久作の「ドグラ・マグラ」などの名作が無料で読め(青空文庫などでも読めますが)、 最新の書籍も、70〜30%オフの価格で購入することができる。

何かお買い得な書籍、おすすめな書籍はないものか?と、探していたところ、
Kindle日替わりセール/月替わりセールなるものを発見。
セールページのURL(GETのdocid)は本ごとに、つまり日替わりで変わってるっぽいので、@AmazonJPKindle を参照されたい。

受動的読書

このごろ、品揃えや地理的な問題から、書店に出かけることが少なくっていて、Amazon.comなどのeコマースを利用する機会が増えてきた。 そのせいもあってか、関心の強い分野意外の本を読むことが減っているなと感じており、知識が広がらず良くないなと考えていた。 ですのでたまには、”Kindle日替わりセール/月替わりセール”のような形で、ある程度、受動的に本を選ぶのも良いのではないかと思う。

1650に入るのか?

一方で、良く考えてから、読む本を選ぶ必要があるのではないか?とも、思っていて。
学部生だったころに比べて、本を読む時間が減ったのと、読む本の種類が変わってきたために、年間で30冊にも満たない今日この頃。

日本人の平均寿命(男性)は、約79歳であるから、ざっくり計算すると、残り55年ほどで。 また、年間30冊だと仮定すると、残りの人生でたったの1650冊しか読めないことになる。

出版科学研究所の調べによると、2012年度の新刊点数は78,349であるから、1650冊は約1週間分に相当する。 ちなみに、新刊点数の推移はなだらかに上昇している。さらに、電子書籍なども含めると、書籍の出版が容易になり、よりいっそう増加する傾向にあるように感じる。
以上のことから、仮に年間の新刊点数が変わらないとしても、これから死ぬまでに出版される内の0.04%しか読むことができない。無論、今までに出版された本も読むわけであるから、さらに少なくなるだろう。

おわりに

自分がどの程度のペースで本を読めるのかにもよるし、
一度選んだ本を最後まで読む必要性もないのですが、
いま、目の前にある本を1650冊の中に入れるのか否か、そういう目線で本を選んでみるのもいかがでしょうか。

【書評】勝ち続ける意志力 世界一プロ・ゲーマーの「仕事術」


梅原大吾は、17歳にして世界一になり、日本人初の”プロ・ゲーマー”となった人物で、「世界で最も長く賞金を稼いでいるプロ・ゲーマー」としてギネスにも認定されている。

そんな彼の、勝ち続けるための哲学が書かれた本書。その哲学はゲームだけに留まらず、ある程度普遍的なものであると感じられます。文章も読み易く、新書なので気軽にサクっと読めました。

最近だと、ウメハラの少年期を描いたWEBマンガウメハラ To live is to game 」が話題になりました。


親が子どもの好きなことを理解できる確率は低い

時代は移り変わっていくので、親が子どもの好きなことを理解できる確率は低いと思う。将来、僕が親になり、子どもが何かに夢中になり、それが僕の認めるものである可能性は低い気がする。

梅原の父さんは、自身の幼少期の経験から、「息子の好きになったものには一切口を出さない」というポリシーを貫いている。だからこそ、ゲームというものに全力で取り組むことができたのだと思う。一方で、好きになった対象が勉強やスポーツではなく、ゲームであったために、葛藤があり、梅原の父さんも梅原さん自身も、苦悩している。


便利で簡単な戦法を選んでしまうと、確実に成長が止まってしまう

便利で簡単な戦法を選んでしまうと、確実に成長が止まってしまう。それは間違いない。それでは10の強さは手にできるが、そこが行き止まりだ(10とは一般的な努力で到達できる最高点ということだ)。僕は10の人間に勝つために頑張っている。そんな僕が10では意味がない。だから、時間がかかっても、バカにされても、11、12、13の強さを目指す。

Web開発にしろ、アルゴリズムの実装にしろ、ソフトウェアの世界でも言えることのように思います。何かを実装する上で、既存の確立された10点の方法(ライブラリだったり、フレームワークだったり)と、11、12、13を目指した時間のかかる方法(それらを自分で作り上げる)がある。

多くの場合で、10点の方法をとることが合理的ではあるが、そればかりでは突出することができない。だからこそ、長い時間と努力で11、12、13点を目指さなければならない。時間の制約もある中で、いずれの道を選択するのか、常に悩ましい。


自分自身と向き合うこと

若い子が、人の目を気にして自分のやりたいことができないというのは、限りなく不幸だと思う。


10年継続できる努力

大会で結果ばかり求めていたときは、何日か休みたいと思った。
しばらく休んで、また立ち上がって努力する感じだった。しかし、そういうサイクルで過ごしていたら、頑張ることが次第に苦痛になってきたのだ。
だから、適度な頑張りを続けて毎日を心地よく過ごすことが大事なのである。人生に区切りを求めるのではなく、継続する。


全盛期はいま、そして未来

喜劇王であるチャールズ・チャップリンは、あるインタビューで、
「あなたはいままでたくさんの劇を作ってこられましたが、自分のいままでのなかで最高傑作はどれか、と聞かれたらなんて答えます?」という質問に対し、
”Next One. (次回作だよ)”と答えた。


若いうちから失敗したほうがいいだけ

もちろん、年を取ったら失敗できないなんてことはない。若いうちに失敗した方がいいのではなく、若いうちから失敗したほうがいいだけだ。


関連記事

CaboChaをPythonで使う(Mac OS X)

忘れるのでメモ。
基本的に、公式サイト通り。

CaboChaのインストール

ここから、該当するソースをダウンドロード。

事前に下記三点をインストールしている必要があります。

  1. CRF++ (0.55以降)
  2. MeCab (0.993以降)
  3. mecab-ipadic, mecab-jumandic, unidic のいずれか
$ ./configure 
$ make
$ sudo make install --enable-utf8-only

Pythonのドライバ

Pythonのドライバは、先程ダウンロードしたディレクトリ内にあります。

$ cd cabocha-x.xx.tar.bz2/python
$ python setup.py install

PythonからCabochaを使う

import CaboCha

c = CaboCha.Parser()

sentence = "太郎はこの本を二郎を見た女性に渡した。"

tree =  c.parse(sentence)

print tree.toString(CaboCha.FORMAT_TREE)        # 簡易 Tree 表示での出力
print tree.toString(CaboCha.FORMAT_LATTICE)   # 計算機に処理しやすいフォーマットで出力
簡易 Tree 表示での出力
 太郎は-----------D
      この-D       |
        本を---D   |
        二郎を-D   |
            見た-D |
            女性に-D
            渡した。
EOS
計算機に処理しやすいフォーマットで出力
* 0 6D 0/1 -2.457381
太郎  名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/0 1.509507
この  連体詞,*,*,*,*,*,この,コノ,コノ
* 2 4D 0/1 0.091699
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 3 4D 1/2 2.359707
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 4 5D 0/1 1.416783
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
* 5 6D 0/1 -2.457381
女性  名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 6 -1D 0/1 0.000000
渡し  動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS


関連記事

Mac OSX(mono)でC#のユニットテストをする

f:id:mayo_yamasaki:20140908152016g:plain

C#ユニットテスト単体テスト)を書いてみた。
NUnitというフレームワークデファクトっぽいので、これのCUIでの使い方をメモ。

install

以前に書いた記事 monoとXamarin StudioでC# でXamarin Studioを入れていたので、恐らく、NUnit関連で必要なものは入っていると思います。
一応、$ which nunit-consolenunit-consoleのパスが通ってるか確認。

Sample

準備が整ったので、早速試してみましょう。
HelloTest.csを下記の内容で作成。

using NUnit.Framework;
using System;

namespace HelloTest
{
    [TestFixture]
    public class NUnitTestClass
    {
        [Test]
        public void TestCase1 ()
        {
            Assert.AreEqual (2, 1 + 1);

        }

        [Test]
        public void TestCase2 ()
        {
            Assert.AreEqual (2, 2 - 1);
        }
    }
}

分かり易く、失敗するケースで試してみます。
TestCase2の方は明らかに誤りなので、コケるはずです。
NUnit.Frameworkの詳細に関しては、公式のドキュメントを参照されたい。

Test

手順としては、テストコードをライブラリ形式にコンパイルしてから、nunit-consoleで実行します。

コンパイル
$ mcs HelloTest.cs -reference:nunit.framework.dll -target:library
実行
$ nunit-console HelloTest.dll
結果
NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment -
   OS Version: Unix 13.3.0.0
  CLR Version: 2.0.50727.1433 ( 3.8.0 ((no/45d0ba1 Tue Aug 26 20:33:43 EDT 2014) )

..F
Tests run: 2, Failures: 1, Not run: 0, Time: 0.107 seconds

Test Case Failures:
1) HelloTest.NUnitTestClass.TestCase2 :   Expected: 2
  But was:  1

...

上記の出力結果から、問題の箇所でコケていることがわかります。
ちなみに、テスト結果はxmlで保存されます。


関連記事

gollumでwikiを作ってみる(Mac OS X)

f:id:mayo_yamasaki:20140802013348j:plain

ある程度まとまった情報になると、ブログ記事にしても良いのですが、そうでない場合は、メモ(Evernote, Dash, etr)として保存しています。 ですが、かなり大雑把に記録しているため、構造化されておらず不便...。そこで、個人用wikiにまとめてみることにしました。

一口にwikiといっても、SaasだったりOSSだったり、いろいろあります。今回はgit上で保存・管理するgollumを使ってみました。

決め手になったのは、シンプルなUIだったり、Markdown記法が使えたり、機能の拡張もしやすそうなのところです。とりあえずデフォルトのまま、ローカルwiki + githubにバックアップな体制で運用してみます。

Home

f:id:mayo_yamasaki:20140802020446p:plain

編集画面

f:id:mayo_yamasaki:20140802020503p:plain

install

gollumをinstallしようとしたら、icu4cでerrorが出たので,先にinstallしました。
icu4cはC++Unicode文字処理のモジュールみたいです。
github-markdownはoptionalですが、github flavoreなmarkdownが利用できます。

$ brew install icu4c
$ gem install gollum
$ gem install github-markdown

wikiの作成

手順としては次のような流れです。

$ git init wiki
$ cd wiki
$ gollum

http://localhost: 4567 をブラウザで開くと表示されます。

pushの自動化

Githubリポジトリを作成

詳細は省きますが、Githubリポジトリを作成し、originに設定。


push用のシェルスクリプトを作成

gollum用のリポジトリの直下に下記の内容で、sync.shを作成。
忘れずに実行権限を振り当てます。$ chmod a+x sync.sh

#!/bin/bash
DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
(cd $DIR && git pull && git push)


Launchd用のplistを作成

~/Library/LaunchAgents/以下にcom.github.gollum-startup.plistを作成して、以下の内容に先程作成したsync.shのパスを記入して保存します。(Launchdはcron的なやつ)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.github.gollum-sync</string>
  <key>RunAtLoad</key>
  <true/>
  <key>ProgramArguments</key>
  <array>
      <string>ここにsync.shのパスを記入。(e.g. /Users/hoge/fuga/sync.sh)</string>
  </array>
  <key>StartInterval</key>
  <integer>60</integer>

</dict>
</plist>

StartIntervalで更新間隔を設定。とりあえず60秒ごとにpush。

おわりに

あとはお好みで、起動の自動化だったり、書き込み権限の付与だったり、デザイン変更だったりを自由に。