2009年12月31日木曜日

野菜工場の市場は爆発する瞬間がある。

最初、野菜工場と聞いたときに、途上国で作れるものを先進国で作ってもなと思った。

ただ世界で人口が爆発するなか、水をどう作るかが中東やラスベガスなどの人口が増える砂漠化が進んでいる都市で起きている。中国の人口の多いとしでも起きるだろう。

ダメだと思った理由をもう少し分析してみると、
1.途上国の賃金は低いまま。
2.船の運賃は重油なのでエネルギーで上がることはない。
3.枯渇するのは水よりも石油やガスなどのエネルギーでは。

特に、エネルギーが貴重なのにエネルギー使ってどうすると思っていた。
しかし、原子力の利用という視点から見ると考え方が変わる。

夜間の原子力のエネルギーを利用すれば3の問題はなくなる。
エネルギーを水として保存するのはかなり効率がよい。(いつか生産するのであれば)
水でもっともエネルギーを使うのは農業だ。
そう考えると、野菜工場の需要は増える可能性が高い。
ただ工場を中心に広がるので、半導体のようにかなり安くなる市場のように見えるし、水も足りないわけでなく、局所的に足りないわけだから、たくさん水のある地域で農業すればいいのではとも思う。

参考
Can nuclear solve the global water crisis?
韓国の企業連合:UAEの原子炉建設契約を獲得-200億ドル規模

2009年12月26日土曜日

2050年には68億人から91億人に人口は増加する。

人口動態はこれから50年の間にどのように変化していくのだろうか?
先進国では人口は緩やかに減少し、逆に途上国では人口はどんどん増える。途上国では人口が増加しているため若年層の失業率が非常に高く、仕事がなく生きれないから反政府組織や犯罪組織に関わる人も増える。治安の悪化は開発のリスクをもたらし、投資への高いリターンが求められる高金利の社会を作り上げる。

アフリカでもザンビアやコンゴは非常に資源が豊かだが、人口動態・非常に低い治安・インフラ不足。。昨年の資源高のときに少しは投資されているだろうが、人口増加と治安の問題はこれからますます悪化するに違いない。

もちろん二酸化炭素の削減などできるはずがない。途上国の開発のほうが国連にとっても優先順位が高い。なぜなら、世界中の人が十分なカロリーを摂取するだけで莫大なエネルギー(二酸化炭素の排出)が必要になるに違いない。

1945年から今まで世界人口は25億人から約70億人へと約3倍ほどになった。それを支えたのは資本主義による効率的な投資だ。石油ショックの後も社会を発展させるために頭を振り絞り発展してきた。
金属でも石油でも今までは、比較的にリスクの低い地域で生産されていた。戦後、エネルギーのセキュリティの重要さについてほとんど考える必要がないような状況が続いた。
しかし、これからはアフリカでの開発が必要だ。

以前は冷戦と核の恐怖に晒されていたがそれを乗り越えた。僕は経済が歴史を決めていると思うので、今回の問題はかなり乗り越えるのが難しそうに見える。

2009年12月1日火曜日

通貨高と国債増発でも国債価格は変わらず。。。

 最初、円が90円くらいだと日本の輸出産業は勝てないから、これ以上円高になることはないかなと思った。経済が維持できないからだ。でも実際には円高が進行。

輸出産業と円は短期的に関係ないのだ。

日本は債権国。中高年のお金を持っている人のポジションが海外資産を買っている状態なのだ。彼らが、退職し日本で暮らしていくなら円を買うことになる。

当たり前だが、債権国であるためには、
海外が買っている円資産<日本が買っている海外資産
であるということだ。日本がお金持ちだから海外の資産を買っているわけでなく、日本より海外の方が円ベースで儲かる投資先が多いからそうなっている。

円高にも関わらず、まだ日本は債権国であるなら、
・もっと債権国になって(海外資産を買って)円安になるか。
・円高になって、債権国でなくなる(海外資産を売って)かだ。

前者は発散するから続かない。が、ある程度は進む。

・日本がデフレで海外がインフレで為替がそのままだと、円ベースでの日本の物価は世界と比べて下落。
・円高になると、円ベースでの日本の物価は世界と比べて上昇。

均衡がとれるから上の二つは同時に進行する。

デフレだから円高。円安にすればデフレは解消。
ただ日本の外貨準備は増え、そのポジションを解消するためには円高になる。
リスクはなくならず、ただ移動するだけ。

金融政策だけで簡単に解決する方法はなさそうだと改めて思う。

これからのシナリオとしては、
・「円安」海外資産が割安なので買う。
理由は、
・国内企業の業績より海外企業の業績のほうがよい。
・円が高いので今までより海外資産が割安。
これだけの理由で「円安」になるなら、最初考えていた国内企業の輸出産業にとってよい水準の為替に変わると考えていい。

でもそうならないのは、
・収入の減った人が投資・貯蓄を減らし、国内で消費。(景気悪化と退職)
・日本国債買うだけでリターンは十分。
まだ日本の金融資産が増えているのなら前者の理由は間違いで、後者の影響が非常に大きい。ただ人口動態の影響で前者の影響もでてくるはず。

シナリオとしては、海外の市場金利がそのままなら
1.貯蓄率が上昇し、日本の消費はかなり落ち込む。そして、貯蓄した資産が海外へ投資。円安になる。GDPはぐっと減る。
2.生活するためのお金を日本に引き戻し、貯蓄率は低下。円高はそのままで、日本の輸出産業は海外へのポジションシフトを進める。株式市場はさらに下落。
3.貯蓄率はそのまま、日本の消費はゆっくり落ち込む。円高はじわりと上昇。国債は売れる。海外投資家は日本市場からグッバイ。
海外の市場の金利が上昇すれば、これとは別の形に。どちらにしても相対的には世界から置いてけぼりになるシナリオしか思い浮かばない。

2009年11月27日金曜日

成長戦略を考えることの無意味さ。政府の役割を再定義する必要があり。

 管さんのHPを開くと最初にこのような文章が出てくる。

経済における第三の道
端的に言えば80年代以降、投資効果に低い公共事業に巨額の財政をつぎ込んだのが経済の低迷の原因。小泉・竹中路線は、リストラなどによる各企業の競争力 の強化が社会全体の生産性向上になると考えたが失業を増加させ、社会全体としての経済成長につながらなかったのが失敗の原因。それでは過去の失敗を繰り返 さない経済運営における「第三の道」は何か。現在、深く考慮中。

ともに自民党による政策によって経済が衰退したと言っている。因果関係を考える時、自民党を批判することだけ考えてきたので、原因には自民党の政策を、結果にはマイナス要素を当てはめることしかできないのだろうか?

菅さんは経済学を知らないということは分かるが、実際一言で衰退の原因をいうことは難しい。90年代の経済の失速は80年代に土地の価値が上昇しその土地を担保にしたお金が土地の購入に向かうという今回のサブプライムのような経済の流れができてしまったことにあり、小泉・竹中路線で労働者の賃金が低下したのは単純労働者(代替のきく)が社会にたくさん存在し、その賃金がグローバル化により国際基準になったことが原因。90年代のバブル崩壊への対策やその後の対策には他によりよい方法があったのではと思ってしまうが、簡単ではなかっただろう。一度表面化したリスクを減らすには投資を抑制し資本を貯めるか、リスクを移転させるかしかない。

過去のことを分析するよりも今回思ったことは、成長できないのは国家の責任でなく、政府の役割を再定義する必要があるということだ。成長できないをもう少し厳格に定義すると成長産業を育成することは国家の責任ではないということだ。
もし、この産業が成長すると完全に分かればだれかが適切なお金を投資する。だから政府が投資すると常に失敗する。新規産業が雇用を生み出すとしても政府が新規雇用を生み出すのは税金からであり新規産業からではない。
だから、政府が成長産業を作り出すためには、税金もしくは政策により市場を歪めるしかない。この歪みの悪い部分は、生活保護政策のようなものだ。生活保護を受けている人が働く意欲を失うように、政府の保護により大きくなった産業はその保護から抜け出せれなくなる。
グローバルな基準に税金を抑え、徴収した税金は所得分配を行う。このようなシンプルな定義でいいのではないだろうか?
もう一度政府の役割を再定義し、国が成長する道筋を立てていく必要がある。

2009年11月18日水曜日

歳出に占める税収の割合は劇的に低下。民主党が歳出を増やしたわけではない!?











歳出に占める税収の割合が低下するには二つの原因が考えられる。
・歳出の増加
・歳入の減少

歳出の増加の原因は
・高齢者の増加による社会保証費の増加
・国債費の増加
この上の二つが大きなウェートを占め、最近の増加の原因は
・不況下の消費刺激政策
・民主党の子供手当て等新たな政策
がを占めている。

歳入の減少の原因は低成長だ。平成になってからまったく税収は伸びていない。

上のグラフを見ると、大きなトレンドとして歳入は頭打ちをしているにも関わらず、歳出が一定の割合で増え続けている。この原因は社会保障費の増加にある。

平成19年度予算の後年度歳出・歳入への影響試算等には、これから先の歳出と歳入の状況に関して当時の予測が書かれている。当時はもっとも景気のよい時である。
それを見ると2006年度から2010年度にかけて歳出が80兆円から92兆円に増加しているが内訳を見てみると、国債費で4兆円。社会保障費で6兆円と。この二つが増加している原因の8割だということが分かる。

昨年の国債の増加などからもさらに国債費が増加しているだろうということを考えると民主党の95兆円(92兆円)は、民主党政権の新しい政策が原因ではなく、日本の過去の国債の償却による費用の増加と人口動態の変化による社会保証費の増加が原因のようだ。仮に92兆円まで縮小すれば当初の自民党小泉政権(阿部政権)のころの予測とほぼ一致する。

ただこの資料でも名目GDPの成長率を3%にしている。平成からまったく成長できずこれから労働人口の減少が加速することからもきちんと現実にあった成長率を設定する必要がある。

そのためには国民へのサービスの低下が必須になる。

最初は、民主党が95兆円を92兆円に削減したところで、過去のトレンドから考えると莫大な歳出の増加だよってことを調べようとしたが、実は自民党のころとほとんど同じ出費ということが分かった。

どちらにしても国債の発行量を減らし、長期的に成長できる戦略を描くことが大事。
エコポイントやエコカー減税などの継続により、設備と雇用の最適化が遅れ、長期的な成長率を下がるのではと最近のニュースを見て思ってしまう。

関連資料
財務相:一般会計税収・歳出総額及び公債発行額の推移
平成19年度予算の後年度歳出・歳入への影響試算等

2009年11月9日月曜日

バブルが余剰人員と余剰設備を生みだし、それが社会を停滞させる。

アメリカでは新規雇用の60%がスタートアップ企業のようなスモール・ビジネスから創出されています。[1]

 バブルは、確実にGDPを上昇させる。でも社会を長期的に成長させるのはいかにスモール・ビジネスを生みだすかであり、それが実感できるのはそのスモール・ビジネスの一部がビック・ビジネスになる時だと思う。

 バブルは、資産の価値を上昇させ、その上昇が上昇期待によってさらに上昇させることだ。ただ、その上昇によって本来紐づいているキャッシュフローから離れすぎるといつかはそれに戻るようになり、バブルは崩壊し、逆のスパイラルが起きる。

 その結果、バブルが崩壊したとき、大量の余剰人員と余剰設備が現れ、社会の最適な状態から離れていることに気づく。つまり、バブルの時は将来キャッシュフローを生み出すスモール・ビジネスより、バブルが起きている分野に人とお金が流れるためそれによってそれによって最適な人の流れとお金の流れができなくなる。
 だから、不況のときはよりキャッシュフローに基づいた企業が求められ、余剰人員設備をもつ企業は縮小し、逆にキャッシュフローを生み出す企業が新規雇用を生み出す。

 社会に必要なのはキャッシュフローを生み出す(人々が求めるサービスを提供する)企業の育成だ。

関連記事
[1]外国株ひろば

2009年11月3日火曜日

Tomboy&dropboxで最高のメモツール・wikiツールに。

Tomboyはubuntuなどのlinux用のメモツール。でも、windowsでも簡単にインストールできる。dropboxもlinuxでもmacでもwindowsでも簡単に導入できる。

Tomboy&dropbox
特徴
・Tomboyは、簡単にリンクを作り、メモを残すのに優れている。
・Tomboyは、ローカルのファイルにメモを同期することができる。
・Tomboyは、windowsでもmacでもubuntuでも利用できる。
・Tomboyは、プラグインが豊富で、webページへの直接アクセスしたり、ノートのつながりを図示したり、latexを利用したりもできるみたいです。
・Dropboxは、ファイルを簡単に同期することができる。
・Dropboxは、windowsでもmacでもubuntuでも利用できる。
・TomboyのローカルのファイルをDropboxにアップロードすることで簡単に同期可能。

社内wikiがこのような形で実現できたら、かなり生産性が上がるのではと思った。

☆Tomboyをwindowsに導入する方法。(順番にダウンロード&インストール)
linuxのメモ帳をwindowsで使用するためのソフトウェア
Tomboyのダウンロード

関連ページ
Tomboyについて学ぶなら
Tomboyをダウンロード
Tomboyのプラグイン情報
dropboxのHP
日本語でdropboxの説明・インストールの方法など

2009年11月2日月曜日

web上でのsubversion管理比較

 web上でのsubversion管理するためのサービスを調べました。

調査したサービス名の一覧
accembla
Beanstalk
bitbucket
cvsdude
devguard
freepository
projectLocker
Redmine
svnrepository
unfuddle


ウェブページとして開く
考察
 調査時、無料で使う場合、3人までで、ストレージが1GBというサービスがあったが、今はすでに終了していた。原因は、無料で使う人が増えすぎて収益を圧迫したのだろう。
 pricing/storageでみると、projectLockerが一番安いし、ユーザー数が少なく設定されているので、ユーザーが少ないプロジェクトにとっては非常に使い勝手がよい。
 また使用してみた感想もアップしていこうと思います。

調査日 2009年11月2日

参考にしたサイト
Subversion、Git、Mercurial などが使えるリポジトリ サービス

備考
価格やサービスの内容の分かりにくいサイトは、省きました。

2009年10月20日火曜日

日本が引き金となる'Death Spiral'

UPDATE: Einhorn Bets On Major Currency 'Death Spiral'
On Monday, Einhorn said Greenlight has added new trades to this investment theme, buying long-dated options on much higher interest rates in Japan and other developed regions--effectively giving the firm the chance to make big profits from a jump in rates. The options, bought from major banks, are tied to interest rates four to five years out, Einhorn said.

"Japan may already be past the point of no return," he said during a presentation at the Value Investing Congress in New York.

Japan's debt is equal to 190% of the country's gross domestic product, and its government deficit will be 10% of GDP this year, Einhorn said.

Japan has been able to borrow money at roughly 2% a year to finance these deficits, partly because the country has many savers willing to buy low-yielding government bonds. However, some of these savers may begin spending instead as they enter retirement, Einhorn argued.

"When the market refuses to refinance at cheap rates, problems emerge," he said, adding that this could trigger a "currency death spiral."

Interest rates have been very stable in Japan for years, so the options on higher rates that Greenlight bought were relatively cheap.

日本の国債の金利が将来上昇することに、アメリカの優秀なファンドが賭けるようだ。
最近の国債のCDSの市場でも他国のCDSが半分になるなか、日本だけが上昇。

日本の金融資産の伸びよりはるかに日本の国債の伸びは増えてきている。今までは将来の国債市場への不安から貯蓄を増やし、その貯蓄が国債を支えてきた。
今年の税収が40兆円に大して支出が90兆円。GDPが500兆円なので、債務比率はGDPの10%。歳入を越えているように見える。
そして一番の問題は、歳入はこれからますます減るということだ。医療改革が遅れれば、医療費もものすごいことになるだろう。

日本は自国で国債を持っているから、国がデフォルトすることはない。通貨を発行して通貨価値を下げればいいという人もいる。今回の金融危機でも銀行は自己資本率が下がり、苦しんだのに、日本国債の金利が上がれば、もっとダメージを受ける。これは金融市場が崩壊することを意味している。

民主党は、口では歳出削減の努力と言っていたが、結果は95兆円の歳出。姥捨山と高齢者医療を批判していたが、歳出に置ける一番のガンは高齢者への社会保障だ。僕は以下に少ない歳出で政治ができるかが鍵だと思っているので、民主党は自民党よりもひどい。

株式市場にしても成長を基本として成り立っている。将来確実に売上が落ちる株は、配当以上に株価下落のリスクもくっついてくる。

悲観的なことばかり考えてしまうが、20年前日本が20年間成長しないことをだれが予想しただろうか?

タイトルのとおり一度始まると加速するのがスパイラル。

関連記事
財政支出を拡大することで国は成長するのか?
これから日本を支えていくものはなにか?
松井証券の社長は日本株に悲観

2009年10月10日土曜日

ドルはこれから反転する。

マーク・ファーバーブログから
"We have now flats, condos in Hong Kong selling for 9,000 USD per square foot. In America, the price level compared to the price level in some of these asian cities is actually quite low. So I think the US Dollar is no longer overvalued for the time being and the sentiment about the US dollar is so negative that we can have a rebound in the dollar for a couple of months. That would indicate some tightning of global liquidity and would be bad for asset markets as was the case in 2008, when the US dollar rebounded and all asset markets went down"

 ドルは売られすぎて、今は高くないという話。理由はほかのアジアの土地の価格に比べて割高ではないからだそうだ。
 例えば今円が安いのは、キャリートレードの逆が起きているからだ。円を売りドルを買う運用をみんながしていた。円は売られ続け値段は下がり続けた。だから売った人は為替でも儲かり、金利でも儲かった。今はその逆の動きだ。円が上がり、為替で損するから仕方なくポジションを解消している。やはり日本自体は債権国だ。このポジションは莫大な額。

 しかし、日本に投資先はない。今の円レートでは輸出産業は非常に苦しい。ドルベースなら、110円と90円では2割ほど円の設備や人のコストが増えたのと等しい。

 今は、89.74円。105円くらいまではすぐに戻しそうだ。

2009年10月9日金曜日

財政支出を拡大することで国は成長するのか?



How big are fiscal multipliers? New evidence from new data
How much stimulus does spending provide? This column says that fiscal multipliers are much weaker in countries that have high debt, lower income, flexible exchange rates, and greater international openness. Policymakers should consider these characteristics when evaluating the benefits of any fiscal stimulus package.

 政府支出を増やすことで財政を支出を拡大することはできるのか?
 これに対しての分析の記事があった。結論から言うと、国の負債の状況、グローバリズムの度合い(開放経済か閉鎖経済か)、変動為替か固定為替かによるらしい。
 もちろん負債が多いほど、開放経済のほうが、変動為替制度のほうが政府支出による経済への効果は低い。

 Mundell-Fleming modelというモデルで開放経済か閉鎖経済かで政府支出への影響がどうなるか語っているらしい。
 なんとなくイメージすると開放経済の場合、政府支出を行うと税金は国民だけが払うのに輸入も増えるので他国にお金が流れ、その分その次の消費につながるお金が減る。(乗数が低くなる)政府はお金を調達するために国債を発行するのでそれで長期金利が上がり、国内の投資が減り、変わりに海外に投資するので国内の投資が減る。
 実際はどのような理論なのだろうか?いつかこのモデルについては勉強したい。

 また為替制度に関しての分析もあるのが面白い。僕も変動為替制度と固定為替制度ではまったく違う世界になると思っている。日本の輸出産業の利益や成長率もこれに一番左右されていると言っても過言ではない。これもしっかりと経済の本で分析したほうがいいのだが、簡単にイメージしてみると、超お金持ちの多い国とお金のない国が契約を結ぶと、お金のある国の思うように為替を操作できる。また、生産性のギャップを瞬時に為替で調節できるとしたら、為替が変動するだけで生産性はお互い変わらなくなる。
1万ドルで1台の車を作る国と、100万円で2台の車を作る国があるとして、そのときの為替制度が1ドル100円だと、右の国の生産性が高いが、逆に1ドル50円だと同じになってしまう。
これであっているのかな。。。

 今の世界経済は変動為替制度でない、または為替の介入をする国も多いためより経済が複雑になっている。

 どちらにしても成功したときの対価の低い国では投資も事業もしたくないと思う。だからアメリカから新しいビジネスが生まれ続けているのだと思う。

関連記事
これから日本を支えていくものはなにか?
松井証券の社長は日本株に悲観

これから日本を支えていくものはなにか?

これから日本を支えいくものはなんだろうか?
・高齢者の貯蓄。
・輸出産業。
・整備されている日本のインフラ。
・中国に近いという場所。
・今働いている日本の人材。

 輸出産業がこの10年の日本を支えてきていて、これから10年はもっと輸出産業が重要になる。

 今、日本だけでなく世界中で内需拡大による成長を掲げている。アメリカなどの国の消費が減ったことによって、輸出が減ったなか設備や人は過剰、また株価は下がっているので現金比率が高まる中低リスク資産が欲しい。そんななか国民のだれからでも税金が取れるという国の信用力から国債を発行し、設備や人の過剰を抑える政策を実行してきた。
 内需による成長とはなんだろうか?収入における消費の割合を上げる、ほかの国からお金を引き込むことが重要になってくる。中国は確かに可能である。借金をしていない消費者もいるし、経済の成長率が高いので返せる可能性も高い、経済が成長しているので株価の収益率も上がりほかの国からの投資の資金が入る。簡単に言えば2年前のアメリカの状態が内需による成長だ。
 日本はどうか?高齢者が増える中でそれを支える消費が増える。また医療や福祉は国の管轄のものやそもそも盛り上がってもあまり市場にお金が還元できない。
 もちろん医薬品業界などの業績は上がるかもしれないが、大部分の医療に携わる病院経営による利益は市場にあまり還元されていない。(銀行などが医者に融資してそれにより利益が上がることはあるかもだが)結局病院経営は外の資本が入りにくい仕組みになっているからすでに利益を上げている大病院がどんどん大きくなる。つまり、もっとも効率のよい革新的な病院よりすでに今権力を持っている病院がその力を増す構図だ。
 ちょっと話がずれてきたので戻すが、結局人口動態と医療業界の構造の問題で、日本の消費が増えそれを市場に還元するという流れにはならないのだ。逆にこのような人口動態の影響を受けて消費は減る。だから内需は拡大しないし、内需による成長をするような流れを作り出すことは難しい。

 日本国債のアンカーとなっているものはなにか?
・輸出産業
・外貨準備(米債)
・お金持ちの海外資産

 この三つだろう。つまり、日本国債を増やして円が安くなるとこの三つの資産の価値が自動的に上昇する。また円が安くなるということ時代円を売ってドルを買うわけだからアンカーとなる資産は増え、やがて円安は止まる。ついでにいうと円高は円建ての資産がアンカーとなっているから上昇し続けることはない。

 為替が変動しているとこのような形で複雑に絡んでいるから単純な分析はできない。ただ内需拡大が難しいのであれば、世界で競争力のある輸出企業を増やし、国債の増加のアンカーを増やすことがもっともよい。また、国内にあるインフラや人は、もちろん日本経済のアンカーになる。それがグローバリズムだ。世界経済が悪化し、輸出が下がったのであれば、直ちに人の過剰を修正し、退職した人は次の職のための教育や訓練を受ける。そして世界の中でいち早く回復をしていく。こういったことができる地域がどんどん成長していく。
 決して自分の企業の信用力でお金が調達できない代わりに国がお金を調達して現状を維持することでない。

関連記事
松井証券の社長は日本株に悲観

松井証券の社長は日本株に悲観

記事元 ロイターニュース

日本の株式市場の展望について「大いに悲観的」との見方を示した。個人や外国人投資家の売買が細り流動性が低下していることや、デフレの進行が予想されることが、株式投資から資金を遠ざけると話した。

 10年前と今とで一番大きく異なるのは、人口動態と国の財政の悪化にあるあると思う。(もちろん世界と同様グローバリズムによる影響も受けているが)
 このような中で結果としてなにが起きているのか考えてみると
・日本国債の長期金利は非常に低い(米債が3.4%くらいなのに対して日本債は1.3%程度)。
・日本の金融資産の8割は50歳以上のお金持ちが持っている。
・日本の金融資産は昔から保険と年金への割合が高い。
・2008年から人口が減少しており、労働人口は人口より速いペースで減少する。
・日本の金融資産は1500兆円。
・地方債もあわせた日本の債権の合計は1000兆円超。
・日本の債権の国内保有率は9割くらい。

 日本の国債は、日本の政府との関係の強く低リスク資産を求める年金機関や保険機関によって買われているのだろう。今年に入ってからは日銀でも企業の債権の購入を行っており、また公的機関の株のポジションは増えていた。これから訪れるのは株の買い手である年金機関や保険機関の国債や株のロングのポジションが増えて流動性が低下してくる。そしてだんだん株価が下がっていく局面だと思う。もちろん株価が下げているときは債権金利の上昇局面もくるかもしれない。そうなったときは、企業への資金も激減し、日本の歳入全部が国債の金利支払いになるだろうから、逆にそのような事態ではない形で問題が表面化するかもしれない。
 日本の経済のアンカーとなっているのは輸出産業だ。通貨が下がれば輸出産業の株価収益率は劇的に上がる。そうすれば株価が割安になり日本にお金が流れる。
 どちらにしてもお金をただで手に入れることはできず、積み上げたリスクは時を重ねるごとに大きくなるに違いない。これは資本主義の力学だと思う。日本国債の金利の上昇という形で現れるか、日本の通貨の下落によって現れるか、ほかの方法で現れるかは分からないが問題は表面化する。
 またその時期も労働人口が急速に減るこの10年の中で起きるに違いない。

 ただいったん価格が下げ続ければどこかから上昇が始まることも確か。日本経済も同じことが言えるに違いない。
 日本経済のアンカーになるようなソフトウェアの企業を作る夢はなんとしても叶えたい。

2009年7月19日日曜日

乗法的モデルと正規分布

S(k+1)=u(k)S(k)
がk=0,1,...,N-1がある。
この時、u(k)は独立同分布の確率変数。
対数をとると、
InS(n+1)=Inu(n)+InS(n)=InS(0)+\sum^{n}_{k=0}Inu(k)

となる。
u(k)が独立同分布だから当然Inn(k)も独立同分布。
nが十分大きいとき、中心極限定理より、InS(n)は正規分布になるので、Inu(k)の期待値が、
{\mu}
で分散が
{\sigma}^2
を持つなら、InS(n)の期待値と分散はそれぞれ
E[InS(k)]=InS(0)+{\mu}k

var[InS(k)]=k{\sigma}^2

である。期待値と分散はkに関して線形的に増加する。

2009年7月18日土曜日

株式の2項格子モデル

株式の2項格子モデルだが、期間Tを定めて、先ほどのように
{\epsilon}^{u(n)}
に変動する確率がqで、
{\epsilon}^{d(n)}
に変動する確率が(1-q)とする。また、R(n)を安全金利とする。
ここで、
InS(k+1)=q(n)\left(u(n)+lnS(k)\right)+(1-q)\left(d(n)+InS(k)\right)

ここでInS(n+1)-InS(n)が独立同分布ならq(n)u(n)+d(n){1-q(n)}が独立同分布である。このことからnが十分大きいときInS(n)-InS(0)の分布は、正規分布になる。また、期待値と分散は線形に増える。
InS(k+1)=q(n)\left(u(n)+lnS(k)\right)+(1-q)\left(d(n)+InS(k)\right)
ただしZは正規分布

並び替えの問題を解くアルゴリズムを考える。

n種類の異なる名前にそれぞれ優先順位を表す数字が割り当てられており、その優先順位で並び替える。上からk番目までの名前をすべて求める。ただし数字が同じ場合は、k番目でもk個以上ある可能性はある。また、k+1個以上名前がある時は、そのk+1個の中で優先順位が最小の集合とそれ以外の集合を分けて求める。(priorityは1〜9)

→キーの並び替えと、重なりを数えるという作業が必要。重なりも多いので両方を同時に処理するのがなかなか難しそう

悩んだのですが、こんなのはどうでしょうか?
順番を数えながら配列にいれると、なんかめちゃくちゃ面倒くさい。だから順番は最後まで数えないアルゴリズムならシンプルではないかなと思いました。

phpの正規表現を使って実現します。
まず、
:1:,:2:,:3:,:4:,:5:,:6:,:7:,:8:,:9:,
上のような文字列を用意します。
nameがりんご,priorityが3があったらstr_replaceの関数を使って、":3:,"を":3:,apple,,"に書き換える。
すべてのカラムをこの文字列の中に入れてやる。
そのあとkの数に応じて、こんなパターンを作ってやる。/,(.*?),.*,(.*?) 必要数 ,(.*):(\d):/これでこの配列を取り出してやり、さらに最後の配列に格納されている数字より一つ小さい数字を使って、/:数字:(.*?):/で必要な文字列を取り出し、最後に配列に格納。ここで数を数えてやれば簡単に必要なものを手に入れることができる。

正規表現と数字の大小の比較の計算スピードや配列の数などにも応じてスピードが変わってきそうだが、人が行うような感じで動くのがなにか心地良かった。

2009年7月17日金曜日

ウィナー過程とランダムウォーク

長さが
{\Delta}t
の期間がN期あるとする。この時の加法過程をzとし、以下のように定義する。
z(t_{k+1})=z(t_{k})+{\epsilon}(t_{k})\sqrt[]{{\Delta}t}

t_{k+1}=t_{k}+{\Delta}t

この過程は1次対象ランダムウォークと呼ばれる。ただし、
{\epsilon}(t_{k})
は平均0、分散1の標準正規確率変数である。
確率過程の差分は、
z(t_{k})-z(t_{j})=\sum^{k-1}_{i=j}{\epsilon}(t_{i})\sqrt[]{{\Delta}t}

これは、正規確率変数の和なので、同然同分布で期待値は0。分散は、独立かつ同分布であることから、
var\[z(t_{k})-z(t_{j})\]=E\left[\sum^{k-1}_{i=j}{\epsilon}(t_{i})^2{\Delta}t\right]^2=(k-j){\Delta}t

つまり分散は2点間の時間の差に完全に一致する。
ここで区間が重ならないとき、上の確率過程の差分は独立である。
このようなことから
{\epsilon}(t_{k}){\rightarrow}0
とすると、
dz={\epsilon}(t_{k})\sqrt[]{dt}

上の式が存在し、ウィナー過程と呼ぶ。
1.初期値が0。
2.ウィナー過程の区間が重ならないとき、独立
3.任意のs<tについてz(t)-z(s)が平均0、分散t-sの正規確率変数となる。
(4.確率1で、見本関数(経路)が連続。)
このウィナー過程を拡張してやると以下が成り立つ。
dx(t)=adt+bdz


\{{\sigma}W_{t}+bt\}_{t=>0}
という形の確率過程を一般化されたBrown運動と呼ぶ。また
S_{t}=S_{0}exp\left({\sigma}W_{t}+bt\right)

とうい形の確率過程を幾何Brown運動という。
*性質1,2,4及び定常増分性を満たすような確率過程は、一般化されたBrown運動に限られる。

伊藤の公式

伊藤の定理
 zをウィナー過程として、確率過程xが伊藤過程、
dx(t)=a(x,t)dt+b(x,t)dz
で定義されているものとする。また
y(t)=F(x,t)
と定義されているとする。このとき、y(t)は次の伊藤方程式をみたす。
dy(t)=\left(\frac{{\partial}F}{{\partial}x}a+\frac{{\partial}F}{{\partial}t}+\frac{1}{2}\frac{{\partial}^2F}{{\partial}x^2}b^2\right)dt+\frac{{\partial}F}{{\partial}x}bdz

ここで確率過程であることなどを考えず簡易に証明
y+{\Delta}y=F(x,t)+\frac{{\partial}F}{{\partial}x}{\Delta}x+\frac{{\partial}F}{{\partial}t}{\Delta}t+\frac{{\partial}^2F}{{\partial}x^2}({\Delta}x)^2

ここで
{\Delta}t
に関してオーダー1より大きい項を整理すると、
y+{\Delta}y=F(x,t)+\left(\frac{{\partial}F}{{\partial}x}a+\frac{{\partial}F}{{\partial}t}+\frac{1}{2}\frac{{\partial}^2F}{{\partial}x^2}b^2\right){\Delta}t+\frac{{\partial}F}{{\partial}x}b{\Delta}z

上の式から微分の公式を思い出すと、伊藤の公式がだいたい成り立ちそうな気がする。

伊藤解析を用いずにB-S式を導く

 デリバティブの定義を一般化した上で、アービトラージを用いて等式を成立させ、最後に連続時間のモデルを作り、B-S式を証明していきます。

 満期Tのデリバティブのペイオフを
f(S_{T})
とすると、時刻tにおけるデリバティブの価値を
C(t,S_{t})
とする。
 時間tにおけるポジションは1単位のデリバティブとx単位の株(原資産)を持っているとする。このとき資産価値は、
C(t,S_{t})+xS_{t}
で、時間t+1における資産価値は、
{\mu}S_{t}
が株の配当で
{\sigma}S_{t}
が株価の変動を表すと、株価が上昇したときのポジションは、
C(t+1,S_{t}+{\mu}S_{t}+{\sigma}S_{t})+x(S_{t}+{\mu}S_{t}+{\sigma}S_{t})
株価が下落した時のポジションは、
C(t+1,S_{t}
+{\mu}S_{t}-{\sigma}S_{t})+x(S_{t}+{\mu}S_{t}-{\sigma}S_{t})
になる。
 アービトラージが組めないようにするとxが決まって、
x=\frac{C(t+1,S_{t}+{\mu}S_{t}+{\sigma}S_{t})-C(t+1,S_{t}+{\mu}S_{t}-{\sigma}S_{t})}{-2{\sigma}S_{t}}
r\left(C(t,S_{t})+xS_{t}\right)=C(t+1,S_{t}+{\mu}S_{t}+{\sigma}S_{t})+x(S_{t}+{\mu}S_{t}+{\sigma}S_{t})

にxを代入して整理すると、次の方程式が成立する。
C(t+1,S_{t})-C(t,S_{t})+\frac{r-{\mu}}{2{\sigma}}\{C\left(t+1,(1+{\mu}+{\sigma})S_{t}\right)-C\left(t+1,(1+{\mu}-{\sigma})S_{t}\right)\}+\frac{1}{2}\{C\left(t+1,(1+{\mu}+{\sigma})S_{t}\right)-2C(t+1,S_{t})+C\left(t+1,(1+{\mu}-{\sigma})S_{t}\right)\}-rC(t,S_{t})=0

この時の境界条件(満期条件)によってオプションの価格や先物の価格などの商品の現在価値や時刻tでの価値について求めることができます。

多期間二項モデルからオプション価格を求める

 まず最初に期間が増えていくと、原資産はどのように変化していくか想像してみてください。そして、期間tが経った後のコールオプション価格は、
S_{t}-K
になります。期間t-1の場合は、
S_{t-1}-K
ですが、これは1期間の2項モデルを使って
S_{t}-K
の価格から計算することができます。

 このことから、
C_{0}=\sum_{k=0}^n\frac{1}{R^n}{}_nC_kq^{n-k}(1-q)^kmax\{u^{n-k}d^kS_{0}-K,0\}}

 コールオプション価格は求めることができましたが、このままではブラックショールズの方程式を導くことができません。さらにブラックショールズの方程式は、より一般的に解くことができます。

2009年7月16日木曜日

1期間2項モデル

 1期間2項モデルとは、原資産が上昇するか減少するかの2パターンしかないときをさします。
 例えば、原資産の現在価格を100。1期間の間に90%の確率で原資産は200になり、10%の確率で50になります。この時、行使価格120のコールオプションはいくらでしょう。ただし安全金利を20%とします。(計算しやすいため)

下の方程式が成り立ち、コールオプションの価格を求めることができる。
200$\phi$+\frac{5}{4}$\psi$=80
50$\phi$+\frac{5}{4}$\psi$=0
CallOption=100\phi$+$\psi$

この連立方程式を解くことでコールオプションの価格を決めることができる。
僕は、上の方程式がピンとこなかったので、確率に関係なくアービトラージが組める最小のコールオプションの価格を計算してみます。
コールオプション
xC
xmax\{S_{t}-K,0\}
原資産
S_{0}
S_{t}
銀行
-\left(xC+S_{0}\right)
-\left(R\right)\left(xC+S_{0}\right)

右側の項目の和が正になればアービトラージ成立だから、右側の項目の和が0になる時を考える。すると、以下の変数変換をしてやると、上の連立方程式と等しくなる。
$\psi$=C+\frac{1}{x}S_{0}
$\phi$=-\frac{1}{x}

 考察としては、1期間2項モデルのオプションの価格は確率と関係なくその振れ幅(volatility)によって決まることが分かる。それは、アービトラージの成立が確率とは無関係だからである。
 このvalatilityに関してさらに考えてみるために、2項モデルの動き方を
uS_{0}
dS_{0}
とする。この時、オプション価格を計算してやると、
C=\frac{1}{R}\left(\frac{R-d}{u-d}C_{u}+\frac{u-R}{u-d}C_{d}\right)

ここでリスク中立確率というものを定義する。
q(risk-neutral probability)=\frac{R-d}{u-d}

するといかのように表すことができる。
C=\frac{1}{R}\left(qC_{u}+\left(1-q\right)C_{d}\right)

上の式だけ眺めてやると、リスク中立確率という確率空間上でのオプションの期待値の現在価値が現在のオプション価格になる。このように考えると時間を連続時間にして期待値を積分して求めたらオプション価格になりそうな気がします。また、1期間でなくこれを連続させてやり、最後に時間を小さくしてやるとどうなるみたいなことがしたくなります。

2009年7月15日水曜日

アービトラージとプットコールパリティ

次に、コールオプションとプットオプションの関係について説明します。アービトラージとは、必ず儲かる取引のことを言います。だから、アービトラージは長くは続かず、アービトラージが組めないように相場は決まります。
一応以下の内容を先に仮定しておきます。

* 無リスク金利で借金ができる。
* 株式を負の量保有できる。
* 取引コストがゼロ。
* 取引相手の信用リスクがゼロ。

上の条件が成り立つとき、プットコールパリティが成立する。
C_{0}-P_{0}=S_{0}-\frac{K}{1+R}
K:オプションの行使価格 S:原資産の価格 P:プットオプションの価格 C:コールオプションの価格 R:安全金利とします。
C_{0}-P_{0}>S_{0}-\frac{K}{1+R}
の時
コールオプション
-C_{0}
-max\{S_{t}-K,0\}
プットオプション
P_{0}
max\{K-S_{t},0\}
銀行
\left(C_{0}-P_{0}-S_{0}\right)
\left(1+R\right)\left(C_{0}-P_{0}-S_{0}\right)
原資産
S_{0}
S_{t}

-max\{S_{t}-K,0\}+max\{K-S_{t},0\}+\left(1+R\right)\left(C_{0}-P_{0}-S_{0}\right)+S_{t}=\left(1+R\right)\left(\frac{K}{1+R}+C_{0}-P_{0}-S_{0}\right)

このようなトレードをアービトラージと言います。もちろん新聞でプットオプションとコールオプションを調べてみると上の等式がほぼ成り立っていることが確認できます。

オプションとはなにか

オプションとはなにか?
 調べてみると、特定の期日に、特定の売買を行う権利。なにかを「買う」権利をコールオプション(call option)、「売る」権利をプットオプション(put option)と言うようです。では、プットオプションのロング(買い)とコールオプションのショート(売り)はどのように違うのでしょうか?このように文系ぽくオプションを説明していくとわけ分からなくなります。
Long Call Option=max\{S_{t}-K,0\}

Long Put Option=max\{K-S_{t},0\}

K:オプションの行使価格 S:原資産の価格
 つまり、コールオプションは購入するものが今より満期時に高くなったときには、オプションの価値は0で、逆に満期時に安くなっていた場合にはオプションは、その差額だけの価値になります。
 上のオプションのことをヨーロピアンオプションと呼び、期日内であればいつでも権利を行使できることをアメリカンコールオプションと言います。他にも、権利を行使する期間がある時期にだけ限定されるものなど複雑なものはたくさんあり、それを総称してエキゾチックオプションと言います。(あとで余裕があれば説明します。)ただこれから話をするB-S式(ブラックショールズ式)は、満期の期日を決めてますから、ヨーロピアンオプションにしか適応できません。

*満期とは、権利を行使する日のことを言います。デリバティブ(派生商品derivative security)とはある別の商品(原資産underlying security)の価格を基に価格が決まるような証券のこと。ペイオフとは、満期時のデリバティブの価値です。

 オプションをもう少しイメージするために、特約付外貨預金を例に上げてみます。下は、実際にソニー銀行で売られている商品です。
ソニー銀行の特約付外貨定期預金・タイプ1について









特約付外貨定期預金・タイプ1のイメージ
より高い金利を期待できる代わりに、特約レートより円安時の為替差益は放棄。

特約付外貨定期預金・タイプ1(以下、「タイプ1」)は、参照レートが特約レートと同じか円安の場合、満期日に元利金を特約レートで円に交換し、お客さま名義の円普通預金口座へ入金する特約が付されている外貨定期預金です。参照レートが特約レートより円高となった場合には、この特約は消滅し、満期日に元利金を預け入れ通貨のままお客さま名義の預け入れ通貨の外貨普通預金口座へ入金します。


 どのような商品か分かりましたか?

 このソニー銀行の特約付外貨預金では、契約者は(預金者)ドルを原資産とするプットオプションのショートの取引をしていることになります。個人的には、ショートプットオプション付き外貨預金と命名したほうがわかりやすいと思いますが。。笑

2009年7月13日月曜日

phpでgmailのサーバ(smtp.gmail.com)を利用して、メールを送信する方法。

gmailのsmtpサーバー(smtp.gmail.com)を利用してmailを送信する方法。文字化けするのでutf8にする必要がある。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

$to = "送信先のアドレス";
$toName = "送信先の名前";
$subject = "phpによるmail送信";
$message = "成功";
$user = "googleアカウント(gmailのアドレス)";
$pass = "アカウントのパスワード";

$config = array('auth' => 'login', 'ssl' => 'ssl', 'username' => $user, 'password' => $pass);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail('UTF-8');
$mail->setFrom($user, 'dumsco');
$mail->addTo($to, $toName);
$mail->setSubject($subject);
$mail->setBodyHtml($message);

$mail->send($transport);



追記
・docomoとsoftbank当てにメールを送る方法。
 ドコモとソフトバンクは、UTF-8が使えるため、特にコードを書き換える必要無し。

$config = array('auth' => 'login', 'ssl' => 'ssl', 'username' => $user, 'password' => $pass);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail('UTF-8');
$mail->setFrom($user, $fromName);
$mail->addTo($to, $toName);
$mail->setSubject($subject);
$mail->setBodyHtml($message);
$mail->send($transport);

・auにメールを送る方法。
auはutf8が使えないのでShift_JISに文字コードを変換した。しかし、本文が見れず、しかたないのでtextの形式で送った。

$config = array('auth' => 'login', 'ssl' => 'ssl', 'username' => $user, 'password' => $pass);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$fromName = mb_convert_encoding($fromName, 'Shift_JIS' ,'UTF-8');
$user = mb_convert_encoding($user, 'Shift_JIS' ,'UTF-8');
$toName = mb_convert_encoding($toName, 'Shift_JIS' ,'UTF-8');
$subject = mb_convert_encoding($subject, 'Shift_JIS' ,'UTF-8');
$message = mb_convert_encoding($message, 'Shift_JIS' ,'UTF-8');
$mail = new Zend_Mail('Shift_JIS');
$mail->setFrom($user, $fromName);
$mail->addTo($to, $toName);
$mail->setSubject($subject);
$mail->setBodyText($message);
$mail->send($transport);

カレンダーのIDを指定してgoogle calendarから情報を受け取る方法。

newEventQuery()を実行することで、Zend_Gdata_Calendar_EventQueryオブジェクトを受け取る。
getCalendarEventFeed(Zend_Gdata_Calendar_EventQueryオブジェクト)を実行することで、Zend_Gdata_Calendar_EventEntryの配列を受け取る。
getWhenという関数を用いてZend_Gdata_Extension_When Objectの配列を受け取る。
あとは、自由に必要なモノをとりだすだけ。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "アカウントのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

$service = new Zend_Gdata_Calendar($client);

$calendar_id = "カレンダーのID";

$query = $service->newEventQuery();
$query->setUser($calendar_id);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setFutureevents('true');

try {
$eventFeed = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
echo "エラー: " . $e->getMessage();
}

echo "<ul>";
foreach ($eventFeed as $event) {
$when = $event->getWhen();
$starttime = $when[0]->startTime;
preg_match("/(....)-(.*?)-(.*?)T(.*?):(.*?):(.*?)\./" , $starttime, $startrow);
$timestamp[start] = gmmktime($startrow[4], $startrow[5], $startrow[6], $startrow[2], $startrow[3], $startrow[1]);

$x = getdate($timestamp[start]);
$date = $x[year].'年'.$x[mon].'月'.$x[mday].'日'.$x[hours].'時'.$x[minutes].'分'.$x[seconds].'秒';
print $date;

echo "<li>" . $event->title . " (Event ID: " . $event->id . ")</li>";
}
echo "</ul>";


追記
・カレンダーのXMLは、自分のカレンダーの設定画面からも確認することができる。
/User/Visibility/Projectionという形でアクセスするので必要にZend_Gdata_Calendar_EventQueryにセットする。
・時間を指定して検索する場合、

//$query->setFutureevents('true');
//上のコードを消して、下記を追加する必要がある。
$query->setStartMin('2009-07-23');
$query->setStartMax('2009-07-30');

2009年7月12日日曜日

phpでgoogle calendarの権限を削除する方法。

google calendarを削除する時と同様方法。カレンダーのIDと削除したいユーザのIDを調べて、Zend_Gdata_Calendarクラスのdelete()を使うだけでOK。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "アカウントのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

$service = new Zend_Gdata_Calendar($client);

$calendar_id = "カレンダーのID";
$user = "権限を削除したいユーザーのアカウント";

$uri = 'http://www.google.com/calendar/feeds/'.$calendar_id.'/acl/full/user%3A'.$user;

$service->delete($uri,null);


2009年7月11日土曜日

phpで指定したgoogleカレンダーに権限を追加する。

Zend_Gdata_Calendar クラスを利用してxmlを送る。
・post() を使ってxmlを特定のurlに送る。
・レスポンスはZend_Http_Responseクラスで受け取る。
・今回は、getStatusを利用してレスポンスコードを受け取りそれで完了したことを確認する。

□権限の種類
owner 変更および共有の管理権限
editor 予定の変更権限
read 閲覧権限(すべての予定の詳細)
freebusy 予定の時間枠のみ表示(詳細は非表示)


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "googleのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

$calendarid = "グーグルカレンダーのID";

addACL($client,'追加したい人のgoogleのアカウント','権限',$calendarid);

function addACL($client,$user,$role, $calendar_id){
$xml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007'>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/acl/2007#accessRule'/>
<gAcl:scope type='user' value='[USER]'></gAcl:scope>
<gAcl:role value='http://schemas.google.com/gCal/2005#[ROLE]'></gAcl:role>
</entry>";

$gdataCal = new Zend_Gdata_Calendar($client);


$uri = 'http://www.google.com/calendar/feeds/'.$calendar_id.'/acl/full';
$xml = str_replace('[USER]', $user, $xml);
$xml = str_replace('[ROLE]', $role, $xml);

$response = $gdataCal->post($xml, $uri);
if($response->getStatus() == 200 or $response->getStatus() == 201){
print "OK";
}
}


追記
・googleの権限を追加するためのアドレス(googleアカウント)、googleのカレンダーのアドレスとでは@の処理の仕方が違う。httprequestのurlに指定するのでgoogleカレンダーのアドレスは%40に変換する必要がある。

phpで指定したgoogleカレンダーの権限を表示する。

Zend_Gdata_CalendarクラスのgetFeedの関数を使うと、Zend_Gdata_App_Feedのオブジェクトで返ってくる。
次にgetEntry()の関数を使い、 Zend_Gdata_App_Entryのオブジェクトが格納されたarrayで返す。
arrayだからcount($array)でarrayの数を数える。
→ここまではgoogleカレンダーのリストの取得と同じ。
今回は、ユーザーIDの取得を他の場所から取得してみる。
Zend_Gdata_App_EntryのextensionElementsという関数を使い、Zend_Gdata_App_Extension_Element Objectの形にする。
このオブジェクトはZend_Gdata_App_Extension_Elementのオブジェクトが配列の形で格納されている。
このオブジェクトをとりだした後、extensionAttributesの関数を使い、配列を取り出す。
あとは、必要なものを取り出すだけ。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "googleのアカウントのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

$service = new Zend_Gdata_Calendar($client);

$clendar_id = "カレンダーのID";
$uri = "http://www.google.com/calendar/feeds/".$clendar_id."/acl/full";

$response = $service->getFeed($uri,'Zend_Gdata_App_Feed');

$entry = $response->getEntry();
$i = 0;
while($i<count($entry)){
print $entry[$i]->extensionElements[0]->extensionAttributes[value][value];
print "=";
print $entry[$i]->title;
print "<br/>";
$i += 1;
}

phpで使用しているgooglecalendarをリストにしてすべて取得する方法。

Zend_Gdata_CalendarクラスのgetFeedの関数を使うと、Zend_Gdata_App_Feedのオブジェクトで返ってくる。
次にgetEntry()の関数を使い、 Zend_Gdata_App_Entryのオブジェクトが格納されたarrayで返す。
arrayだからcount($array)でarrayの数を数える。
あとは、Zend_Gdata_App_Entryのオブジェクトから必要なものだけとりだせばおっけ。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "googleのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Calendar($client);
$response = $service->getFeed('http://www.google.com/calendar/feeds/default/allcalendars/full','Zend_Gdata_App_Feed');

$entry = $response->getEntry();
$i = 0;
while($i<=count($entry)){
print $entry[$i]->id;
print "=";
print $entry[$i]->title;
print "<br/>";
$i += 1;
}

phpでgoogle calendarを削除する方法。

google calendarを削除する方法は簡単。カレンダーのIDを調べて、Zend_Gdata_Calendarクラスのdelete()を使うだけでOK。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleアカウントのユーザ名";
$pass = "googleアカウントのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Calendar($client);
$calendar_id = "カレンダーのID";
$data = 'http://www.google.com/calendar/feeds/default/owncalendars/full/'.$calendar_id;

$service->delete($data,null);


追記
apiを使用するときに便利なことのメモ
・クラス名をgoogleで検索し、詳細な仕様を確認する。(今回の場合は、Zend_Gdata_Calendar)
・googleソースコード検索で、使用したい関数およびクラスを検索する。(今回の場合は、Zend_Gdata_Calendarとdelete)

phpでgoogle calendarを作成する方法。

phpを使ってgoogle apiを使うことはzendのフレームワークを使えば簡単にできるのだが、権限をつけたりcalendarを作成したりというものは存在しない。だから自分でXMLを作成する必要がある。

Zend_Gdata_Calendar クラスを利用してxmlを送る。
・post() を使ってxmlを特定のurlに送る。
・レスポンスはgetBodyで表示できる。


require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "ここにgoogleアカウントのuser名を入力";
$pass = "ここにgoogleアカウントのpasswordを入力";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

createCalendar($client,'calendar_name','A new calendar','#2952A3','America/Los_Angeles','false','Berkeley');

function createCalendar($client,$title = 'My New Calendar',$summary = 'A new calendar', $color = '#2952A3',$timezone='America/Los_Angeles', $hidden='false',$where='Berkeley'){
$xml = "<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:gCal='http://schemas.google.com/gCal/2005'>
<title type='text'>[TITLE]</title>
<summary type='text'>[SUMMARY]</summary>
<gCal:timezone value='America/Los_Angeles'></gCal:timezone>
<gCal:hidden value='false'></gCal:hidden>
<gCal:color value='[COLOR]'></gCal:color>
<gd:where rel='' label='' valueString='Oakland'></gd:where>
</entry>";

$gdataCal = new Zend_Gdata_Calendar($client);
$uri = 'http://www.google.com/calendar/feeds/default/owncalendars/full';
$xml = str_replace('[TITLE]', $title, $xml);
$xml = str_replace('[SUMMARY]', $summary, $xml);
$xml = str_replace('[COLOR]', $color, $xml);
$response = $gdataCal->post($xml, $uri);
}

2009年7月6日月曜日

水蒸気が増えると温度は上昇しつづける!?

1.水蒸気はとても強い温室効果ガス
(CO2の数十倍。)
2.気温が高いほど、大気中の水蒸気は増える。

1が起きると、2が起きて、また1が起きてそれが続く。しかし、2は実際にこのようになるかは不明。それは水蒸気の量がどのような理屈で決まっているのか明らかではないから。

また、もうひとつ。
中心星輻射加熱(太陽から地球に与えるエネルギーの量)

F_{s}=\frac{S(1-A)}{4}

S 中心星からの距離で決まる。
A 惑星アルベド

上のように太陽から地球までのエネルギーの量は惑星のアルベドによってきまる。この惑星アルベドとはどういうものかというと、雲があると太陽の光を遮るというような効果のことです。地球では、このアルベドは安定しているのだが、一般的にアルベドがどのようにして安定しているのか理屈は明らかではない。アルベドがもし1%変化すると二酸化炭素の増加などはまったく影響しないくらい強い影響力を持つ。
下の表から分かるように、雲の量はこのアルベドの値を決めるのに重要な役割を果たす。





雲の量アルベド
金星1000.77
地球500.30
火星~00.15


 今回二つのことを言いたい。
 ひとつは、水蒸気の動きの予測は地球温暖化にとってとても重要なファクターであり、その詳細な理屈が分かっていないので、地球温暖化の予測が100%正しいものではない。これはどの国も分かっている。もし、映画のような影響が地球に起きるならアメリカも中国も動くだろう。ただ理屈が分からないので、地球温暖化が嘘だということもできない。
 もうひとつは、ネットの温暖化に関する内容の貧弱さが目立った。科学的にどのようなことが言えるか知りたかったのだが、間違えた引用を繰り返されており、なにが正しいか調べることは非常に難しくなっている。googleの検索が正しく機能していない例の典型例になっている。

2009年7月2日木曜日

ブログにソースコードを埋め込む。

ブログにソースコードを貼り付けるためのよいサイトがありました。

下記のサイトからウィジェットを追加すれば簡単にソースコードが貼り付けれます。また、< や > をコードとして表示するためのスクリプトもあり、大変便利です。

http://www.kuribo.info/2008/04/code-prettify.html

ブログに数式を埋め込む。

 数式をtetexなどで書けることは知っていたがなかなか面倒だなと思っていた。

 まだこれが完全にベストではないかも知れないが、なかなかよい方法があったので紹介します。

1.ブログはgoogle bloggerを選択してください。
2.レイアウトのページ要素の追加のガジェットの追加を選択し、HTML/javascriptを選んでください。
3.以下のコードをコンテンツの中に書き加え、タイトルは空白にしてください。

<script src="http://tex.yourequations.com/" type="text/javascript"></script>

4.あとは、以下のような内容を投稿のなかに書き加えるだけです。

<pre lang="eq.latex">
\int_{0}^{1}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx
=\frac{22}{7}-\pi
</pre>

すると、以下のように表示されます。

\int_{0}^{1}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx
=\frac{22}{7}-\pi