Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
英文難易度の低いニュースを集め
たWebアプリ- Twien

Yokohama.pm #10
@dokechin
自己紹介(dokechin)
• たくさんの人を喜ばす(Web)アプリを作りたい人。
(@masuidriveさんのwri.peのようなもの)
• 勉強会の懇親会費くらいはマネタイズしたいと願ってい
る
自己紹介(dokechin)
Twienとは(What?)
http://twien.dokechin.com
アメリカ、カナダ、イギリス、オーストラリアのニュース
サイトから英文難易度の低い順に、128の記事を厳選表
示するキュレーションサイト
どうやって作った
(How?)
動作の仕組み
URL収集

解析

表示

• ツイッターストリーム
• ニュースサイトのRSS
• コンテンツの英文難易度を算出

• 1日1回集計(128記事を選ぶ)
• Mojolicious+Embedly API
使用CPANモジュール
AnyEvent::TwitterStream

XML::Feed
Data::Deduper

Qudo::Parallel::Manager
HTML::ExtractContent
Lingua::EN::Fat...
ノウハウ1
ロードアベレージ問題
ロードアベレージ問題
• ワーカープロセスを起動後しばらくすると、ロードアベ
レージが上昇。
Devel::NYTProf
• Qudoのワーカープロセス起動時に

• CTRL+Cで停止させたあとに、解析。

• HTML::ExtractContent::extractの処理がブロッキングされていた
• ログをみたところ、HTML:...
ノウハウ2
Mojoliciousで国際化
Mojolicious::Plugin::I18N
Web.pm
package Twien::Web;
use Mojo::Base 'Mojolicious';
use Mojolicious::Plugin::I18N;
sub startup {
my $self = shift;
$s...
ja.pm
package Twien::I18N::ja;
use base 'Twien::I18N';
use utf8;
our %Lexicon = (
'Title' => 'Twien - 中学3年生以下の難易度の英文ニュー
スを...
テンプレートファイル
% layout 'bootstrap';
% title l 'Title';
<h1><%=l 'Title' %></h1>
ノウハウ3
アプリ認知の問題
プレスリリースに挑戦
ゆーすけべーさんのブログを参考に、ITメディア20社程度
に電子メールを送る
見に来てくれている

メールを送った日
1社も取り上げられない
• インパクトのUXを提供できていない(客観的評価)
学んだこと、思うこと
・広大なCPANモジュールとPerlのアウトブット文化のお
かげで割と簡単にWebアプリをつくることができる(感
謝)
・Webアプリは作っても、それだけでは、認知されない。
プレスリリースなどは必須。
・99,9%は失敗...
ご清聴ありがとうござい
ました
英文難易度の低いニュースを集めたWebアプリ  twien
Upcoming SlideShare
Loading in …5
×

英文難易度の低いニュースを集めたWebアプリ twien

yokohama.pm #10 のLTスライド

  • Login to see the comments

英文難易度の低いニュースを集めたWebアプリ twien

  1. 1. 英文難易度の低いニュースを集め たWebアプリ- Twien Yokohama.pm #10 @dokechin
  2. 2. 自己紹介(dokechin) • たくさんの人を喜ばす(Web)アプリを作りたい人。 (@masuidriveさんのwri.peのようなもの) • 勉強会の懇親会費くらいはマネタイズしたいと願ってい る
  3. 3. 自己紹介(dokechin)
  4. 4. Twienとは(What?)
  5. 5. http://twien.dokechin.com アメリカ、カナダ、イギリス、オーストラリアのニュース サイトから英文難易度の低い順に、128の記事を厳選表 示するキュレーションサイト
  6. 6. どうやって作った (How?)
  7. 7. 動作の仕組み URL収集 解析 表示 • ツイッターストリーム • ニュースサイトのRSS • コンテンツの英文難易度を算出 • 1日1回集計(128記事を選ぶ) • Mojolicious+Embedly API
  8. 8. 使用CPANモジュール AnyEvent::TwitterStream XML::Feed Data::Deduper Qudo::Parallel::Manager HTML::ExtractContent Lingua::EN::Fathom Teng Mojolicious Teng
  9. 9. ノウハウ1 ロードアベレージ問題
  10. 10. ロードアベレージ問題 • ワーカープロセスを起動後しばらくすると、ロードアベ レージが上昇。
  11. 11. Devel::NYTProf • Qudoのワーカープロセス起動時に • CTRL+Cで停止させたあとに、解析。 • HTML::ExtractContent::extractの処理がブロッキングされていた • ログをみたところ、HTML::ExtractContentにバイナリ(jpgなど) を食わせていた
  12. 12. ノウハウ2 Mojoliciousで国際化 Mojolicious::Plugin::I18N
  13. 13. Web.pm package Twien::Web; use Mojo::Base 'Mojolicious'; use Mojolicious::Plugin::I18N; sub startup { my $self = shift; $self->plugin(I18N => {namespace => 'Twien::I18N'}); ・・・ }
  14. 14. ja.pm package Twien::I18N::ja; use base 'Twien::I18N'; use utf8; our %Lexicon = ( 'Title' => 'Twien - 中学3年生以下の難易度の英文ニュー スを集めたサイト(1日1回更新)', ); 1;
  15. 15. テンプレートファイル % layout 'bootstrap'; % title l 'Title'; <h1><%=l 'Title' %></h1>
  16. 16. ノウハウ3 アプリ認知の問題
  17. 17. プレスリリースに挑戦 ゆーすけべーさんのブログを参考に、ITメディア20社程度 に電子メールを送る
  18. 18. 見に来てくれている メールを送った日
  19. 19. 1社も取り上げられない • インパクトのUXを提供できていない(客観的評価)
  20. 20. 学んだこと、思うこと ・広大なCPANモジュールとPerlのアウトブット文化のお かげで割と簡単にWebアプリをつくることができる(感 謝) ・Webアプリは作っても、それだけでは、認知されない。 プレスリリースなどは必須。 ・99,9%は失敗かもしれないが、ノウハウは残るので ヒットするまで諦めない(次回開発は加速される)
  21. 21. ご清聴ありがとうござい ました

×