ローイングファン お試し版
このブログではWebアプリ「ローイングファン」の仕組みを紹介している。
今回は今までの記事に書いてきたコードを使ってローイングファンお試し版をつくる。
Webアプリ ローイングファンのURL
https://rowingfan.herokuapp.com/
ボートレース(レガッタ)情報検索サイト:ローイングファン
目次
ローイングファン お試し版のコードを書く
rowingfan_ver0.rb
require 'csv' #Webサイトからコピーしてつくったファイルを開く source = open("results_source.txt","r") #開いたファイルを読み込む sourcefile = source.read #読み込んだファイルを検索置きかえでカンマ区切りに成型する sourcefile.gsub!(/^\d\t$/,'') sourcefile.gsub!(/^\n/,'') sourcefile.gsub!(/\n\(/,'(') sourcefile.gsub!(/^/,',,') [1,2,3,4,5,6,7,8].each do |rank| sourcefile.gsub!(/^,,#{rank}/,",#{rank}") end sourcefile.gsub!(/^,,順位.+Qualify$\n/,'') sourcefile.gsub!(/\n/,'') sourcefile.gsub!(/,,Race\sNo/,"\nRaceNo") sourcefile.gsub!(/\t/,',') sourcefile.gsub!(/RaceNo:\s/,'') sourcefile.gsub!(/,,発艇時刻:\s/,',') #種目を加える sourcefile.gsub!(/組別:\s/,",#{ARGV[0]},") sourcefile.gsub!(/^\n/,'') #ファイルを閉じる source.close #書きかえた内容をCSVファイルとして書き込む open("results.csv","w") do |csvfile| csvfile.write sourcefile end #CSVファイルから入れ子構造の配列をつくる races = Array.new #空の配列をつる #CSVファイルを1行ずつ配列で取りだす CSV.foreach("results.csv") do |line| #RaceNo、日時、種目、組別を1つの配列にする info = line.values_at(0,1,2,3) #1着から6着まで順位毎の結果を各々1つの配列にする rank1 = line.values_at(4,5,6,7,8,9,10,11) rank2 = line.values_at(12,13,14,15,16,17,18,19) rank3 = line.values_at(20,21,22,23,24,25,26,27) rank4 = line.values_at(28,29,30,31,32,33,34,35) rank5 = line.values_at(36,37,38,39,40,41,42,43) rank6 = line.values_at(44,45,46,47,48,49,50,51) race = [] #空の配列をつくる #変数raceに上でつくった配列を格納していく race << info << rank1 << rank2 << rank3 << rank4 << rank5 << rank6 #変数racesにraceを格納する races << race end #検索して出力する races.each do |race| #1レース単位の配列を取りだす race.each do |result_by_rank| #順位別レース結果の配列を取りだす if /.*#{ARGV[1]}[A-Z]?\)?/ =~ result_by_rank[1] #入力されたクラブ名をもとに判断 puts "#{race[0][1]}\n#{race[0][2]} #{race[0][3]}" puts "#{race[1][0]}着 #{race[1][1]} #{race[1][5]}" puts "#{race[2][0]}着 #{race[2][1]} #{race[2][5]}" puts "#{race[3][0]}着 #{race[3][1]} #{race[3][5]}" puts "#{race[4][0]}着 #{race[4][1]} #{race[4][5]}" puts "#{race[5][0]}着 #{race[5][1]} #{race[5][5]}" puts "#{race[6][0]}着 #{race[6][1]} #{race[6][5]}" puts "----------" end end end
ローイングファン お試し版の使い方
アプリの使い方
1. 事前準備
2. アプリの実行
- 実行の仕方は、Rubyコマンドにつづけて、半角スペース、種目名、半角スペース、クラブ名を入力する
- (実行例)
ruby rowingfan_ver0.rb 男子エイト NTT東日本
- (実行例)
- 実行するとターミナル/PowerShellに結果が出力される
- 実行すると同じディレクトリ内にresults.csvファイルがつくられる
レース結果の入手について
データをコピーする方法は次の記事を参照。
https://rowingfan.hatenablog.jp/entry/2018/03/21/180000
レース結果の情報を入手する際は必ず次の注意事項を読んでください。
ローイングファンの日記について「注意事項」
https://rowingfan.hatenablog.jp/entry/2018/03/11/125951
お試し版の課題
ローイングファンお試し版には次の欠点がある。
- 実行中に説明が表示されないので使い方を知っている人しか実行できない
- 情報をコピー、ペーストする手間がかかる
- 特定のブラウザからしか情報をコピーできない
- 「Google Chrome」「Safari」には対応
- 「Microsoft Edge」では違う結果になる
- コードの見通しが悪く、わかりづらい
今後の予定
今後の予定は次のとおり。
- エクセルで使えるCSVファイルを出力できるようにする
- ブラウザを選ばないようにする
- クローリング、スクレイピングを取り入れて、情報を自動で取得できるようにする
- ナビゲーション機能をつける
- データベースを利用する
- ツイッターのツイートと連動させる
- Webアプリにする
上の予定は順番が変わるかもしれませんしブログで書けない項目があるかもしれません。
少しずつ欠点を改善していく予定。
改訂版ができたら情報を更新していきます。
改定 version1
https://rowingfan.hatenablog.jp/entry/2018/04/13/103000
今後も少しずつすすめていきますのでよろしくお願いします。
今回の動作確認環境
Ruby 2.4.3p205
macOS 10.13.3
ターミナル
Google Chrome 65.0(macOS 10)
Windows10
Windows PowerShell
Google Chrome 66.0(Windows10)