Posted at

クソアプリアドベントカレンダー2016 20日目やりました

More than 1 year has passed since last update.


今年もクソアプリつくったよ

自身が立ち上げているクソアプリアドベントカレンダー2016の20日目のアプリを作りました。

レポートが1日遅くなってしまいましたが、制作記録を書きたいと思います。


何を作ったのか

http://hokanona.com

文章内の名詞・動詞を類語に置き換えするウェブアプリです。

流行りモノから何をやるか連想して、取ってつけたような名前にしたら一体何なのかが大変にわかりづらいけどクソアプリだから気にしない。

あと、元ネタは観たことがありません。パクってるのにリスペクトがなく本当すみません。


どういう動きをするのか

文章をこんな感じで変換します

君の前前前世から僕は君を探し始めたよ



殿様の前前上世から下郎は国主を探し序盤たよ

こんなテンションで探されても見つからなさそう。そりゃ不器用な笑い方にもなるわ。


このクソアプリの処理の流れ


  1. 変換元の文章を受けとる

  2. 受けとった文章をmecabで形態素解析

  3. 単語単位で分割し、名詞・動詞を対象に類語を検索


    1. 類語を辞書に問い合わせ。データがなければweblio類語辞典からスクレイピングして取得


      1. 類語が見つかればキャッシュしておく

      2. 類語が見つからなければ類語無し名詞・動詞として単語自身を類語としてキャッシュしておく





  4. 単語に対応する類語と置き換え。単語に対して複数の類語候補がある場合はランダム選択

ほか、他所様へのスクレイピングという手段を使ってしまっているので、リクエスト速度を調整したり、受け付ける文章の文字数自体を50文字までに制限したりしています。

こういう仕組みなので単に1個の単語だけ入力すると類語検索ツールとして使えます。


つくるとき参考にした記事まとめ Qiitaが神すぎる

今回のアプリ、ほとんどがQiitaのナレッジから出来上がってます。参考にした記事をまとめておきたいと思います。

全部神記事でした、参考にさせていただいた記事の作成者様ありがとうございました。八百万の神ってこういうことですね。


MeCabのインストール

mecab をcentosにyumでインストール

http://qiita.com/abgata20000/items/c6c15839c25472273f3e


nodeで楽にスクレイピングを実装する

Node.jsのスクレイピングモジュール「cheerio-httpcli」が第3形態に進化したようです

http://qiita.com/ktty1220/items/72109a6419e23a26002c

関連: Node.js用のスクレイピングモジュール「cheerio-httpcli」の紹介

http://qiita.com/ktty1220/items/e9e42247ede476d04ce2


MongoDBのインストールと使い方

Node.js+Express+MongoDBでREST APIをつくる

http://qiita.com/itagakishintaro/items/a1519998a91061cbfb1e


JSでのパラレルな処理の方法

[JavaScript] 非同期処理のコールバック地獄から抜け出す方法

http://qiita.com/LightSpeedC/items/7980a6e790d6cb2d6dad


お名前.comで取ったドメインを設定する方法

お名前.com で取ったドメインを使う

http://qiita.com/megane42/items/df84f87c0bdcdd015eb6


総括

Qiitaを調べながら作ればクソアプリが半日足らずで作れました。Qiita最高。