ラベル Instagram の投稿を表示しています。 すべての投稿を表示
ラベル Instagram の投稿を表示しています。 すべての投稿を表示

2012年10月7日日曜日

コンデジ Nikon COOLPIX P7100を購入してみた

ガジェット好きにもかかわらず、今までカメラにまったく興味がありませんでした。

しかし、なぜか突然、ファインダー付きのコンパクトデジタルが欲しくなり、いろいろ迷った結果とうとう買ってしまいました。

それが、この Nikon COOLPIX P7100 です。
普通のコンパクトカメラと違い、メカメカしい、いかにも「カメラ!」という感じの佇まい。知らない人が見たら一眼と思ってしまいそうです。

このボタンやダイヤルの多さ!まだまったく使いこなせません。

なぜちょっといいカメラが欲しくなったかというと、おそらくInstagramの影響で、露出や絞りで演出した写真の面白さ(Instagramのは似せた加工ですけどね)に触れてみて、もっと細かく自分の思い通りに写真を撮ってみたくなったからです。

写真加工のソフトもいろいろ試してはきましたが、やっぱり元からカッコいい写真が撮りたくなっちゃんたんですねえ。テクはまだ全然ないですけど。

一眼も考えたんですが、大きくて重いのはたぶん持ち歩かなくなっちゃうし、ミラーレスは老眼には使い辛いんです。iPhoneで写真を撮る時も、顔から離さないと画面がぼやけて見えないのですよこの頃は^^;

という訳で、ファインダー付きで、マニュアル操作ができて、画質が良い、コンパクトデジカメ、に絞って探した結果が、購入したNikon COOLPIX P7100と、Canon PowerShot G12でした。

Nikon COOLPIX P7100に決めた理由は、まだ新品が購入できたことが大きいです。G12はもう生産終了で後継機はかなりお高いので私には手が出ませんでした。
Nikon COOLPIX P7100も後継機P7700が出ているのですが、これはファインダーが無くなってしまったので今回の候補には入りませんでした。

これからいろいろ試してみて、写真の腕を上げていこうと思います;

2012年10月6日土曜日

世界のInstagram写真をみられるPlacetagramをはじめました。

新サービスはじめました。

その名は、Placetagram

Place + tag + Instagram で、Placetagram・・・苦笑

Placetagramは世界中の公開されているInstagram写真をみることができます。


位置情報タグが付いているInstagramのメディアを、Google Mapsから逆ジオコーディングした位置情報をキーにして取得します。

Instagram API を利用して、地図上のどこでもみたい場所をクリックすれば、その周辺の最新写真がすぐみえる、気軽に世界旅行気分が楽しめるサイトを作りました。

地図を直接クリックして指定するだけでなく、地名や有名観光スポット・建物の名前などで検索することもできます。

どうそ、お気軽にお楽しみください。




2012年8月21日火曜日

JSONViewが便利すぎる

InstagramのAPIを使って、OAuth認証を通してブラウザ経由でJSON形式のデータを取得するところまでまでは、とりあえずできました。

取り急ぎJSON形式のまま開いて見てみると

・・・かなり長いです。

ざーっと見ましたが、何がなんだかわかりません・・・

中にあるurlを適当に見繕ってブラウザにぶっ込んでも、当然のようにエラーになります。

うーん、中身を確認するにはPHPかJaveScript書かなきゃいけないんかなあ、大変だなあ、、と思いながら、いろいろ調べてみたところ、なんかすごい便利そうなChrome拡張を見つけました。

それが、JSONViewです。

もとはFireFox用だったみたいですが、Chrome版もばっちり動いてます。

上記のリンクから拡張を追加して、その後JSONをChromeに読ませると勝手にパースしてインデントまでしてくれちゃいます。
日本語が化けるというエントリもありましたが、自分の環境では、ちゃんと表示できてますね。無問題。

これで各APIで取れるデータがどんなもんなのか、事前にお試しで取得してみてさくっと確認できるようになりました。
簡単なプログラムでさえ自分ではほとんど書けない状態の私には、作業効率化のために非常に心強い拡張機能です。

作者さん、ありがとう!

2012年8月19日日曜日

Instagram API Access Token 取得にエラーがでたら

InstagramのAPIを使ってアプリをつくるために、Access Tokenを取得しました。
途中ちょっと手間取ったので、備忘録としてエントリしておきます。

さて、単に写真だけをひっぱってくるくらいであればAccess Tokenは必要ないみたいですが、どうせならフォローしている人の写真をソートしたり、いいねしたりもできるようにしたいので、後でバタバタするより先に取ってしまうことにしました。

※以下は、Developer登録とClient登録が済んでいて各ID取得済みである前提で記載しています。まだの方はこちらのエントリの真ん中辺りを参考にしてください。

Access Token取得方法はAPIのドキュメントに詳しく書いてありますが、手っ取り早く日本語訳のほうを参考にさせていただきましょう。

ステップ1.ユーザに認証用URLを表示する

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
この時点で、ログインページを表示し、アプリケーションにデータへのアクセス許可を求める確認ページが表示されます。

ステップ2.Instagramサーバからリダイレクトされる

ユーザがログインに成功し、アプリケーションにアクセス許可を与えると、Instagramサーバがredirect_uriにcodeパラメータを付加して呼び出します。codeパラメータで渡された値は、ステップ3で用います。
http://your-redirect-uri?code=CODE

ステップ3.access_tokenを要求する

ステップ2でcodeパラメータを受け取ることができました。この値を使い、指定したユーザ用のaccess_tokenを受け取るためのデータ交換をおこないます。データ交換は、access_token用URLにcodeの値と併せて、いくつかのアプリケーション認証情報をPOSTで送信するだけのことです。必要なパラメータを以下に示します。

  • client_id クライアントID
  • client_secret クライアントシークレット
  • grant_type 現在、"authorization_code"のみ指定することができます。
  • redirect_uri 認証リクエストを送信した際にredirect_uriで指定した値です。注意: この値は、認証リクエストで指定した値と完全に一致していなければなりません。
  • code 認証ステップで受け取ったcodeパラメータの値

access_token要求は、たとえば次のようになります。
curl \
    -F 'client_id=CLIENT-ID' \
    -F 'client_secret=CLIENT-SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=YOUR-REDIRECT-URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token
呼び出しが成功すると、OAuthトークンを整形したデータが返されます。

ということで、ユーティリティからターミナルを起動して、上記のコマンドを実行します。最後の一行を入れてreturnキーを押して、2秒程待つと・・・
あれ?エラーです・・・orz
念の為、Instagramから一度ログアウトして、再度ステップ1から再開しCODEを再取得して試してみましたがまたエラーです_| ̄|○
返ってくるメッセージを見ると400エラーのようですが、後ろに"No matching code found"とかも書いてます。うーん、CODEはコピペだから間違う筈ないんだけどなあ。
悩んだときはドキュメントに立ち戻ってみます。
すると上記の下にこんな記述がぁっ!

“サーバ機能を持たないアプリケーション(たとえば、完全に独立したJavaScriptアプリケーションなど)を作成する場合は、上記のステップ3を実行することはできません。つまり、access_tokenを受け取ることも、クライアントシークレットを渡すこともできません。クライアントシークレットは、アプリケーションの管理下にないデバイスに保存することは絶対に避けなければなりません。では、access_tokenを受け取るにはどうしたらいいのでしょう?OAuth 2.0仕様を策定した賢い人たちは、この問題をちゃんと予期しており、暗黙の認証フローを用意したのです。”

あらら、なんか怒られたみたいです。
え、でもcurlってFTPサーバーみたいに動くコマンドなんじゃないの?なんで??
という疑問は素人が考えても仕方がないんで取りあえず横に置いておいて、その「暗黙の認証フロー」を試してみることにします。

クライアントサイド(暗黙の)フロー

ステップ1.ユーザに認証用URLを表示する

https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
この時点で、ログインページを表示し、アプリケーションにデータへのアクセス許可を求める確認ページが表示されます。明示的フローの場合と違い、response_typeパラメータの値が"token"であることに注意してください。

ステップ2.URLフラグメントによりaccess_tokenを受け取る

ユーザがログインに成功し、アプリケーションにアクセス許可を与えると、Instagramサーバがredirect_uriにURLフラグメントとしてaccess_tokenを付加して呼び出します。次のようになります。
http://your-redirect-uri#access_token=ACCESS-TOKEN
URLフラグメントのaccess_token部分を取り出せばおしまいです。

あっさり、上記の方法でAccess Tokenが取得できました・・・

同じ様にエラーでAccess Tokenの取得ができない方は、クライアントサイドフローを試してみて下さい。

Instagram Developer に登録してみた

ちょっと思うところあって、InstagramのAPIをいじってみようと、Developer登録してみました。

APIに関していろいろと参考になりそうなブログを探してみたのですが、あまり最近のは見当たりません。大体2011年のAPIが公開されたあたりのエントリです。
公開されてからあまり大きな変更がされていないということですかね?
FacebookのGraph APIを使う時に、しょっちゅう仕様が変わるので設計に悩んだことがあるので、あまり変更がなさそうなのはいいですね。
とはいえ、InstagramはそのFacebookに買収されたので、今後はどうなるかわかりません。ちょっと心配です…

閑話休題。
APIをいじるには、Developer登録をした後にApplicationの登録をします。
ここまでで参考になったのはここここです。ありがとうございます。

まだぜんぜんいじっていないので、感想などはまた改めて。