自分が使ってるサービスまとめ 2014年2月版

インターネット上では数限りないサービスがある。それでも自分が使うものは限られるものだ。そこでちょっとそのあたりをまとめて見ようと思う。1年ごとに記録として付けるのも良いだろう。きっと来年もほとんど変わってないだろうけど。ジャンルごとにいこう。

Devices
Macbook Pro 2012 First Retina, 15″
iPhone 5 32GB Black on Softbank Mobile
iPad 3 16GB Black Wifi
Search
Google No other choice
Photo
flickr Free The best photo service in the world
instagram Free sometimes.
Video & Movie
Youtube Free The best video service in the world
Hulu ¥980/month Only service worth to pay in Japan
Vimeo Free Creative videos
Productivity
Evernote $40/year Clip web, store idea and personal documents
Feedly Free RSS reader after Google Reader
Pocket Free Read it later
Messaging
Gmail Free As a Google account. and Business
Google Apps Mail $6/month Personal domain mail. Google apps is great.
Facebook messenger Free Useful designed messenger
Skype Free The most famous IP phone service. I purchase some credit.
iMessage Free Apple’s built-in messenger. You need iOS or Mac devices.
Storage
Google Drive $5/year 36GB Subscribe in google account
Google Drive for Apps $6/month 30GB A part of Google Apps
Dropbox Free 20GB My favorite and most used storage
Box Free 50GB My online only storage. No sync with local
iCloud Free 5GB Apple’s storage. I use for iPhone backup and sync data
Amazon Cloud Drive Free 5GB I like Amazon but this is not much used.
Kindle Personal Document Free 5GB Put PDF here and read on Kindle.
OneDrive Free 25GB Microsoft’s. Formerly SkyDrive.
Crashplan $190/4years unlimited Online backup.
Bitcasa Free 10GB As multimedia storage.
Social Network
Facebook Free You know
Twitter Free Mostly to read
Music
Last.fm Free Music community. Stats of I listened
Spotify Free Not yet but soon!
Hosting
Linode $20/month The best support I’ve ever had. In Tokyo DC.
DigitalOcean $5/month Pay as you go
Amazon S3 $1/month Backup server data
Cloudflare Free CDN and DNS service.
Google Analytics Free Web access analytics.
Disqus Free Comment system
New Relic Free Web system analyze
Linode Longview Free Server monitoring
Shopping
Amazon.co.jp very much I cannot live without.
Kickstarter some Amazing project and product
Fancy Never My favorite.
Etsy Never Handmaid product
Location
Foursquare Free Check in places I visit.
Food
Foodspotting Free Share what you eat.
Evernote Food Free Personal food logger stored in Evernote.
Health and Fitness
Runkeeper Free Run! Forest! Run!
Apple Healthbook Free Hope it comes soon.
 

GmailのエイリアスをiOSとMacのMail.appで使う方法

メールというのは個人的にも仕事でも大切な情報のやりとりをするものだ。そのため、メールクライアント選びは重要。便利だから、というのだけで実績も信頼もないソフトウェアに自分のアカウント(パスワード!)を打ち込むのはリスクが伴う。そこで、私は基本的にOS標準のアプリを使うわけです。MacでもiOSでもMail.appです。「Apple製なら信頼できるのか?」なんてツッコミもあるでしょうが、OSを任せてる時点でもう信用するしかないわけです。

話がそれた。今回はMac、iOSのMail.appでGmailのエイリアスの使い方を見つけた(ググった)のでメモしておこうと思う。
まずMacの方から。こちらは簡単。Mail.appの設定のメールアカウントのタブにてエイリアスを設定したいGmailアカウントをクリックして「メールアドレス」の項目に、実際のGmailアドレスの後にコンマ区切りでエイリアスのアドレスを追記するだけでいい。

mac

たとえば、実際のアカウントが xxxxxx@example.com (gmailに読み替えてください)だった場合

xxxxxx@example.com を xxxxxx@example.com, xxxxxx+alias1@example.com, abc@example.com

という具合に入力すればよい。エイリアスは事前にGmailのウェブにて設定しておいた方が確実だろう。

次はiOSの方。こちらは少し手順を踏む必要がある。さらに、機能の制限がつく(連絡先とカレンダーの同期が出来ない)。
通常はアカウントを登録する時にGmailを選んで登録するが、そうするとMacでやったような複数アドレスをコンマ区切りで入力することができなくなる。そのため、登録済みの場合は一度登録を解除して、一般のメールアカウント、として登録する必要がある。

写真 2014-02-06 4 57 50通常の「Google」ではなく一番下の「その他」から登録する。そこでIDやパスワードに加え、受信サーバー(IMAP)や送信サーバー(SMTP)の設定を聞いてくるので、

 

受信サーバ
ホスト名:imap.gmail.com
ユーザ名:自分の実際のメールアドレス
パスワード:Gmailのパスワード
SSLの使用:あり
ポート:993

 

送信サーバ
ホスト名:smtp.gmail.com
ユーザ名:自分の実際のメールアドレス
パスワード:Gmailのパスワード
SSLを使用:あり
ポート:465

 

 

 

こんな具合でいけるはず。登録後はメールとノートのみ利用できる。さて、ここでやっとMacと同じ状態まで持ってきた。メールアドレスとエイリアスをコンマ区切りで入力しよう。

写真_2014-02-06_4_57_23-4-4

 

ココにメールアドレス郡を入力して登録すると、もう一階層できる。

写真_2014-02-06_4_57_30-4

 

エイリアス一覧が表示される。これで登録は完了。今後はメール作成する際に、これらのメールアドレスから選択して送信者を設定できる。

これでより便利にGmailを使えるようになる。特にGoogle Appsを使ってエイリアスを作りまくってる、またはキャッチオールで利用してる場合は便利になるはずだ。なお、前述したように、一般アカウントだとメールとノートしか同期できないので、連絡先やカレンダーを同期したい場合は、追加でGmailアカウントを別に登録して、そこでメールを非使用にして使うといい。

でも、自分はGoogleAppsからの移行を検討中だったりする。iPhoneをキャリア変えようと思って、その際にキャリアメールは完全にやめてEmailだけでやろうと計画しており、ActiveSyncは必須となるがGmailは無料だとただのIMAPでしか使えないので遅延が厳しい。Gmailアプリでプッシュすればリアルタイムにいけるけど、あのアプリ使いにくくて嫌い。複数アカウントのUnifiedもできないし。

というわけで、今のところ無料でActiveSyncにも対応してるZohoMailが最有力候補となっている。他にもいくつかサービスがあるので、次のエントリに比較をまとめてみようと思う。

以上、これからGmailをやめようとしてる男のメモでした。

 

オンラインストレージの生き残り

昔からアップローダーなど、ネット上にファイルを置いて管理したり共有したりということはあったが、今日のオンラインストレージサービスを作り上げたのはDropboxと言ってもいいのではないか。特に同期機能は一種の革命的な技術・サービスとなり、他社も追従している。星の数ほどあるストレージサービスだが、やはり勝者敗者は決まるもので、市場から退場していったサービスも多い。そこで、今回は生き残れそうな、または最終的に競争し続けられそうなサービスをまとめてみる。目新しいものはない。王道サービスだ。

Dropbox – 2GB/Free        100GB/$99/Year

Google Drive – 15GB/Free     100GB/$60/Year

SkyDrive/OneDrive(Microsoft) – 7GB(25GB)/Free     125GB/$50/Year

Box – 5GB(50GB)/Free   100GB/$120/Year

Amazon Cloud Drive – 5GB/Free    100GB/$50/Year

正直これくらいしか勝負できそうにないと思う。他にもBitcasaなどあるけど、おそらくサービスはそう続かないと予想。
他にも、PaaS系としてAmazon S3がいる。これ系はMS AzureRackspaceもやってるし、Google Cloud Storageなんてのもあるけど、あまり使ってる事例を聞いたことない。圧倒的にAmazonだ。

ちなみに、iCloudはただの同期サービスなので省いた。

先行者としてDropboxが良いポジションを確保してるけど、料金が他社に比べ割高で、機能もほとんど他社と変わらないため、将来は不透明ではある。写真管理のSnapjoyMailboxなどを買収したが、まだ事業の大きな柱にはできてない。
印象としては、Googleは強く、優位性があるが個人情報の懸念で敬遠する人が少しずつ出てきてるマイナス要因が気になる。Microsoftも昔からストレージサービスはあるが右往左往しヒットしていない。Amazonもショッピングサービスというイメージで、一般ユーザーはストレージのことなんて知らない。Boxは個人より企業向けに攻勢をかけているので、そちら方面で優位となりそうだ。

サービスの性質上、ファイル置き場または同期サービス、としての機能で横並びにならざるを得ない。短期的には価格と安定性、セキュリティあたりでしか差別化できない。ただのファイル置き場から同期サービスが加わったように新しい利用方法が加わるまでは各社難しい戦いになると予想する。

最後に、私は全サービスにアカウントを持ってる。Googleは旧有料プランを維持(36GB/$5/Year)し、Box(50GB/Free)と並んでファイル置き場にしている。Dropbox(20GB/Free)のみを同期サービスに使っている。

 

Thank you and Good bye, Everpix

私がオンラインサービスに課金することは珍しい。そんな中、課金したい!と思わせるサービスが画像管理サービスのEverpixだった。Macに入ってる画像やiPhoneにカメラロールの画像などをすべて自動的にクラウドに同期し、あちら側で管理してくれるサービスだ。

Everpixの強みは、画像を自動的に分類しアルバムにしてくれて表示してくれるところで、年代や場所や被写体で簡単に過去の画像にアクセスできた。flickrinstagramからの取り込みも自動でやってくれたし、すべての写真を一括で管理してくれる便利で美しいサービスだった。

だが、別れは意外にも早く来てしまった。

2013年11月にサービス終了を発表したのだ。12月15日の閉鎖となった。魅力的なサービスだっただけにとても残念だった。
そして、このほど、このスタートアップを立ち上げ閉じることになってしまった経営者がスタートアップが体験するであろう多くのデータをgithubで公開してくれた。

これによると、最後の2013年10月の時点でのユーザー数が約8万人。有料課金ユーザーは7000人弱。

users

subscribers

売上は$40000。サーバーコスト(AmazonWebService)が$30000だったとのこと。数字の上では利益が出てるが、これに人件費や販促費、その他の諸費を入れれば完全な赤字。追加の出資も獲得できず資金ショートで閉店ガラガラ、といった感じか。

sales

aws

この他、投資家へのレポート広告と結果レポートなどは興味深い。スタートアップをやってみようという人にとって参考になるデータだと思う。これほど赤裸々に内情をオープンにするのも珍しいのではないか。しかもgithubで公開するなんてオシャレではないか。

FounderのPierre-Olivier Latour氏はAppleで働いた後、Cooliris(写真を面上に並べてみせるアプリ)の日本支部のマネージャーとして東京に2年住んでたキャリアを持つ。次のプロジェクトにも期待したいところ。

Everpixがなぜ終了したのかはこちらの記事が詳しい。

 

Websites with Safari Push Notification

updated Dec 2, 2013
 

定番サービス Web検索編

インターネットは広く世界中がつながり、世界中で日々新しいサービスが立ち上がっている。そんな宇宙のようなインターネットを、日頃ヘビーに接していない人や、特に日本では英語のサービスを敬遠してる人も多いので、今回から各サービスジャンルごとに定番のサービスを紹介して行こうと思う。

まず、誰もが必ず使うだろう検索サービスからいってみよう!

google

Googleはすでにみんな知ってる。インターネット界の巨人である。ほとんどすべてのジャンルのサービスを持ち、買収により日々拡大している。それでも、検索がメインであることに変わりはない。これまでも、そしてこれからもGoogleは検索が命。(収益のほとんどが検索連動広告だしね!)
なので、書くことも少ないけど、検索対象の設定や条件設定ができるので、賢く検索しましょう。
ちなみに、日本のYahooで検索してる人も多いだろうけど、あれもGoogle検索ですよ!

 

bing

BingはMicrosoftが開発・運営している検索サービス。Yahooが脱落した今、Googleと対抗出来る唯一の検索エンジンとなっている。正直、自分は使ってないので、良さは分からない・・・けど、もしプライバシー上の問題でGoogleを使いたくないという人がいたらこちらをおすすめする。

だが、プライバシーを気にする人なら次のサービスが最適かもしれない。

Unknown

DuckDuckGoはプライバシーを第一に考えた検索サービス。売りが「良質な検索と真の自由の両立を実現しました」ですからね!
具体的に説明するなら以下のようなこと。

  • 個人と検索語を絡めた保存はしない(トラッキングしない)
  • 検索結果のリンク先に検索キーワードを教えない
  • WOTによるサイトの評価を表示(Googleなどではブラウザ拡張で可能に)
  • 暗号化通信(SSL/HTTPS)(GoogleはSSLになってるが、Yahooなどは暗号化なし)
  • 次ページ自動ロード機能など(Googleなどはブラウザ拡張で)
  • いろんな都合(個人の趣向やサービス側の広告戦略)で検索結果が変わることはない

などなど。なかなかオススメではありますが、日本語環境では微妙な点もあるし、検索の精度はどうかなというところ。

他にも韓国のNAVERや中国のBaiduなどがある。日本製はないといってもいい状態である。残念。
とりあえず、私はGoogleを利用している。ただし、検索履歴は保存しない設定。Apple信者な今、Google依存度は減ってるし、そこまで情報を渡さなくてもいいかなという感じ。

 

メッセージングを考える

自分がインターネットを使い始めたのは1997年あたりからだ。幸運にも、父がパソコン関係の仕事をしており、PC9801時代からパソコンが家にあった。薄っぺらい5インチフロッピーのことを覚えてる人はもう少ないだろう。いや、いまとなってはフロッピー自体知らない人も増えてきてるはずだ。そのうちCDも忘れられていくのだろう。USBメモリも。そしてすべてクラウドへ。

なんて脱線から入ってきたが、メッセージングの歴史を語るには知識が少なすぎるので、自分がネットを使い始めてからのところから考えてみた。

1990年代

まず当然ながらEmailは当時(それ以前)からあり、今でもみんなが使っているメッセージング機能である。当時はインターネット・サービス・プロバイダ(ISP)が付与するメールアドレスを使用するのが定番だったが、インターネット黎明期で、ベンチャーな企業がウェブメールを始めてた時期。とても初期の時代である。自分は最初JMAILを使っていた。驚いたことに今でも存在している

そして、当時一気にブレイクしたのがICQだ。ICQはインスタントメッセンジャー(IM)で、後で述べるが、今で言うLINEのようなものだ。友達登録をすることで自分の友達一覧を作り、オンラインの友達とリアルタイムでチャットができる機能だ。自分は英語・国際に興味があったので、インターネットの使用目的の一番大きなものが海外に友達を作ることだった。そして多くの人が海外の友達とも気軽に会話するのにIM、ICQを多用していた。その後、ITの巨人Microsoftがメッセンジャー(その後Windows Live Messengerになり、今ではSkypeに統合された)をリリースしたことでICQの人気は衰えていくことになる。自分もMSNメッセンジャーに移行した。

当時は他にもメッセージングサービスがあった。IRCである。こちらは現在でも現役で多くのユーザーがいる。一般にはほとんど知られていないが、技術者などには知名度が高い。IRCはサーバーに接続し、誰でも自由に部屋を作り、気のあう仲間同士で入室しチャット出来る機能だ。とてもシンプルでテキストメッセージを多人数でやるには良い機能だった。自分はAOC仲間と使っていた。

時代は進化しモバイルの時代がやってくる。1990年代後半、携帯電話が一般化しはじめテキストメールサービスが始まった。当時、自分は中国地方でサービスしていたデジタルツーカーを契約し、スカイウォーカーというテキストメールサービスを利用していた。その後JPHONEになりVodafoneになり現在のSoftbankになる。なお、一般向けには短命に終わったポケットベルは割愛する。また当時のインターネット速度は56kbpsでNTTのテレホーダイを使うのが常識だった。懐かしい。

2000年代前半

この辺りでSoftbankがYahooBBモデムを街頭で配りまくる戦略を始め、日本は一気にブロードバンドが普及していく。例に漏れず、自分もYahooBBに加入した。ここでネット界では巨人となっていたYahooに代わりGoogleが台頭してくる。そんな激動の時代。

メッセージングはそこまで大きく変化していないが、ウェブメールが一気に普及し始める。Yahoo始め大手がそれぞれウェブメールを始めていたし、90年代終わりから世界的にはhotmailが大ヒットしていた。そしてGoogleがGmail(2004)を始めたことで、ウェブメールの地位を確立していく。大容量で使いやすく、しかも無料ということで多くの人の注目を得たがGmailは最初招待制だった。eBayなどで招待状が販売されてた記憶がある。

この時期にもうひとつ特筆すべきものといえばSkype(2003)の登場だ。基本的にはインスタントメッセンジャーだが、高音質な無料のネット電話として一気に知名度を広げ、その後ネットから通常の電話にかけられるサービスや実際の電話番号を使って電話を受けられるサービスなど、ネットの先進的な使い方が受け世界的超ヒットした。今では人気のあるサービスである。

そしてこの時期にソーシャルネットワークサービス、通称SNSが始まる。その草分けがFriendster(2002)と言われている。その後一気にブレイクしたのはFacebook(2004)、ではなく、MySpace(2003)だ。おそらく、世界で最初に1億ユーザーを達成したソーシャルネットワークサービスだと思う。飛ぶ鳥を落とす勢いでSoftbankも出資し日本での展開を始めた。が、Facebookがアプリなどでエコシステムを作り上げヒットしMySpaceは落ちていくことに。日本ではmixi(2004)がヒット。SNSにより多くの人がウェブ上でメッセージをやりとりするようになった。

携帯電話も進化していき、ただのテキストメールから長文で写真も添付出来るようになり、一般ではもっとも普及したメッセージング機能となる。

2000年代後半

この時期での一番の変革は2007年に発売されたiPhoneだ。スマートフォンの時代がやってくる。これにより、ソーシャルネットワークがより一般の人に使いやすくなっていく。いつでもどこでもSNSを見て、メッセージを送受信出来るようになる。だが、それでもまだスマートフォンはインターネットを便利に使えるという位置づけで、メッセージングの主役は一般的には携帯メールだっただろう。だが、TwitterとFacebookが一気に普及し、これらでメッセージのやりとりをする人が増えていく。

2010年代

スマートフォンの普及により、インターネットが一般の誰でも利用出来るようになり、端末やOSの進化により多くのことができるようになった。それに伴い、多くのユーザーは携帯の音声通話・テキストメッセージにいちいち課金されるのに嫌気がさしていくことになり、すべてIPでやりとりするアプリ・サービスが普及し始める。ネットユーザーでは人気を博していたインスタントメッセンジャーが、ついに一般層にまで広がり始めたのだ。欧米ではWhatsAppViberが普及し、日本などアジアではLINEが、中国ではWeChatなど。これらの登場・普及により、オンラインじゃないとチャット出来ないSkypeは後塵を拝し、モバイルアプリのサービスインが遅れたFacebookも苦戦している。Googleに至ってはGoogle+の苦戦に加えHangoutsも苦戦中。iOS同士でしか使えないAppleのiMessageも・・・これにより、携帯メールも減りつつあるのが現状のようで、特に日本では携帯メールよりLINE、が常識になってきているようだ。

ここで大きな問題が出てくる。各サービスごとで分離されており、メッセージの送受信ができないことだ。携帯メール(SMS・MMS)なら携帯番号があればキャリア関係なく世界中誰とでも送受信出来る環境が出来ていた。Emailは昔から今日までオープンな仕様の元、メールアドレスがあれば誰とでもやりとりすることが可能で安定していた。日本の携帯メール(MMSまたは独自仕様)はプロトコルは違うにせよ、ユーザーにとってはEmailに近い存在だ。だが、現在のIMブームでこれらの”リアル世界”が縮小し、小さな島が浮上してくることに。これはユーザーにとっては不幸だと思う。

そこでインスタントメッセンジャーが普及し始めている今、注目してほしいのがXMPP(旧Jabber)だ。これはEmailがオープンな仕様で世界的に共通使用されているように、インスタントメッセンジャーのオープン仕様だ。Hangoutsの前にGoogleはGoogle TalkというXMPPベースのインスタントメッセンジャーサービスをしていた。今でもYahoo MessengerやApple MacのMessages(旧iChat)アプリで利用出来る。このXMPPを各社が採用することでサービスを超えてやりとりができるようになる。現状はLINEはチャットはHTTPと独自仕様でやりとりし、音声通話はSIPを使っているらしい。

もしくは、各社がAPIを公開または提携することでサービス同士のやりとりが可能になるだろう。現状は競争し合ってる中で、提携までいく可能性は低い。さらに、オープン仕様ではないので、誰でもサーバーを立ち上げて、というわけにはいかないのが面倒なところだ。アドレスも限定されてしまう。いってみればxxx@LINEかxxx@whatsappのような形でドメイン部分がサービス企業だけに独占されることになるわけだ。自由なインターネットという意味では健康とは言えない。

今後

この後、インスタントメッセンジャーサービスも統廃合が進むはずだ。Facebookが大手IM企業を買収して勝負を決める可能性もある。このIMが一時的なブームで終わるのかEmailと並んでメッセージングの双璧となっていくのかはわからないが、ぜひともオープンなもので誰でも自由に使えるものになればと思う。

 

Feedie

Feedie

これは素晴らしいアイデアだ。Feedieは見た目は普通の写真共有サービス。でも、裏側は大いなる目的がある。まさに世界を良くするためのサービスだ。

簡単に言うと仕組みはこうだ。

まずあなたがすべきことは、アプリをインストールして、ユーザー登録をしたら、あとはレストランに行って美味しい食事の写真を撮って共有する。みんながやってることだ。これでどうやって世界を変えるかって?ここに隠されてる裏側はこうだ。

写真を撮るべきレストランは、実は決められている。どこで撮っても良いというわけではない。アプリ内で表示されるレストランだけで効果が出る。なぜかって?それは、あなたが写真を撮って共有することでお店が広告料をFeedieに支払うからだ。しかし、なぜお店はわざわざ写真を共有してもらって広告料を支払うのか。Feedieにこだわる必要があるのか。普通にお店PRの広告を打てば良いではないか。そうではない、なぜなら、Feedieに支払われた広告料の一部が貧しくて食事が足りない国や地域に支援金を送れるからだ。

ユーザーがたくさんの写真を共有し楽しむほど、お店は口コミ効果の利益が得られるし、Feedieも事業継続のための資金が得られ、最終的に食料に困ってる人たちを助けることになる。

とても素晴らしいアイデアであり、楽しいだけではなく困ってる人を助けることができるサービスだ。だが、残念なことに、まだまだ契約店は少ないし、アメリカでもほんの一部地域でしかお店がない。日本での展開はあったとしても遠い先になるだろう。それでも、こういう楽しいだけではない、社会の役に立つサービスは大きくなってほしいと思う。

最後にビデオを見てほしい。気に入ったらアプリも試してみてほしい。日本では使い物にならないだろうけど・・・

 

 

メール暗号化のGPGを試してみる

Screen Shot 2013-09-04 at 0.15.34

インターネットが普及して、みんな当たり前のようにメール(Email)を使うようになった。なかには携帯メールから使い始めEmailの仕組みなどを知らずに使ってる人も多い。(Emailの場合返信するとき元のメッセージを引用するのが常識だけど、携帯メールからの人にはうざいらしい) またウェブのことをインターネットと呼んでる人がたくさんいるので「じゃあメールはネットじゃないのか?」といつもツッコミたくなったりする。

さて、今回必要に迫られメールの暗号化をすることになった。昔S/MIMEを試したことがあるが、あっちは認証局にに署名してもらわないといけないようで、無料サービスもいくつかあるが基本的にSSLと同じように有料。個人で使うには難があった。今回挑戦したのはGnuPG。歴史をかいつまんで解説すると、もともとPGP(Pretty Good Privacy)という暗号ソフトウェアがあって、それをEmailにも使えてたけど開発は営利企業でいろいろライセンス問題もあったりしたらしく、openPGPという形でオープンライセンスで利用でき、それに準拠してるのがGnuPG(GPG)だ。

私はMac使いなのでMacでの使い方を調べたがどうやらApple Mail.appでは対応してないらしい。だが、GPGのソフトウェアをインストールすることでMail.appでGPGが使えるようになる。ということで、GPGToolsをインストールした。GPGToolsはいくつかのGPG関連ツールの集合体で、Mail.appをGPG対応させるものだったり、鍵を管理するアプリだったりする。

インストールや初期設定はサイトを見てもらえばすぐにわかる。鍵の作成はMail.appに登録しているアカウントから選択して作成出来る。
作成したら、新規メール作成画面でOpenPGPという表示が出るようになる。Fromに作成したメールアカウントを選択した場合のみだ。

gpgtools

これでメールに署名して送信出来るようにはなった。だが、まだ暗号化はされていない。暗号化メールを送るには相手の公開鍵が必要だ。暗号メールを送る前に相手から公開鍵をもらってGPG Keychain Accessに登録しておこう。また同時に自分の公開鍵も相手に渡しておこう。公開鍵はGPG Keychain Accessからアカウントを選択してExportできる。署名付きメールに鍵を添付して相手に送るといいだろう。

うまくいけば相手から自分へも暗号メールを送ってくれる。その場合 Mail.appでは

encrypted

 

という具合にメールのヘッダー表示にマークがつく。安心暗号生活に入れるゾ!

最後に言うのもなんだけど、世の中に出回ってるメールは基本的に暗号化されておらず、中間で見ようと思えば見ることが出来る。たとえば、Gmailでいえば、自分のパソコンからメール送信すると「パソコンからGmail送信サーバー」までは暗号化されてるけど、「Gmail送信サーバーから相手の受信サーバー」までは見放題。またもし相手のメールサーバーが暗号化通信に対応してなかったら「相手のメールサーバーから相手のパソコン」までも見放題となる。このとき、相手が公衆無線LANなどを利用してた場合、他人にメール内容を見られる可能性がある。

当然だけど、Gmail使ってて暗号化しなかったらGoogleにも見られ放題です。

メール暗号化、もっと普及するといいんだけどね・・・

 

 

PHPの型チェックのメモ

テストコード

$f = tempnam(‘/tmp/’,’test’);
$testme = array(
null,
true,
false,
array(),
0,
1,
0.10,
1.123,
”,
‘0’,
‘1’,
’10’,
‘0.10’,
‘1.123’,
‘1,234,567’,
‘ 1’,
‘1 ‘,
‘ 1 ‘,
‘Hello’,
new stdClass(),
fopen($f,’w’),
);

$result = array();
foreach($testme as $value){

$tmp = array();
$tmp[‘value’] = $value;

$tmp[‘isset’] = isset($value);
$tmp[‘null’] = is_null($value);
$tmp[’empty’] = empty($value);

$tmp[‘bool’] = is_bool($value);

$tmp[‘array’] = is_array($value);

$tmp[‘string’] = is_string($value);

$tmp[‘int’] = is_int($value);
$tmp[‘float’] = is_float($value);
$tmp[‘numeric’] = is_numeric($value);

$tmp[‘scalar’] = is_scalar($value);

$tmp[‘object’] = is_object($value);
$tmp[‘resource’] = is_resource($value);

$tmp[‘true’] = ($value) ? true : false;
$tmp[‘false’] = (!$value) ? true : false;

$result[] = $tmp;

}
fclose($value);
@unlink($f);

var_dump($result);

結果

array (size=21)
  0 => 
    array (size=15)
      'value' => null
      'isset' => boolean false
      'null' => boolean true
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  1 => 
    array (size=15)
      'value' => boolean true
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean true
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  2 => 
    array (size=15)
      'value' => boolean false
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean true
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  3 => 
    array (size=15)
      'value' => 
        array (size=0)
          empty
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean true
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  4 => 
    array (size=15)
      'value' => int 0
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean true
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  5 => 
    array (size=15)
      'value' => int 1
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean true
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  6 => 
    array (size=15)
      'value' => float 0.1
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean true
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  7 => 
    array (size=15)
      'value' => float 1.123
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean true
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  8 => 
    array (size=15)
      'value' => string '' (length=0)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  9 => 
    array (size=15)
      'value' => string '0' (length=1)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean true
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean false
      'false' => boolean true
  10 => 
    array (size=15)
      'value' => string '1' (length=1)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  11 => 
    array (size=15)
      'value' => string '10' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  12 => 
    array (size=15)
      'value' => string '0.10' (length=4)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  13 => 
    array (size=15)
      'value' => string '1.123' (length=5)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  14 => 
    array (size=15)
      'value' => string '1,234,567' (length=9)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  15 => 
    array (size=15)
      'value' => string ' 1' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean true
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  16 => 
    array (size=15)
      'value' => string '1 ' (length=2)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  17 => 
    array (size=15)
      'value' => string ' 1 ' (length=3)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  18 => 
    array (size=15)
      'value' => string 'Hello' (length=5)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean true
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean true
      'object' => boolean false
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  19 => 
    array (size=15)
      'value' => 
        object(stdClass)[7]
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean true
      'resource' => boolean false
      'true' => boolean true
      'false' => boolean false
  20 => 
    array (size=15)
      'value' => resource(10, Unknown)
      'isset' => boolean true
      'null' => boolean false
      'empty' => boolean false
      'bool' => boolean false
      'array' => boolean false
      'string' => boolean false
      'int' => boolean false
      'float' => boolean false
      'numeric' => boolean false
      'scalar' => boolean false
      'object' => boolean false
      'resource' => boolean true
      'true' => boolean true
      'false' => boolean false

@ Mac PHP 5.3.27