ごみ出しカレンダーサービス 5374アプリ 静岡県富士市バージョンを作ってみました - 作成作業編2


前回は5374アプリを作る最初の作業として、GitHubで公開されている5374アプリをフォークしました。次は、ごみ情報を実際に収集整形して5374アプリ向けのデータを更新します。

データの収集と整形にはGoogleスプレットシートを用います。表計算の関数機能を利用するので、その他の表計算ソフト(Excelとか)では少し事情が違うかもしれないので利用する関数機能を比較するなどして置き換えて見て下さい。

各回の目次

5374アプリのごみ情報のデータ

5734アプリでは、ごみ情報を幾つかのCSVファイル(表計算ソフトで用いられる、テキスト形式のファイル, オープンデータ界隈でもよく見るかと思います)を利用します。各それぞれの意味はこちらで見れます。

5374/LOCALIZE.md at master · codeforkanazawa-org/5374

ここでも上げておくと

CSVファイル名 意味
area_days.csv 各エリアのゴミを出す曜日を記述します
center.csv センターの休止期間を記述します。休止期間がない場合は、空のファイルでもよい
description.csv 各ごみの分別を記述
remarks.csv ゴミ収集時の注意事項を記載する。
target.csv あるゴミの分別したリスト

これらのファイルは、GitHubでフォークしたファイルの中にある、dataフォルダの中にあります。

それぞれファイルをダウンロード可能です。area_days.csvファイルを例にして見ます。まずはこの画面のarea_days.csv のリンクをクリックし

ファイルのページに進むと右側に現れる Rawボタンを右クリックして保存します。(写真はGoogle Chromeを利用しています。これは各種ブラウザによるので、ブラウザのヘルプなどを参考にして保存してみてください。)

保存されたファイルをExcelなどの表計算ソフトで開いて、編集していきます。

具体的なデータの入力方法は、上記したリンク先の説明文に記載されていますので、ここでは深く扱いません。

ただ実際に作成したデータを見たほうが早いこともあるので、富士市版の5374アプリで利用しているGoogleスプレットシートをここに埋め込みます。

(観覧モードで公開しています)

見られない方向けのリンクも用意しました。PCで見られる方ならこちらのほうが便利なはずです。

https://docs.google.com/spreadsheets/d/1sA1D99iSRv8DOgdSXynip9lZG45uR_Qs4vPfvJVh7rs/edit?usp=sharing

こちらのシートは公開しているので、複製してもらって各地域ごとで変更して利用していただけて構いません。各タブに色が付いているものは、入力時に楽をしたくていろんな関数を組み合わせ作成したデータなので、地域によっては利用できないものもあります。(と言うかほぼ出来ないと思います)

注意:CSVファイルの各列の並びについて

ちょっと躓いたことについて書いておきます。CSVファイルを開くと列の見出し(ヘッダー)が入っています。

ここでの注意点ですが、この列の順番を入れ替える等、構造を変えると5374アプリ側ではデータを読み込めなくなるようです。

入力しやすくしたくて列の並びを変えることはあると思いますが、CSVファイルを書き出す最後には列の並びを元に戻す必要があります。

あとは手入力

スプレットシート上それぞれの情報を入力していきます。地域によりけりだと思いますが、分量として多いのは 分別一覧になる target.csv と 地域とゴミ出しのカレンダー情報を入れた area_days.csv だと思われます。

入力は結局のところ手作業がメインになると思います。暇な時に進めていくぐらいしかないですね。

地域ごとの事情に対処する

地域ごとにゴミの出し方に様々なパターンがあります。富士市の場合だとこれらを確認しました

  1. 地域によってパターンが決まってる: 地域ごとにゴミ出しの曜日やその月の週目が違う
  2. 月によってパターンが変わる: ある月だけ、その月の週目が違う, 例えば年末だけ対応が違う

リストの1番ですが、ある地域 => パターンA-1 と言った形です。パターンは数種類、地域は市内にあるそれぞれの地域です。この組み合わせを作るのが意外と大変です。

幸いにも、パターンと地域の一覧が手に入りましたので、確認に困ることはありませんでした。

<PDFファイル>平成28年度ごみのカレンダー 町内会あいうえお別一覧: rn2ola000000bltx.pdf (PDFです)

5374アプリでは、その月の曜日と月の週目を同時に指定することができるので、大抵はこの方法で問題なく行えます。 ですが富士市の場合はリストの2番の対応が難しいと思いまして、このパターンを使うゴミの種類でカレンダーを利用するときは、不定期での入力記法を利用しました。(他に方法があるかもしれませんが、不定期の記法を試したかった事情もあります)

例として、平成27年度のある地域パターンのカレンダーを抜粋してみます。この場合は1月のみ月の週目が違います。

平成27年度ごみカレンダー パターンB-4: fmervo000001h00l.pdf

Googleスプレットシートでデータの入力と整形

手入力し続けると流石に辛いので、いくつか楽をする方法を考えました。

上に上げた1番目では、

  • パターンと地域の作り方、パターン側の表と地域の表を作って、 VLOOKUP 関数で参照する
  • 特定のセル(ある列とある列とか)の文字列を組み合わせたいときは、CONCATENATE 関数
  • 日付(例: 2015/01/01)から 水1 といった曜日とその月の週目の組み合わせを作る方法

「VLOOKUP関数」での検索と参照

VLOOKUP - ドキュメント エディタ ヘルプ

VLOOKUP関数は列方向の検索を行う関数です。作成したシートではゴミ出しのパターン名と地区との参照のために利用しています。

たとえば、このようにゴミ出しのパターン一覧が作れまして、

地域とパターンのセットを用意しておきます。

VLOOKUP関数を利用して、パターン一覧のシートを検索し、ヒットした行の取り出したい列番号を指定することで、必要な情報を参照しています。

(画像だと小さすぎるので抜粋すると)

=VLOOKUP($C2,gomi_pattern!$A$2:$J$26,2)

VLOOKUP(検索したいセル,文字列, 検索範囲, 呼び出したい列番号:検索範囲のパターン)

これを駆使すると、地区分のゴミ出しパターンの入力を手でやる必要はなくなります。

セル内文字列や文字列自体を結合できる「CONCATENATE関数」

CONCATENATE - ドキュメント エディタ ヘルプ

文字列を組み合わせて一つの文字列にしたい時もあります。結合のことです。

例えばこのシート(area_days.csvの元を作るようのシート: area_days_csv)のA~Dまでを結合させて、地区名になるE列のような結果を出したい時に、CONCATENATE関数が利用できます。

=CONCATENATE(A2,"(",B2,"地区 ",C2," ",D2,")")

この例だと、「地区 」や括弧は ダブルクオーテーションを使って文字列にしています。セルを指定するとその中の文字列を呼び出しています。

この例でもやっていますが、5374アプリの地区名のリストを作りたい時に表現の仕方に困ったときは、こういった文字列結合の関数を使って自由にとっかえひっかえして考えるのもおすすめです。

日付からその月の何週目かを割り出す方法

こちらは、ネットで検索した情報を参考にしてみました。

月の第何週かを調べるには?−WEEKNUM関数:Excel(エクセル)の関数・数式の使い方-日付・時間

WEEKNUM - ドキュメント エディタ ヘルプ

この方法は、富士市の平成27年度にあった古紙の回収パターンが特殊だったために利用しました。

回収パターンがある月だけ別の週目だったので、すべての月の曜日と週目を記載して、vlookup関数で参照できるようにするためにこういったシートをつくりました。参照させている様子はこちらです。(この画像は公開したスプレットシート上の gomi_pattern_古紙 というシート名です)

具体的な解説は、特殊なのもあるので今回は割愛します。詳しくは公開先のスプレットシートで確認してみてください。

CSVファイルへの書き出し

Googleスプレットシートでは、CSVファイルの書き出しがサポートされています。Googleスプレットシートのメニューより ** から書き出しができます。

その時に、現在表示しているシートが書き出されます。ファイル名はスプレットシートに記載した名前とシート名が入ります。これをリネームすれば利用できます。

まとめ

今回は、5374アプリの元になるごみ出しのカレンダー情報の作り方を、富士市の事情を例にして楽する方法も述べてみました。

地域によりけりなので、変則的なパターンはたくさんあると思いますが、その場合は不定期の記法を用いることがあります。ここでいかに楽するかがポイントかも知れません。

次回は、GitHub側にファイルをアップロードして内容を確認してみましょう。

おまけ:PDFの解析は難しいです

もしゴミ情報がPDF形式で公開されている場合、デジタル的に作成されているので文字情報を抽出することが可能かも知れません。

PDFファイルの中身は文字情報や画像が複数構成されてまして、自作や専用のプログラムで取り出すことも出来ますが、規則性がある場合とない場合があります。

プログラムに頼らない場合、文字情報がコピーできるファイルなら、テキストデータとして利用することも出来ます。

例えばこのゴミ出しのカレンダーをテキストでコピペすると

ごみ出しは朝8時30分までに
★詳しくはごみの分け方便利帳をごらんください★
持込できないもの
収集しないもの
・月曜日~金曜日 8時30分~12時、13時~16時
・土曜日 8時30分~11時
引越しごみ、多量ごみの
持ち込みについて 剪定した枝の回収(申込制)
パソコンの処理について
◎家具や家電を除きリサイクルできそうな物品(食器・日用品など)は「市民ふれあいバンク(障害者就労支援施設)51-3080」までお問い合わせください。
詳しくは、富士市ウェブサイトか          をご覧ください。トップページ→くらしと行政→くらし手続き→ごみ・リサイクル(http://www.city.fuji.shizuoka.jp/kurashi/c0701/fmervo0000000zbx.html)
《相談先》TEL72-5353 有料 富士市一般廃棄物協同組合
ごみの分別・収集・持込について
・受付時間は月~金曜日の 8 時 30 分から17 時まで(祝日可)。
・枝の太さは直径 10 ㎝程度までで、長さ 50 ㎝程度に切り束ねる(20 束を限度)。
・麻ひもかなわを使用する。
※収集できない樹木については、「ごみの分け方便利帳」をご覧ください。
★回収した剪定枝は堆肥原料などにリサイクルします。
富士市環境クリーンセンター受入時間
処分方法についてはごみの分け方便利帳
を参照
資源 ・ 埋立ごみ
12
月
29日から1月3日まで
は回収を行いません
・ごみの収集、運搬を依頼したいとき
・事業系ごみを処理したいとき
...
(以下省略)

デジタル的に作成されたものなので、文字自体は扱えると思いますが、カレンダーを見ながらどこがどこかを確認しながら作業すると思います。個人的にはこちらのほうが大変さがありました(汗)

また、PDFに文字情報がない場合、OCR(テキスト識別)技術を使う方法もありますが精度の問題に悩まされることもあるのでこちらもおすすめできません。

このような事情としてはいろいろとあると思いますが、印刷物として作成されたPDFはこちらがほしいデータをきれいに取り出すのが難しい場合が多いようです。

富士市版を制作するときに何度かトライのですが、ここで悩むぐらいなら手を動かそうと考えて、今回は全て手作業で入力していきました。これは今後の課題にもなりますね。

お知らせ

5374アプリ 静岡県富士市版は、現在私個人で作成, 運用しているプロジェクトです。興味のある方がいらっしゃいましたら一緒にやりませんか?

具体的に今困っている/足りないことは以下のとおりです。

  • 入力しているごみ情報の正確性
  • モバイル向けに電話番号や住所への対応

ごみ情報の正確さが一番大事なのですが、作成した人が見ているだけだと間違えに気がつかないので、どなたかに確認してもらいたいです。

連絡先は個々のコメント, Twitter@hrs_sano645 でお願い致します。お待ちしております!