Upload
yusuke-yamamoto
View
3.511
Download
2
Embed Size (px)
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対応
安心して使えるサンプルコードが充実ドキュメントライブラリ依存関係シンプルなパッケージ構成容易なトラブルシューティング
簡単に使える
#ありがとうございました