Twitter4Jのプロモーション戦略 - たくさん使ってもらうためにしたこと...

Preview:

DESCRIPTION

 

Citation preview

Yusuke Yamamoto @yusuke

Twitter4Jのプロモーション戦略

たくさん使ってもらうためにしたこと

#jjug_b11#q

@yusuke

Yusuke Yamamoto @yusuke

•2007年5月~•オープンソース•たくさん使って貰いたい•営利目的ではない

Yusuke Yamamoto @yusuke

Yusuke Yamamoto @yusuke

プロモーションTwitter4Jの 戦略

たくさん使ってもらうためにしたこと

Yusuke Yamamoto @yusuke

プロモーション

Yusuke Yamamoto @yusuke

活動

プロモーション

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

活動 手段

プロモーション

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

活動 手段目的

プロモーション

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

活動 手段目的

プロモーション知名度向上

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

活動 手段目的

プロモーション

ブランド向上

知名度向上

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

プロモーション

売上最大化

知名度向上

ブランド向上

活動 手段目的

Yusuke Yamamoto @yusuke

売上最大化

広告出稿

インセンティブ

営業活動

口コミ

知名度向上 プロモーション

ブランド向上

活動 手段目的

Yusuke Yamamoto @yusuke

広告出稿

インセンティブ

営業活動

口コミ

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

ユーザー層を広げる

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

安心して使えるように

ユーザー層を広げる

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

簡単に使えるように

安心して使えるように

ユーザー層を広げる

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

簡単に使えるように

安心して使えるように

ユーザー層を広げる

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

簡単に使えるように

安心して使えるように

ユーザー層を広げる

プロモーション知名度向上

ブランド向上

活動 手段目的

ユーザー増加

Yusuke Yamamoto @yusuke

Twitter4Jのプロモーション戦略プロモーション

Yusuke Yamamoto @yusuke

Twitter4Jのプロモーション戦略

簡単に使えるように

安心して使えるように

ユーザー層を広げる

プロモーション

Yusuke Yamamoto @yusuke

プロモーション

Yusuke Yamamoto @yusuke

プロモーション•とにかく知って貰う‣ブログ

Yusuke Yamamoto @yusuke

プロモーション•とにかく知って貰う‣ブログ

Yusuke Yamamoto @yusuke

プロモーション•とにかく知って貰う‣Twitter

Yusuke Yamamoto @yusuke

プロモーション•とにかく知って貰う‣Twitter

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト: javanews.jp

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト: TheServerSide

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト: digg.com

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト: DZone.com

Yusuke Yamamoto @yusuke

プロモーション•ニュース系サイト: マイナビ

Yusuke Yamamoto @yusuke

プロモーション•見つけて貰う•名前を分かりやすく‣Twitter + Java = Twitter4J

Yusuke Yamamoto @yusuke

プロモーション•高いググラビリティ

Yusuke Yamamoto @yusuke

ユーザー層を広げる

Yusuke Yamamoto @yusuke

ユーザー層を広げる

•言語

•プラットフォーム

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ‣手段: 言語を増やす

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ‣手段: 言語を増やす

•プログラミング言語

•自然言語

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ‣手段: 言語を増やす

•プログラミング言語

•自然言語

{ Java.NetCRubyPython

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ‣手段: 言語を増やす

•プログラミング言語

•自然言語

英語中国語ヒンディー語....日本語{ {

Java.NetCRubyPython

Yusuke Yamamoto @yusuke

対象言語を増やす•ユーザー: プログラマ‣手段: 言語を増やす

•プログラミング言語

•自然言語

{ Java.NetCRubyPython

英語中国語ヒンディー語....日本語{

Yusuke Yamamoto @yusuke

英語対応•マルチリンガルサイト‣http://twitter4j.org/en/ : 英語

‣http://twitter4j.org/ja/ : 日本語

Yusuke Yamamoto @yusuke

実装• jsp + サーブレットフィルタ• jspのファイル内に英語と日本語を混ぜて書ける

$[ja:日本語]$[en:English]

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

• 1.4.x

• 5.0

• 6.0

• 7.0

{リリース当時サポート

Yusuke Yamamoto @yusuke

Java 1.4.xサポートの難しさ•拡張for文なし•Genericsなし•アノテーションなし

•StringBuilderなし•Enumなし

Yusuke Yamamoto @yusuke

Java 1.4.xサポートの難しさ•拡張for文なし•Genericsなし•アノテーションなし

•StringBuilderなし•Enumなし

-target jsr14 {

Yusuke Yamamoto @yusuke

Java 1.4.xサポートの難しさ•拡張for文なし•Genericsなし•アノテーションなし

•StringBuilderなし•Enumなし {使わない努力

-target jsr14 {

Yusuke Yamamoto @yusuke

参考情報

http://www.slideshare.net/yusukey/java7-8530853Java7シンタックスで レガシーコードを快適メンテナンス

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

• 1.4.x

• 5.0

• 6.0

• 7.0

{リリース当時サポート

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

• 1.4.x

• 5.0

• 6.0

• 7.0

{リリース当時サポート-target jsr14ではJava 7互換性に問題あり

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

• 1.4.x

• 5.0

• 6.0

• 7.0{次期バージョンのサポート対象

-target jsr14ではJava 7互換性に問題あり

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

‣Google App Engine

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

‣Google App Engine

‣Android

Yusuke Yamamoto @yusuke

対象プラットフォームを増やす•プラットフォーム‣ Java

‣Google App Engine

‣Android

• 「対応しています」• テストはしてない!• 報告があり次第対応

Yusuke Yamamoto @yusuke

Android対応•AndroidはJavaジャナイ•両対応ライブラリは注意が必要

http://www.slideshare.net/yusukey/android-6595931

Yusuke Yamamoto @yusuke

安心して使える

Yusuke Yamamoto @yusuke

使う側から見て安心できるOSS

•一般的なライセンス•開発がアクティブ•コミュニティがアクティブ•ロードマップが明確•プロジェクトに設定しやすい

Yusuke Yamamoto @yusuke

一般的なライセンス•OSI公式ライセンス•緩め(感染性がない)

‣リリース当初: BSD

‣現在: Apache License 2.0

Yusuke Yamamoto @yusuke

開発がアクティブ•頑張る•Twitter APIの追加変更に即対応

Yusuke Yamamoto @yusuke

コミュニティがアクティブ•MLで素早く親切丁寧に対応

Yusuke Yamamoto @yusuke

コミュニティがアクティブ•MLで素早く親切丁寧に対応

No GGRKS!

Yusuke Yamamoto @yusuke

ロードマップが明確• JIRAで課題、ロードマップ公開

Yusuke Yamamoto @yusuke

•プロジェクトに設定しやすい•古典的なライブラリの使い方‣zip/tgzをダウンロード・展開

‣ jarをlibsディレクトリに配置

‣クラスパスに通す

Yusuke Yamamoto @yusuke

•プロジェクトに設定しやすい•モダンなライブラリの使い方•プロジェクトの依存を明記• 対応ツール• Maven / Ivy / Grape / Gradle / Buildr / SBT

• Maven Central Repoよりダウンロード

• 自動的にクラスパスに追加

Yusuke Yamamoto @yusuke

簡単に使える

Yusuke Yamamoto @yusuke

簡単に使えるOSS•サンプルコードが充実•ドキュメントが充実•ライブラリ依存関係•シンプルなパッケージ構成•容易なトラブルシューティング

Yusuke Yamamoto @yusuke

サンプルコードが充実•全メソッドにサンプルコード• .cmd / .sh で簡単に実行できる

Yusuke Yamamoto @yusuke

ドキュメント•多くのOSSで問題‣ドキュメンテーションのメンテナンスコスト

Yusuke Yamamoto @yusuke

ドキュメント•Twitter4Jのフォーカス‣簡単なサンプルコード例‣設定方法‣開発に参加する方法

Yusuke Yamamoto @yusuke

ライブラリ依存関係•依存関係があると敷居が高い‣クラスパスが分からない開発者• NoClassDefFoundError!

‣他の依存ライブラリと衝突

Yusuke Yamamoto @yusuke

ライブラリ依存関係•Twitter4Jはライブラリ依存なし‣twitter4j-core.jarをクラスパスに通すだけ

Yusuke Yamamoto @yusuke

ライブラリ依存関係•がんばって自作した‣OAuth

‣BASE64

‣HttpClient

Yusuke Yamamoto @yusuke

ライブラリ依存関係•パッケージを変更して内蔵‣org.json.* → twitter4j.interna.org.json.*

Yusuke Yamamoto @yusuke

ライブラリ依存関係•あれば自動的に使う‣ロギング• Log4j / Commons Logging

• SLF4J

• LogBack

• JUL(java.util.logging.*)

Yusuke Yamamoto @yusuke

シンプルなパッケージ構成• import twitter4j.* で利用可能•内部実装は twitter4j.internal.* に配置

Yusuke Yamamoto @yusuke

容易なトラブルシューティング•例外スタックトレースの工夫‣バージョンを織り込む

twitter4j.TwitterRuntimeException: A JSONArray text must start with '[' at 2 [character 3 line 1]Relevant discussions can be on the Internet at: http://www.google.co.jp/search?q=610d24cf or http://www.google.co.jp/search?q=03587c2fTwitterException{exceptionCode=[610d24cf-03587c2f 2efc4644-56189413], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null,

version=2.2.5}

Yusuke Yamamoto @yusuke

容易なトラブルシューティング•例外スタックトレースの工夫‣検索用コードを織り込む

twitter4j.TwitterRuntimeException: A JSONArray text must start with '[' at 2 [character 3 line 1]Relevant discussions can be on the Internet at:

http://www.google.co.jp/search?q=29f6cd28 http://www.google.co.jp/search?q=00ded0d8TwitterException{exceptionCode=[610d24cf-03587c2f 2efc4644-56189413], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.5}

Yusuke Yamamoto @yusuke

容易なトラブルシューティング•例外スタックトレースの工夫‣検索用コードを織り込む

Yusuke Yamamoto @yusuke

#q

ブログTwitterニュースサイトググラビリティの高い名称

プロモーション言語プラットフォーム

ユーザー層を広げる

一般的なライセンス開発がアクティブコミュニティがアクティブロードマップが明確Maven対応

安心して使えるサンプルコードが充実ドキュメントライブラリ依存関係シンプルなパッケージ構成容易なトラブルシューティング

簡単に使える

#ありがとうございました

Recommended