Hatena::ブログ(Diary)

public static void main

誰かが困って検索したときに助けになる話題を書いていければと思っています。

2008-07-02

[][]Mashup Award 4thの協賛企業・団体のAPIの商用利用について調べた

Mashup Awards 2017」が開催されるそうなので、現在身内で行っている勉強会でも何か出してみたいなあと思っています。

そこで気になったのは、提供されているAPIが商用利用が可能なのかということです。

アドセンスの一つでも張ろうかとか、アフィリエイトプログラムと連携して〜みたいなことを考える人は少なくないと思います。


商用・営利目的の定義は曖昧

何をもって商用利用の範囲に含むのかというのは議論の余地があります。

アフィリエイトやアドセンスを入れることは利益を得ることを目的としているので営利目的のように思うのですが、営利目的ではないと判断しているサービスも少なくありません*1。(ex.no title

厳密に言うと、コンテストとかに企業が応募するのは宣伝目的の意味合いも強いと思うので、営利目的といえば営利目的になるのかな?

参考

というわけで、APIの場合だと提供している側の判断によると思うのですが、後から「使っちゃ駄目!」といわれることを避けるために、商用・営利目的の利用を禁止しているものは避けておくのも一つのリスク回避手段ではないかと思います。

以下、商用利用可能なものとそうでないもの、及びよくわからなかったものについてまとめました。無償版と有償版があるものは無償版の場合の条件を採用しています。

ざっと見てまとめたものなので間違いもあると思いますので、もしお気づきになりましたらご指摘ください。

以下の情報は7月1日の時点の情報です。


商用可(6)


非商用のみ(15)


不明(12)・・・どちらとも明言されていない、もしくはその記述を見つけられなかったもの


その他(2)


感想

それぞれ、利用規約がおいてなかったり、記述が曖昧だったりで結構大変でした。

明確に「商用・営利目的の利用可能」とかかれていないものは全て不明にしたのですが、禁止事項に商用利用が含まれていなければ商用利用可になるのかな?

APIについても共通したライセンス体系ができると楽でいいのですが・・・。

この辺は、主催者側で各企業に確認を取ってもらって表にまとめてもらえるとうれしいですね。


作業中に気づいたこと

楽天は利用規約の第8条で

3.利用者は、ウェブサービスを使用して利用者ソフトウェアを制作する

にあたり、サイト上のウェブサービスを使用した部分においては、

楽天サイト以外のウェブサイトへのリンクを設置してはならないもの

とします。

楽天ウェブサービス: 楽天ウェブサービス規約 | ご利用ガイド

って書いてあるんですが、マッシュアップするのに結構致命的な気が・・・。

*1:特にアフィリエイト

2008-06-24

[][]Twitter API制限をお知らせするAPIを作った

[観] Twitter API 仕様書 (勝手に日本語訳シリーズ)」を読んで、TwitterのAPI制限は1時間に70回だと思っていたのですが、後輩に「ちゃんと公式ブログ読めよカス」と怒られたので確認したところ、頻繁に制限は変更されていてそのアナウンスはちゃんとブログで行われていました。

でもいちいちブログに確認しに行くのは面倒くさいので、1時間に何回アクセス可能なのかを返すAPIを作りました。

http://twitter.api.limit.oshira.se/

公式ブログの情報を元に定期的に更新されるので、API制限に悩まれている方は参考にしてください。



追記:

公式APIにAPI制限数を取得するAPIがあるみたいですね。

http://twitter.com/account/rate_limit_status(.xmlか.json

このAPI自体には利用制限のカウントをしないそうです。Twitはこれを使っているはず。

被ってしまったわけですが、まあ上記のAPIは、本家のAPIが重いよ!って人向けのミラーということでw

2007-12-15

[]Google Chart API使ってみた・・・が。

あるWebアプリケーションを作る際に、折れ線グラフを表示する必要があったので、少し前に話題になっていたGoogle Chartを使ってみました。

参考にしたページはこのあたりです。

URLにパラメータを指定するだけなので、それほどドキュメントを読まなくても簡単に表示させることはできました。

しかし、以下のようなデータを入れたときに正しく表示されなくなりました。

chd=t:10,20,40,80,100,120,240

データに100以上の値を入れても、それ以上チャートが上に行きません。

なんでだ?と思って、ドキュメントを読んだところ、チャートデータの表現方法は以下の3種類がありました。

Simple encoding

chd=s:〜と入力します。

Aが0を表し、アルファベットの大文字→小文字→数字と1ずつ増えてゆき、最大で9 = 61まで表現できます。

欠損値には、_を使います。


Text encoding

chd=s:〜と入力します。

数字でデータを入力でき、0.0から100.0まで表現できます。

欠損値には-1を使います。


Extended encoding

chd=e:〜と入力します。

AAが0を表し、ABで1、A9で61、A-で62、A.で63、BAで64で最大で.. = 4095まで表現できます。

欠損値には_を使います。



今回使ったchd=t:〜の場合は、Text encodingで100までの値しか使えなかったようです。

おそらく、URLが長くなりすぎるのを防ぐための処置だと思われます。

追記:id:wakizakaの指摘によると、Text encodingは値を%に変換して使うもののようです。どちらかといえば、円グラフとかで使うのかな?

ということで、100以上を表現するにはExtended encodingを使うしかないのですが、わざわざ値を変換する部分を書くのも面倒くさいし、4095までしか表現できないと後々不都合がありそうだったので、結局JFreeChartを使うことにしました。



ライブラリ

その後、JFreeChartに変更してからRSSを読んでいると、以下の記事を発見しました。

no title

この中でGoogle Chart APIを使うためのライブラリが紹介されていました。

これらのライブラリを使うと、値をExtended encodingにしてくれたり、細かいパラメータの設定をすることができ、その結果のURLを吐き出してくれます。

もうちょっと早く知ってれば、Google Chartを使ったかもしれないのですが・・・。

URLをいじるだけに比べ、こういったライブラリを使うと複雑なグラフの設定もできますが、手軽さのメリットがなくなってしまいますね。