0

今年も色々

■1月〜3月
ツイエバの有料版を出せた。有料のWebサービスは儲からないというのが定石だったけど、それを無視してローンチまでもっていけたことが何よりも良かった。儲かってはないけどサーバー代をペイできてる。それで今は十分。

■4月〜6月
本業が忙しくなった時期だけど、ひっそりツイエバ英語版もリリース。こちらは完全に黒歴史になりつつあるけど、タイムゾーンや多言語化等インターナショナリゼーションの開発できたのは、後の本業にも役立ち、今となれば良かったと思える。
6月に家族と行った信州旅行は良かった。ゴールデンウィークの代休ということで平日にのんびり乗鞍・上高地を満喫できた。

■7月〜9月
縁あってETC2012に参加できたのは良かった。6年ぶりにアメリカに行って自分のチキンっぷりにビビったけど今となっては良い思い出。

■10月〜12月
3ヶ月のアメリカ滞在して法人設立の準備。人に会いまくり現地の人と仕事をし刺激的な毎日やった。オフィスない住居もない何も受け皿にないところから自分たちで新しい事を始めれるのはほんと良かった。

去年の今頃、今の出来事を予想できなかったように来年末にどうしてるかさっぱり予想できないけど、きっと来年も楽しいはず。

0

俺@サンフランシスコ

人生とは予想も出来無い事の繰り返し。

10月から仕事でアメリカ サンフランシスコに来てます。
ビザもないのでまずは三ヶ月だけの滞在ですが、なんとかやってます。
留学から日本に戻り10年余り、就職、結婚、子供ができ完全に日本社会のど真ん中で生きてきたのに、またここにくるとは想像もしてませんでした。とにかく胸熱。「空気を読まない」をモットーに頑張ろう。

10年も経てば人も国も変わるということで「へ〜」となった事。地域的な事もあるだろうけど適当にピックアップ。

  • 物も家賃も高い。
  • アメリカは1年で5%のインフレだそうで、そう考えると10年前1ドル130円とかで今より50円程円安だったけど今の方が明らかに色んなものが高い。
    場所が全然違うけどWest Virginiaでは$360で1bedroom借りれてたけど、今はマンスリーアパート的な所を$2100で借りてる。

  • 公共の交通機関が発達してる
  • たぶんSFだから。

  • バスでも携帯での通話OK
  • 日本だけかなーと思ってたらその通り。普通にHello!とかHola!とかいってます。

  • バスのアナウンスが英語、スペイン語に加え中国語もある。
  • たぶんSFだから。
    West Virginiaでは想像もできん。

  • 美味しいコーヒー屋が増えた。
  • シャバシャバのコーヒーばかりだったのに。
    日本と同じでスタバが増えたしスタバっぽい店も増えた。

  • 辛ラーメンがスーパーで買える。
  • トップラーメン以外のラインナップがあるのは嬉しい。

  • プラスチックバッグが禁止
  • SFと他の大都市だけ?
    エコバッグを使うかペーバーバッグを10セントくらいで購入。

  • オシャレな人が増えた。
  • ジャイアンツの帽子とか被ってるがほとんどだけど、日本人的なオシャレな人が増えた。

  • SFはジャイアンツ愛に溢れてる。
  • LAはそんなドジャース愛がなかった。

  • ガソリン高い。
  • 3倍くらい値上がりしてる。レンタカー借りるより格安航空会社使って移動した方が安い。

  • ネットはそんな早くない。
  • 国土の問題?

  • meetupに行けば軽食が食える。
  • 軽食と言えども日本人には一食分くらいあります。
    ありがとうございます。

  • スーバーはSafeway、ドラッグストアはWalsgreen
  • 買収買収でこうなったのか、SFだからか他のチェーンを殆ど見ない。

  • 食事が多すぎる
  • 相変わらずポーションがでかい。若くないので完食できない。
    もちろん白いご飯や味噌汁が恋しくなるけど、アメリカンな食い物もありと思う。

未分類
0

FuelPHPが素晴らしい理由

FuelPHPが素晴らしい理由

共にcontrollerからsessionのset&get。

cakePHP1.3
$this->Session->write('name', 'hoge');
$this->Session->read('name');

CodeIgniter2.0
$this->session->set_userdata('name', 'hoge');
$this->session->userdata('name');

Symfony1.4
$this->getUser()->setAttribute('name', 'hoge');
$this->getUser()->getAttribute('name');

FuelPHP1.2
Session::set('name', 'hoge')
Session::get('name')

直感的。staticといえどもタイプ数が少ない。
Symfonyのそれはもはやsession関係のメソッドとは気付かない。

0

webサービス作らない言い訳

studygiftの件、鬼の首を取ったように批判してる人面倒くさいですね。

個人でwebサービスを考えたりする時、誰の為のサービスを作るべきかというところでよく悩みます。
悩んだ挙句作らない事がほとんどです。

  1. 自分自身大満足サービス
  2. 一般受けするであろうサービス
  3. 世の中をよくするサービス

作ろうと思うサービスはこんな感じでだいたい3つに分かれます。
で、だいたいそれぞれに応じた言い訳で作らないです。

1は自分自身がユーザーとなり毎日使いたいサービスだけど、あんまりでてこないです。今の世の中のサービスで十分です。
軽いバッチものだったらよく作ります。画像ぶっこ抜いてきたり、写真のサムネイル一括で作成したりするサービスというよりはツール。こういうのとは違うちゃんとしたやつ。
自分自身が使いたいのにメンバー登録やログイン機構つくるのは面倒という考えに走って作らない。

2は今だとソーシャルメディアをまとめてEvernoteにぽいとか、和製iftttとか一部の人には間違いなく受けるし作るのもそんなに難しくない。でもどうも腰が重くなる。自分はFacebookもgoogle+も使わないし、そもそも見返さないと思うから。
世の中ソーシャルメディアとEvernoteは大人気だけど自分は使ってないのにメンテするモチベーションが保てるか心配なので作らない。

3はstudygift等の直接的に人を助けるサービス。クズの部類に入る自分も少しは人の役には立ちたいなとは思ってます。
時間があれば作るわって考えなのできっとこのままグダグタいって何も作らない気がする。

1〜3もしくは1〜2が合致すれば作り出すけど、そんなサービスはあまりない。
もちろん技術的・時間的に作れないものものあるけどだいたいこんな事をグダグダ言い訳にして作らない事が多い。

この話に落ちはないです。
言い訳してる自分を可視化して、目を覚ますハックです。
グダグダいってる暇があれば何か作れ >自分
という事ですね。

0

Evernote Devcup Meetup 大阪 参加しました。

昨日、これに行って来ました。

エンジニアのみなさんへ: Evernote Devcup Meetup を東京・大阪・札幌で開催します « Evernote日本語版ブログ

8月か9月にアメリカで開催されるアプリ開発コンテストEvernote Devcupの概要、開発時のポイント、アイデアの出し方というのが主なトピックスです。一方的に誰かが話すのではなく、実際みんなでアイデアをブレスト&発表する時間もありました。
Evernoteユーザーの集まりではなく開発者の集まりだったのには関わらずEvernoteはこうあるべきだといった話が至る所で繰り広げられるなんとも刺激的な時間でした。

■Evernote 新GM井上さんのご挨拶
元頓智ドットの方だったんですね。

■Evernote 佐藤さんのEvernote Devcupの案内
「デブカップ」名前ダサいけど当面はこの名前になるらしい。
Evernoteのスローガンである「remember everything」は英語では「記憶する」「思い出す」の2つの意味があるけど、日本語にすると「すべてを記憶する」になる。思い出すの部分が欠けてるけどこれ重要。
あいかわらずの落ちつた話しっぷり、すごい真似てみたい話し方です。

■マインドフリー玉置さん、TAMの中川さんによるUI/UXトーク
実際会社で行われるUIのブレストの仕方、スマートフォンアプリを例に話があったり、エンジニアには目から鱗の落ちるようなな話ばかりでした。
お二方の静と動の話っぷりにも感動。

■Evernote「超」知的生産術の著者倉下さん、DualBrowser 開発者の瀬藤さん、となぜか私のパネルディスカッション。
佐藤さんのリードで去年のファイナリストのアプリを元にあーでもないこーでもないという話をしました。
佐藤さん曰くdatastoreのshareなんかのAPIはあまり使われないので狙い目かも。
ただ個人的には、なんでもかんでもソーシャルだのシェアだのいうのは好きでなく、そこにあまり力の入ってないのがEvernoteの良さだと思ってます。
食べたもの読んだものを保存しておきたいだけ。そんなのシェアしたくない、パーソナルな管理というのもいい、という話ができたのは良かった。

■会場にいる参加者を数人のグループにわけてこんなアプリのアイデアをブレスト。
三人寄れば文殊の知恵とはこの事かと思うような自分だけでは思いつかない面白いアイデアがいっぱいでました。
レシピ管理、ライフログ、自分史、回覧板等々Devcupだすださない関係なく作りたい/作って欲しいアプリだらけでした。

3行まとめ。
Everonoteは読み返してなんぼ。昨日のライフログとか読まない、数年後に進化を発揮するもの。
Evernoteはデータベースである。
小さいグループ(家族、部署)でシェアするのはおもしろい。

主催者、参加者のみなさんお疲れ様でした。
こういったものはだいたい東京で開催なんだけど、今回大阪での開催ともあり地方在住者には嬉しい限りです。
ぜひ今度はuser meetupを大阪でお願いします。

0

ツイエバ英語版リリースしました


ツイエバの英語版リリースしました。
英語版だとTwieveだけどより英語発音っぽく「ツイーブ」です。

MacDonald が日本で「マクドナルド」だけど海外では「マクドーナー」というようなもんではないけど、まあそういう事ですね。

先月タイムゾーンの設定を自由に設定できるにしたので、今回の英語版を組み合わせて英語圏の人にも使ってもらえるようになりました。
機能的には日本語版とまったく同じです。
ぜひご利用&ご紹介ください。

以下駄文。
人生で後悔してることは何かと聞かれると、「海外で働いてみたかった。」と答えている。
「東京で働いてみたかった。」というのもあった。
インターネットの仕事はどこにいてもできるとかいうけど、結局の所東京が中心である。そこの真ん中で働いてみたいというのが理由。
数年前からこれはどうでもいいこだわりだった事に気づいて、人が東京に転職で行ったと聞いてもなんとも思わなくなった。むしろ金つまれても行きたくない。(そもそも誰も呼んでくれない)

「海外で働いてみたい。」これは3年間の留学から帰国して10年以上経って家族ができた今でもチャンスがあればと思ってる。
留学の経験が今の生活・仕事に役立ってるとは思うけど、あくまで間接的なものである。あんな苦労したのにこんだけ?とふと思う。もっと英語に携わりたいし海外に行きたいし海外の人間を相手に仕事をしたいという思いは今でもある。今の自分は留学前に想像してた自分かというと明らかに否である。10年経っても思うし恥じてる。

実際問題海外で働くという可能性は限りなく低くなってるけど、今回、形は少し違うけどツイエバ英語版公開で何か少し肩の荷が降りたような気がする。

今まで作ってきたものの後に感じる高揚感とはまた別の想いがある。
成功するか失敗するかどうでもいいけど、失敗するよりは成功したい。

0

あとで読むサービス→Evernote

Reederのソファーアイコン(Readability)を邪魔だな〜と思い続けて半年、ふと思い立ってサインアップしてみたら非常に便利でびっくり。
Readabilityの他、Read it Laterinstapaperとか所謂「あとで読む」サービスの名前は聞いた事あったけど、使う事ないだろうと思っていました。
本文抽出してスクラップなんて便利だけど普通にサイトみればいいと思ってたけど、Readabilityを通すと読むという行為がほんと楽しい。
ついでにRead it Laterinstapaperも使ってみたけどこれらもまた良い感じ。昔の紙copiを彷彿とさせるものがあります。
2chのまとめサイトはサイドバーやヘッダーからあれなので会社で見る時ドキドキするけど、この手のサービスを使えば読みやすくなる。そういう使い方もありな気がする。
その流れで最近TL上でよくみかけるiftttもサインアップしてみた。これもすばらしい。こんなサービスを作ってみたかった。

各サービスのレビューは色んな所で説明されてるので割愛してキャプチャだけ。
元のページ
Readability
Read it Later
instapaper
スマホのクライアントも試してないし、サンプルはこの1ページのみだけど
Readability→Read it Rater→installer
の順で見やすいけどReadabilityはスマホのアプリがないので今はRead it Raterを使ってます。

ちなみにgoogle trendではinstapaperが一番らしい。

そんな事より変態的な使い方としてはやはり後で読む系のサービスをEvernoteで読んでみたいので少し調べてみた。

■Read it Later
iftttでは既読にするのをtriggerにEvernoteに送れる
APIではArticle View(旧Get Text Only Version)でとれる

■Readability
iftttではスターをつけるのをtriggerにEvernoteに送れる
APIでは/articles/{article_id}で全文とれる

■instapaper
instapaper自体がevernote対応してるので、Likeした時にevernoteに送る事ができる
iftttでのトリガーはない
iphoneアプリだとevernoteへ送るボタンある
APIでは/api/1/bookmarks/get_text{bookmark_id}でとれる。
bookmarksだけどこれが「後で読むリスト」の事だと思う。

iftttでは「後で読む」しただけではどれもEvernoteに送ってくれない。
cronでAPIを叩いて新しい登録があればevernoteへ保存というのは可能。
これをサービスとしてできたらいいなとは思うけど、もうこの手サービスは懲り懲りという感もあるので誰か作ってくれないかな。

逆にはてなブックマーク→後で読むサービスとかでもいいか。

本文抽出というのはブログだと結構な精度でできるのだけど、ブログでないもの(サービス系サイト)とかだと俄然精度が下がってしまう。
そもそもどこが本文なのかというのは主観でしかみれないし、ミスった時のリカバーが難しい。
そんな理由でhatebteでは実装してない。という言い訳を最後にしてみる。

0

さよなら2011

さて恒例の今年の目標の総括。

人と会いまくる
これといった理由はないけど、あまりできなかった気がする。

朝早く起きる/会社を早くでる
7月頃から超達成。

プライベートワークは変な構成で作る
node.jsやobjective-c等を深堀りできたのは良かったけど、物足りない。
スマホアプリの開発とsymfonyは自分には合ってないと改めてわかった一年。

2chまとめサイトは(あまり)みない
1%くらいは減った気がする。

どうすれば儲かるかどんなサービスを作れば人気が出るかを考える癖と時間を作る
多少はできた気がするけどもの足りず。

技術書を読む
あんま読んでないわー。
ミステリーばっかり読みすぎた。

気軽にコードを書く
wimax購入してから少しは気軽に書くようにはなったかな。

たまに夜走る
年に3回くらい走った…

子供にいろんな経験をさせる
天体観測もできたし、川遊びにもかなり連れていけた。
これはまあ満足。

この年になると一年一年が劇的に変わるわけではないけど、緩やかではあるけど良い方向には向かったと思う。

知り合いが使える程度いいやと思ってたツイエバが20000ユーザーを超えようとしているし、おかげでEvernoteクラスタの人とも多く知り合えるようになった。これはいい収穫になった。

家も買った。
嫁も息子も喜んでいるのできっとこれはいい買い物だったはず。

では良いお年を。

0

evernoteAPIをphpで使う(notestore)

前回はユーザーデータを扱うuserstoreを使ったけど、今回はノートを扱うnotestoreというモジュールを使う方法です。「notestore」となってるけど、実際はuserstoreでできる事以外はnotestoreでできます。
ノートやノートブックを操作するのは勿論、タグに関する事、同期に関する事、共有に関する事もnotebookに属します。

■ユーザーデータと同様、notestoreのインスタンスを生成します。
$noteStoreTrans = new THttpClient('sandbox.evernote.com', 80, '/edam/note/' . $_SESSION['shardId'], 'https');
$noteStoreProt = new TBinaryProtocol($noteStoreTrans);
$noteStore = new NoteStoreClient($noteStoreProt, $noteStoreProt);

userstoreとTHttpClientの引数がuserstoreと少し違う。
/edam/user/が/edam/note/(shardId)というものに変わる。
shardIdはgetAccessTokenでoauth_token、oauth_token_secretと同じようにedam_shardという名前で取得できてるはずなのでsessionにでも入れとく便利です。
値は永続的なものなのかユーザーによってどう変わるか分からないけど自分の環境はずっと「s1」が返ってくる。

あとはnoteStoreのインスタンスでごにょごにゅする。

noteStoreに64ものサービスがあるので代表的なところだけ書きます。
■ノートブックを取得
まず公式のサンプルにもあるlistNotebooksを使う。
$notebooks = $noteStore->listNotebooks($_SESSION['accessToken']);

戻り値はオブジェクトになっているので、プロパティにアクセスして情報をとる形になります。

foreach ($notebooks as $notebook) {
// ノートブックの名前
echo $notebook->name;
// ノートブックのユニークなID。ノートブックの名前が変わっても変わらない。
echo $notebook->guid;
}

■ノート検索
findNotesとedam_notestore_NoteFilterを使って検索をする。
以下の例は「ほげ」と書かれたノートを10件取得するというもの。
$filter = new edam_notestore_NoteFilter();
$filter->words = "ほげ"; // 検索したいワード
$noteList = $noteStore->findNotes($_SESSION['accessToken'], $filter, 0, 10);

検索したいワードは普段Evernoteの検索で使うものと同じです。
普通の文字列からsource:やtodo:を使った高度な検索も使えます。
参考: Evernoteを自由に検索するための10の条件

ループで回してメタ情報を取得していく。
foreach ($taskNotes->notes as $note) {
// 属してるノートブックのユニークID
echo $note->notebookGuid
// ノートのユニークID
echo $note->guid
// ノートのタイトル
echo $note->title
}

ただこれだと肝心のノートの内容が取れない。
ノートの内容を取るには別のメソッドをサービスを利用する。

■ノートの内容を取得
$contents = $noteStore->getNoteContent($_SESSION['accessToken'], '2f7rfbc8-0d46-4bf9-91f2-2da715cs99e5');
第二引数はノートのユニークID(guid)が入る。戻り値はstring。
内容はXHTMLに似たENMLで記述されているので、後はPHP Simple HTML DOM Parserとか使ってパースしてやる。

ENMLはこんな形になってます。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note><div>ほげほげ</div>
<div>テスト</div>
<div><en-todo></en-todo>やること1</div>
<div><en-todo></en-todo>やること<span style="color: #ff6600;">2</span></div></en-note>