ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

ローイングファン お試し版

このブログでは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

お試し版の課題

ローイングファンお試し版には次の欠点がある。

  • 実行中に説明が表示されないので使い方を知っている人しか実行できない
  • 情報をコピー、ペーストする手間がかかる
  • 特定のブラウザからしか情報をコピーできない
  • コードの見通しが悪く、わかりづらい


今後の予定

今後の予定は次のとおり。

  • エクセルで使える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)