khondalitのブログスマートフォン用の表示で見るkhondalitのブログ2015-12-10WebサービスをRailsで1週間程度で作ってみた:技術編1さて、前回の続きです。khondalit.hatenablog.com今回はスクレイピングに必要なYoutube周りの話となります。作ったサービス落語の動画をまとめています。開発したいものは前回に決めているので、まずは技術の選定から。フレームワークSinatoraとか他にも使ったことのあるフレームワークはいくつもありますが、仕事の延長もあってRailsを選択しました。このレベルだとちょっとフルスタックすぎる気もしますが、gemもRails前提が多いですしね。Ruby以外のフレームワークもありですが、Ruby以外だと過去互換性が弱い言語やセキュリティがアレだったりしますし...個人開発ですと、なるべくメンテが少ないほうが嬉しいです。仕事だと毎日時間を使えますけど、そこまでコストは掛けれないですし。Ruby、Rails界隈はアップデートが多いのですが、このサイト自体は機能的にかなり少ないですしテストを書く余裕もあるかと思います。DataBase個人だとPostgreSQLを使うことも多いのですが、今回はMySQL。これはレンタルサーバーとかまで考えるとまだまだMySQLが強いですしね。サーバはじめはHerokuを考えていましたが、Sqaleを選択しました。Herokuは制限が多かったりしますが、Sqaleは日本語というのも大きな理由。Sqaleはメール使えないとかメモリが少ないとかありますが、まあさほど大きくないサービスですしこれで良しとしましょう。MySQLを選択したのもSqaleも影響しています。個人開発だとこれぐらいのサーバーで動作するのを前提にアイディアを出したほうが良いかもしれません。風呂敷を広げても完成しませんし、制限がある前提で考えるぐらいで調度良かったです。Gem今回のメイン機能はYoutubeAPIです。YoutubeAPIを使用するGemはyoutube_itが有名だと思います。github.comただ最終更新が1年以上前で、現状のYoutubeAPIでは使い物にならないようです。代わりのGemを探していた所Ytというのを見つけましたので、ありがたく採用することに。ConsoleからYoutubeDataAPIのキーを所得しておきましょう。検索も非常に簡単です。video.idendIDから取得IDが分かっていれば動画単体でも取得できます。video.description詳しい使い方はこちらからfullscreen.github.ioこれでYoutubeからスクレイピングする準備が整いました。あとは、落語家名なり演目名なりでひたすら検索、DBへの保存を行えば良いでしょう。今回大変だったのはyoutube_itが死んでいたことです。このGem数年前に試しに使ってみて問題がなく普通に使えていたのですが、久しぶりに使ってみるとまったく動かず対応するのにそれなりに時間を使いました。Gemの便利な所でもあり不便な所でもありますね。21:58WebサービスをRailsで1週間程度で作ってみた:技術編1Tweet広告を非表示にするもっと読むコメントを書く2015-12-08WebサービスをRailsで1週間程度で作ってみたここ半年以上やる気が出ず、仕事はやることやって定時で帰宅という状況でした。なんとかプライベートでのやる気も戻ってきましたので、長年やりたかった個人でのWeb開発をしてリリースができました。実は去年ぐらいにはある程度まで完成していたアプリがあります。マスターデータだけで数GBという結構大き目のデータを扱う予定でしたが、gemが開発停止になっていたり、時間ややる気の問題で開発停止に追い込まれました。やる気が消えた原因が2つありまして、1つがgemの開発停止。gemは仕方がないですが、デザインが本当に辛かったです。私自身はもうプログラムで10年以上はお給料を頂いていますので、プログラム自体はなんとでもできる自信はあります。デザインは本当に辛いです。Bootstrapを使っても非常に出来が悪い物しか出来ないですし、そもそもパーツの配置すら難しいという自分の低い技術レベル。Bootstrapだと大分楽ではありますが。公開されているテンプレートを探してもTOPページ等の特定のページのみで他のページも考えるとちぐはぐになって統一感が出せないし...。最近ですとスマホ対応も求められてそれも辛い所です。仕事が忙しくなり開発はめでたく中止となりました。開発は停止したものの、コンセプトは悪くないなぁとは思っていまして、実際ヒットしなくても自分自身で欲しいサービスではあります。嘆いていてもしかたがありませんしそこで、練習台になるサービスを作ることとしました。今回のテーマはWebAPIと落語。テーマの選択基準はこのあたりでしょうか。落語のマスターデータ自体はさほど多くはない(はず...)リリース優先、年内リリース目標、可能ならRubyKaigiまでに!Webサービス作ってみた系だと、エロ系が割と定番ですがさすがに同じのばかりですと面白くないですし、ライバルが少ない方が良いかもですし...サイトURLはこちらになります。http://sqale.yoseba.org/開発やこれからのことについては別途投稿するつもりです。最近開発停止していたとある個人プロジェクトを開発中で忙しかったりします。khondalit.hatenablog.comさて、以前このエントリーで紹介したsophosの続報です。Macだと軽かった(と感じた)sophosをLinuxに入れたのですが、今日は異常に重さを感じtopしてみると、sophosが暴走しておいました。topの結果がこのようになっています。savscandがsophosのスキャンプロセスです。savscand出たばかりですし、まだまだという所なんでしょうか。pkillして逃げておきました。/opt/sophos-av/bin/を覗いてみるとsavupdateというのを発見、どうやらアップデートを行うもののようです。sophos自体なのかウィルス定義なのかよく分かりませんが、ひとまず実行してみると/opt/sophos-av/以下の日付が色々変更されている様子。sophos自体のアップデータのようです。これで様子見でしょうか。Linux自体にはアンチウイルスソフトが少ないので、sophosには期待しているので頑張って欲しいですね。便利なRails上で動かすJavaScriptのエンジン。Rails4.2系になっても相変わらずの環境設定の急所ですね。久しぶりに個人Mac上で環境構築すると、相変わらずMacだと引っかかりました。検索して出てくるようにインストールのコツはtherubyracerとlibv8のバージョンの組み合わせを最適にすること。一言で言えば簡単なのですが、正しい組み合わせなど分からずちょっと環境が変わると同じGemfile.lockでもエラーとなる曲者ですね。install完了!ちなみに、今回の環境は以下のとおり。3.16.14.0環境構築にハマっている人はこの方法だといけるかも。sav-linux-free-9.9.tgzがダウンロードされます。install.shあとは選択にしたがって進めていきます。/opt/sophos-av/にインストールされるようです。インストールが終了するとsavdとsavscandが動いています。savscand/etc/init.d/にもそれらしき起動スクリプトがインストールされています。savsav-protect*sav-rms*sav-web*Mac等とは違いメニューが無いようですがまあ問題ないのでしょう。見た感じ、ログはどうやら/opt/sophos-av/log/に出るようです。Macでは軽くて気に入って使ってますので、当分使ってみようと思います。08:31軽いsophosのLinux版が出たので早速試してみるTweet広告を非表示にするもっと読むコメントを書く2015-02-15nanocでsitemapを自動生成するnanocについては以前書いていた記事が2012/1/24なので3年ぶり?でしょうか。そもそも色々忙しすぎてこのサイト自体更新してないわけですが、最近は多少時間が取れるようになってhttp://linuxc.infoを更新を少しづつしています。toolを入れてsitemapが必要らしいので調べるとnanocで自動生成出来るとの事で早速試してみました。buildergemでbuilderが必要なのでインストールしてください。helperのXMLSitemapを使用するnanocにはhelperという追加の機能があります。nanoc自体がデフォルトで幾つかのhelperを持っていますが、XMLSitemapはこのデフォルトのhelperです。lib/default.rbに以下を追加します。Nanoc3::Helpers::XMLSitemapURLの設定config.yamlにURLを追加します。nanocはURL自体は知らなくても問題ないですがsitemapを作る場合には必要です。自分の場合はhttp://linuxc.infoにします。この時注意事項として最後のスラッシュ'/'は必要ありません。なってちょっとださいです。http://linuxc.infocontent/sitemap.xmlcontent/sitemap.xmlを作ります。この内容をそのままコピペで。%>RulesRulesにsitemapを作るルールを追加します。既存のcompile、routeよりも前に追加する必要があるようです。'.xml'endcompileあとはいつもの様にcompileしてエラーがでなければOK。作成されたsitemapをアップロードしましょう。ちなみに、content以下には存在しているけど公開していないコンテントがあれば、これもsitemapに追加されるので注意!output/sitemap.xmlを自分で編集して削除するのを忘れずに。仕事しているとドキュメント大事ですよね。いつ人の移動があるか分からないし、新しく追加されても忙しいと説明する時間もなかったり。いう管理しているのが問題なのですがそれはそれとして、やぱっぱりドキュメントはあるに越したことはないです。いうことで、仕様書とかは別にしても現状の成果物に対してのドキュメントの自動化を行っています。ドキュメントを作りたいけど忙しい方たちはこれを行うだけでも大分楽になるかと。YARD/RDoc昔からよくあるソースコードから作るドキュメント。DoxygenやJavaDocなどのRubyバージョンですね。適切なコメントを書くと、クラスとそのメソッドのドキュメントを作成してくれます。Rdocは便利なのですが、YARDの方が一貫性があるなどより良い感じですので、こちらを採用しています。GitHubDataBaseからER図を自動生成してくれます。これがあると無いとでは大違いですね。GitHubこちらはDatabaseからテーブルとカラムの一覧をjsonで出力してくれます。Railsのダメなところはtable宣言を見たい場合は、Databaseを直接見るぐらいしか方法がないことです。migrationは運営していくにつれて増加しますしカラムの変更を行うと複数のmigrationファイルが増えていって理解不可能、modelを見てもテーブルの状態は書いていないです。gemでmodelに出してくれるものもあるようですが、マネージャー等からするとドキュメントはやっぱり別途必要。いうことで、schemadocだと自動生成してくれるのでおすすめです。API用ドキュメント自動生成ツール。APIのRSpecに少しの修正を行えば、RSpecを実行するだけでドキュメントが生成されます。素晴らしい!これだけでプロジェクトのドキュメント管理が大分楽になります。面倒な作業は自動化をしてプログラムに集中するようにしています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。