2016年4月21日木曜日

Raspberry PiのLinux、Raspbian atコマンドで学んだshとbashの問題

Raspberry Pi Zeroが日本国内販売はおろか、本家イギリスでも相変わらず入手困難な状況が続いているようです。
そんな中、突如発表発売されたRaspberry Pi 3
ARM Coretex-A53を採用したSoC Broadcom BCM2837を搭載し、Raspberry Pi初となる64ビット機となります。また、無線LANBluetoothも搭載されコレも初。

今後も目が離せませんね♪
Linux三昧
Raspberry Pi 2を購入して以来その魅力に取り憑かれてしまい、オフィシャルOS Raspbianを通じてLinuxが楽しくて仕方ない今日このごろ。
こんな事したら楽しいかな?あんな事したら便利かな?を形にすべく、時間を見てはチョコチョコいじっています。

そんなLinuxには色々便利機能があるのですが、その中の1つにatコマンドというのがあります。

Raspbian標準では入ってなくて、Debian向けに開発されたパッケージ管理システム APTを通じてインストールする事が可能です。

$ sudo apt-get install at

こんな感じでコマンドラインから打ってやるとインストールできます。
atコマンドで出来る事
そもそも、このコマンドで何が出来るか?というと

指定した日時に1度だけ実行できる

Raspbian標準でcrontabという似たコマンドがあり、やろうと思えばこちらでも同様の事が可能です。
しかし、crontabでatと同じ事をしようとした場合、

実行し終わったらスケジュールリストから自力で削除しなければならない

crontabはシステムが稼働中にスケジュール条件のジョブがあった場合に実行するコマンドです。
定期的に動かさなければならない場合に使う事が多いので、1回コッキリの作業にはあまり向かないコマンドです。
うまく動いてくれないジョブ
便利なatコマンドは何度も使っていて、勝手知ったるツモリでこの日もパチパチ作っていました。
登録するジョブのシェルスクリプトを手動でテスト実行したら想定通りの動作。
いざ、本番を想定したatコマンド登録して1分後に実行するようセット。


・・・
・・・
・・・

ただのシカバネのようだ。


ウンともスンとも言いません。
何か間違ってるのかと思い、手動実行するもちゃんと動きます。
実行ユーザーの差も疑ってsudo付けて実行しましたがやっぱりちゃんと動きます。
難航するデバッグ作業
atコマンドは通常は標準出力に文字を表示してくれません。
何かあればメールでメッセージが入ってくる事があるのですが、今回はそれもありません。
今回実行しようとしたシェルスクリプトは、sourceコマンドで別の関数をライブラリ化したシェルスクリプトを読み込んで使うモノでした。
それが上手く動作していないのかと思ったのですが見当ハズレ。
単独で動いた簡単なコード

echo "test" > out.log

これ1行のみのコードの関数を作り、それをsourceコマンドで読み込んでメインスクリプトで実行すると上手くいきます。

もう何が悪いのかわからないヽ(`Д´#)ノ

問題箇所を洗い出すべく、ヤケッパチの作戦に出ました。
すべての行間に

echo "test(任意の数字)" > out.log

これを入れ込んでって、out.logの出力がどこまで動いてるかを見て、停止原因となる箇所特定をしました。
まさかの配列変数初期化で停止
問題箇所はなんてこと無い1行でした。

array=()

シェルスクリプトではなんてことの無い、単に配列を初期化するだけの1行で停止していました。
もちろん、手動で実行すると動いていますから問題がある書き方ではありません。
declare -aという変数宣言コマンドも使ってみましたが動きません。
atコマンドが発するwarningの意味
atコマンドを実行すると良く見かけるのがコレ

warning: commands will be executed using /bin/sh

意味は /bin/shを使って実行されます です。
エラーでは無いためatコマンドは実行してくれるのですが、この警告がとても重要なのです。
Raspberry Pi オフィシャルOSである Raspbianは、標準のシェルとしてbashが使われています。
bashはとても高機能なので幅広く使われてるシェルプログラムなのですが、それも今のようなコンピュータが高性能になったおかげです。
それ以前は、性能の低いコンピュータに合わせたモノが使われていました。
atコマンドの警告表示に出ている/bin/shというのがまさにその使われていたshなのです。
Rasbianでこのshを見てみると

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4  1月 21  2014 /bin/sh -> dash

エイリアスでdashが呼ばれていました。
bashdash、1文字違いでヤヤコシイのですがどちらもシェルプログラムです。
両者同じものならわざわざ別に用意するワケがなく、もちろん別のシェルプログラム。
shとの互換性があるのがdashです。
互換性のないbash
動作しなかった配列変数を調べてみると、bashにはあってdash/shには無い機能の1つでした。
atコマンドが使うシェルプログラムの指定は出来ないのか調べてみましたが、それっぽい記述は見当たりません。
シェルスクリプト側を配列を使わない形に書き換えようとも考えたのですが、パッと良いアイディアが浮かびません。
そこで取った解決方法はコレ

#!/bin/sh
/bin/bash hogehoge.sh

bashを呼び出してシェルスクリプトを実行させる方法でした。
perl/ruby/python/php等のスクリプトも似たようにコマンドで呼び出して実行します。
bash向けシェルスクリプトもそれらと同様の方法で実行しました。
atコマンドがshのワケ
bashdash、1文字違いのシェルプログラムですが、その志しはまったく異なります。

dashPOSIX準拠のシェルプログラムです。
shの機能そのままにコンパクトで高速に動作する事を目的に作られています。
dashで走らせられるシェルスクリプトは実行速度の差はあってもshで走らせられる事ができる互換性のあるモノです。

bashshを拡張して高機能化したシェルプログラム。
後方互換のモノで、shのシェルスクリプトを実行可能にしつつ、さらに便利な機能も実装しているというもの。
ですから、bashの機能を使ってbash向けに作られたシェルスクリプトはshでは動かない可能性があります。

atコマンドもまたPOSIX準拠で作られており、そのためにshを標準シェルプログラムとして使っているのでしょう。
bashの未来
atコマンドのトラブルから学んだ今回のsh/dashbashの問題。
シェルスクリプト冒頭に書く

#!/bin/sh

コレもbash向けシェルスクリプトでは書くべきではないと言われている事は以前から知っていたのですが、今回の一件でその理由が良くわかりました。

bashは今回のRaspbianだけでなく、UbuntuやOS Xでも採用されてるシェルプログラムです。
WindowsもWindows Subsystem for Linuxという形で2016年夏リリース予定のWindows 10メジャーアップデート時に搭載されます。

これだけ見ると未来は明るいように見えますが、一方でPOSIX準拠が取れない現状。
POSIXモードというのも実装されていますが、それを前提として開発するならbashの存在価値は失われてしまいます。

心の片隅にとどめておき、どちらに転んでも良いシステム開発に心がけたいですね。

2016年4月17日日曜日

全自動エスプレッソマシン デロンギ マグニフィカの除石灰作業やりました

熊本で発生した大地震で死傷者多数。
連日のニュースに心を痛めてます。
地震大国に生まれ育ったが故の宿命だと思ってはいるものの、人生の中で何度も遭遇してるとツライものがあります。

 1人でも多くの人が助かりますように。
 そして、お怪我をされた方々の1日も早い回復をお祈りいたします。
 亡くなられた方々のご冥福をお祈りするとともに、遺族の方々にお悔やみ申し上げます。
 ツライ現状から早く脱し復興されん事を心よりお祈り申し上げます。
毎朝の食事はカフェラテから
我が家には全自動エスプレッソマシン
デロンギ マグニフィカ ESAM1200SJ
があります。
ボタン1つでコーヒー豆が挽かれ、そしてエスプレッソコーヒーが淹れられるとても便利なコーヒーメーカーです。

最近はとんと見かけなくなり、現在は同等機能の色違いであるコチラのみを見かけます。


デロンギ マグニフィカ ESAM1000SJ

シルバーにしろブラックにしろ、この機種は最新機と比べ機能や見た目で劣ります。
しかし、エスプレッソコーヒーを淹れるという基本機能はシッカリしてますし、何よりも軒並み10万円を超えるなかで半額程度で購入可能。
家庭用の手動式エスプレッソマシンでもグラインダーと一緒に買おうとすると4万円程度はするため、差額1万円でレストランにあるような全自動エスプレッソマシンが手に入るのはとても魅力的です。
その日は突然訪れる
いつものように朝食を作りカフェラテを淹れてふと本体を見ると、普段は点灯していない赤ランプが点いていました。

このランプは除石灰時期をお知らせするモノ。
使う水の硬度を初期設定するのですが、それを元に使用頻度を見極めて適切な時期に知らせてくれます。

この除石灰作業、専用の除石灰剤というのがあって購入時に1回分付属してくるのですが、以前1度行っているため手元にありません。
今回は購入するところからです。
困った時のアマゾン頼み
この除石灰剤、その辺のお店で買えるモノではなくデロンギの全自動エスプレッソマシンの取り扱いがある店舗でも在庫があったりなかったり。
我が家から一番近いお店も電車を乗り継がなくてはなりません。
デロンギ商品取扱店で取り寄せる事も可能かとは思うのですが、メーカー在庫があれば1週間程度、無ければそれ以上かかります。
それならということで、今回はネット通販で購入する事にしました。



今回購入したのはお馴染みアマゾン。
送料無料が2000円以上からになると突然発表され利用に抵抗感が生まれて日が浅いのですが、背に腹は代えられないという事で購入に踏み切りました。

ポチッっとな♪
お馴染みの箱がやってくる
朝に注文したら到着予定が翌日とのお知らせ。
さすが、(色々な意味で)無いものは無いアマゾン。早いです。

この日、所用で午前中は外出。
午後も何時に帰宅出来るかわからなかったのでコンビニ受け取りで注文しました。
思ったより早く帰宅出来たものの、受け取りに必要な到着メールが来ずドリップコーヒー飲んでくつろぎながら注文履歴を見るとコンビニに到着のステータスになっていました。

メールで認証コードがわからないと受け取れない事をスッカリ失念していて、コンビニで四苦八苦したのですが何とか受け取れて帰還。

便利なのか不便なのか...
一難去ってまた一難
久方ぶりに見るデロンギ純正除石灰剤。
以前は単に除石灰剤と呼んでいたのですが、EcoDecalkという商品名が付いたようで国内流通品の100ml小分けパッケージもそういう名前でした。

今回注文した写真のモノは、日本国内で未発売の500mlボトルタイプ。
付属の日本語説明書には1回125ccを使うように指示されているため4回分の計算なのですが、国内流通品は1回1パック100ml。
ボトルのメモリも5回分記載されているため、それは合っているようです。


さっそく作業をしようと思った矢先にいきなりツマヅキました。

フタが開かない!?

一見すると普通のフタで回せば開きそうなのですが、いくら回しても空回り。
よくみると表面に「1.↓(押す)」「2.↺(回す)」とあります。
押し込んでも手応えが無く、回しても相変わらず空回り。

何コレ?


下に押しながら回してやったら開きました。
フタが2重構造になっていて、手に触れる外フタと本体側の内フタは普段は回らないようになっています。
それを下方向に押し込むことによって噛合い、押し込みながら回してあげれば開く仕組み。

子供が誤って開けて触れたり誤飲したりしないような配慮なのでしょうか?
良く出来てますね。
除石灰作業開始
年に1回やるかやらないかの低頻度な作業。やり方を覚えていません。

メーカーホームページに掲載されてる取扱説明書26ページを見ながら作業開始。
付属の説明書は持っているのですが、引っ張り出してくるのが面倒だったので。
インターネットって便利ですね♪


水タンクを取り出し、真水1Lに除石灰剤100mLを加え本体にセット。
廃液を受ける1.5L以上入るボウルを置き、そのままでは置けないのでかまぼこ板を数枚かさねて敷いてトレイを拡張します。
電源をボタンを押すと何時も通りの初期クリーニングが始まり廃液が少々出てきます。
準備が完了したら除石灰ランプのついたクリーニングボタンを5秒長押し。
スチームツマミをONまでしっかり回したら、あとは水タンクが空になって給水タンク注意ランプが点灯するまで放置です。
途中、止まってウンともスンとも言わなくなりますが、除石灰剤を内部になじませるための漬け置き時間かと思います。
ですから、本体を信じてそのまま放置しておきましょう。

説明書にある20分かからないぐらいで給水タンク注意ランプが点灯します。
そしたらスチームツマミをOFFまでキッチリ回して停止。
ボウルの廃液を捨て、水タンクを取り出し残った除石灰剤入りの真水を捨てて洗い、再び真水を満タンまで入れてセット。
廃液を再び受け止めるための空のボウルをセットしたら、再びスチームツマミをONまで回します。
排水が始まるので給水タンク注意ランプが点灯するまで出し続けます。
いつものエスプレッソマシンで一杯
除石灰作業を終えてエスプレッソコーヒーを淹れました。
普段はカフェラテを注ぐマグカップにダイレクトに落としているのですが、時々こうして計量カップを使って味と湯量をチェックします。
エスプレッソも目安としてシングルショット(1杯)30mL。
カップを見ると20mLほど湯量が多いので減らします。
コーヒーの濃さは湯量減らせば最適になりそうだったのでそのままに。
この後、コレを捨てるのはもったいないので、砂糖を加えて飲みました。

メンテナンス後のエスプレッソマシンは気持ちいいですね♪


2016年4月15日金曜日

第28回春日部大凧マラソン大会書類一式届きました

左足を痛めてもうすぐ1ヶ月。
筋トレと水泳でトレーニングは続けていますが、ランニングは残念ながらまだ出来ず。
大会の日も近くなり不安がよぎっております。

さて、そんな中ついに届きました!


第28回春日部大凧マラソン大会 書類一式

大会当日はこのゼッケンと計測用チップを身につけて会場に行って走るだけ。
とても便利です。

書類にざっと目を通した限り、前回大会から変わった事が2つありました。
まず1つ目。


写真撮影がSTK photo serviceに変わりました。

前回はPhoto Createが運営するALL SPORTS communityでした。
撮影された写真はどういう形(サイズや形状、DLの有無)で販売されるのか。また、おイクラなのかが書かれていないため良いのか悪いのかはわかりません。
気になるところです。

次に2つ目


有料の手荷物預かりサービスがはじまるそうです。
料金は500円。注意事項を読む限り、この500円というのは万が一紛失した場合の保険料かと思われます。
金銭・貴金属等の貴重品は預けられません。万が一預けて紛失しても保険の支払い対象にはなりませんのでご注意を。

ゼッケンが届いたので前回同様にコレ


ゼッケン留め BIBFIX

これ用に穴を広げる作業を後日したいと思います♪


今回が私の人生初となるハーフマラソン大会。
しっかり準備して気持よく走りたいですね。

2016年4月6日水曜日

Raspberry Piで思い出す🤔ネットワークは接続が保障されない技術

Raspberry Pi 2 Model Bが我が家にやってきてから、何かとLinux色が強くなってる今日このごろ。
そんな環境を使っていて忘れていた肝心な事を思い出しました。
今回はそんな話を書きたいと思います。
事の発端はWebDAV
Raspberry Piで使えるOSの1つであるRaspbianは、WebDAVがマウント出来るようになるdavfs2パッケージのインストールが可能です。
私は、これを使ってインターネット上のストレージサービスBOXをマウント。
これによってRaspberry PiをSDカード 64GBBOX 50GBという環境で使っています。
(現在BOXの個人向け無料プランは現在10GBとなっています。)

再起動をかける事がシバシバあるRaspberry Pi。
davfs2でWebDAVを手動マウントするとその度に解除されてしまうため、fstabの設定を使い起動時にマウントするようにしました。

しかし、それが誤ちだった事に気が付きました。
ブレーカーが落ちる事故
我が家のRaspberry Piの置き場所はダイニングキッチン。
生活をしていく上で必要とされる衣食住の食をツカサどる大切な生活空間です。
ここに置かれている理由は、この場所の温度湿度気圧を測定しているのが1つ。
もう1つは、電話回線を引き込むジャックがココにあるためネットワーク主要機器があり、安定した通信が得られる有線でかつ、コレが基本であるRaspberry Pi 2に都合が良かったからです。

現代のキッチン用品はとにかく電化製品が多いです。
  • 冷蔵庫
  • 電子レンジ
  • 食器洗い乾燥機
  • 電気ケトル
  • オーブントースター
  • コーヒーメーカー
  • エスプレッソマシン
これだけのモノが我が家のキッチンにはあります。
さらに、我が家のブレーカー事情は厄介で、脱衣所とキッチンの分岐ブレーカー(大元の主管ブレーカーとは別に付けられた小さいブレーカー)がセットで1つなのです。
この分岐ブレーカー、20Aという容量なため電化製品を幾つか動かすとすぐに落ちてしまいます。
ブレーカーが落ちてRaspberry Piがシャットダウンする事なく電源が切れます。
コレによって何度かOS Raspbianがカーネルパニックが起き、起動不能に陥った事がありました。
幸いな事にこのブログを書くキッカケとなった電源切れの時はカーネルパニックは起きなかったものの、忘れかけていた事を思い出させてくれました。
バックアップ失敗
システムチェックのため定期的に行っているバックアップを臨時で行いました。すると失敗。
原因は起動時にマウントされてるはずのWebDAVでした。
ブレーカーが落ちて停電後、ブレーカーを戻して電気が流れると再起動します。
本来ならfstabの設定でこの時にマウントされるはずなのですが、今回に限ってマウントされていません。

なぜ?
早すぎたRaspberry Pi
ダイニングキッチンのブレーカーが落ちるとRaspberry Piだけでなくネットワーク主要機器も落ちます。
ブレーカーを復帰させる事でこれらすべてが再起動するのですが、この時に真っ先に起動したのがRaspberry Pi。
その後にネットワーク主要機器が再起動しました。

インターネットに接続できない状態でRaspberry Piが起動してしまうと、マウントされるはずのBOXがマウント出来ません。
その結果、バックアップに失敗しました。
接続保障ないモノは起動時自動マウントしてはいけない
Linuxには様々なモノをストレージ化してマウントする事が出来ます。
今回紹介したWebDAV以外にも、WindowsでおなじみのSMBやFTPなども可能です。
ただ、今回のように起動時にネットワークが必ず接続出来るとは限りません。
インターネットと接続する機器の問題だけではなく、そこから先の経路で障害が起きていたり、大元のサーバーで障害が起きていたり。
そういう事態を考えると、起動時に自動マウントする設定は行わないほうが良いでしょう。
理想のマウント方法と使い方
3つの手順が必ず必要です。
  1. 使用したいストレージが既にマウントされていないか確認
  2. マウントされていない場合はマウントする
  3. マウント出来なかった場合を想定する
今回はネットワークを経由したストレージを題材に書きましたが、場合によってはUSBのようなホットプラグ対応デバイスも対象となります。
Raspberry Piの特殊事情
Raspberry Piは、ストレージが接続出来るI/Fが標準でSDカードスロットとUSBのみ。どちらもホットプラグ対応デバイスです。
SDカードスロットは、SoCの作りの関係で起動ドライブとして決め打ちされているためどうしようもありません。
また、USBも手軽に増設可能なI/Fがコレしかないため、ストレージメーカーもこれを前提としたRaspberry Pi向け製品をリリースしています。
Linuxは、これらストレージにUUIDを割り当てて機器を特定し、マウント時に固定化できる仕組みがあります。
これを使い今回のWebDAVのように起動時に自動マウントして固定ストレージとして使う事があります。
しかし、起動時にUSB接続機器のUUIDの認識が遅れてマウント出来ない不具合が出るケースがあり、やはりそういう使用を想定していないようです。
ネットワークは接続保障されない技術
ネットワークは接続保障がありません。
マウントしてOS標準実装された操作で使う事は、汎用性・利便性の面でとても有利です。
しかし、経路障害やサーバー故障、システムのアップデートや定期メンテ等、様々な事情で止まります。
接続性の高い機器同様に解説される事が多いですが、接続保障のないネットワークだという事を念頭にシステム開発したいものです。

2016年4月5日火曜日

平成28年度 #春日部 ゴミカレンダー Googleカレンダー版の作り方

前回の記事で公開させて頂きました

平成28年度 春日部ゴミカレンダー Googleカレンダー版
※公開したカレンダーはコチラの記事をお読みください。

これをどうやって作ったか?って話を書きたいと思います。

時間と労力さえかければ誰でも作れると思います。
どうするかと言えば、Googleカレンダーを開きただひたすら作成すれば良いだけです。
ちなみに、どれだけ作れば良いかというと

可燃ごみ1812件
不燃ごみ288件
びん・かん等288件
紙・布288件
合計2676件

さすがにコレだけ作成しようとすると心が折れますよね?
そこで、私はこんな方法でCSVファイルを作ってGoogleカレンダーに取り込みました。

法則を導く
春日部市の収集日程には収集区域によって一定の法則があります。
ごみ・資源物の収集日程一覧(平成28年度ゴミカレンダー)の各収集区の収集日程を見ると大きくわけて2つあります。

基本法則
  • 可燃ごみは毎週指定曜日の3回
  • 不燃ごみ・びんかん等・紙布は週番曜日ごとに決め打ちされてる
ただ、何事にも例外はつきものでして

例外法則
  • 祝日の可燃ごみが一部休みになる
  • 1月の正月三が日が不燃ごみ・びんかん等・紙布に当たる収集区は1週ズレる
厄介な例外法則

祝日の可燃ごみが一部休みになる
この例外規定に当てはまる日は12日あります。
  • 4/29 昭和の日
  • 5/4 みどりの日
  • 5/5 こどもの日
  • 8/11 山の日
  • 9/22 秋分の日
  • 11/3 文化の日
  • 11/23 勤労感謝の日
  • 12/23 天皇誕生日
  • 1/1 元旦
  • 1/2 
  • 1/3 
  • 2/11 建国記念の日
この祝日が毎年度休みになるのかはわかりませんが、平成28年度のカレンダーを見た限りではこの祝日のみ。
ただし、すべての祝日が休みになるわけではなく、上記に上げた日のみで可燃ごみに限定されます。
また、この祝日の中にはハッピーマンデーの日は含まれていなかったため考慮は比較的楽かと思います。

正月三が日が不燃ごみ・びんかん等・紙布に当たる収集区は1週ズレる
第5週は原則可燃ごみの収集のみとなります。
しかし、唯一例外となるのがコレ。正月三が日に可燃ごみ以外の収集日が該当した場合、その曜日に限り1週ずつズレるのです。

例えば、第3収集区の場合


12月6日・20日がびん・かん等、13日27日が紙・布です。
これが1月になるとこうなります。


通常なら1月3日がびん・かん等になるのですが、正月三が日に当たるため全て休み。
代わりに10日24日がびん・かん等、17日31日が紙・布となり、第5週が例外的に収集日になります。

なお、正月三が日に当たらない収集区はズレず通常通り。
1月カレンダー右下に書かれた変則になってる場合があるというのはこの法則のためです。

平成28年度にこのルールに該当する収集区はこちら

  • 第2収集区
  • 第3収集区
  • 第4収集区
  • 第9収集区
余談ですが、第1週に可燃ごみ以外の収集が常に無い第12収集区のみこの法則は適用されないと思われます。


法則がわかれば後はツールで
法則さえわかれば、あとはそれに従ってプログラムを書くだけです。
ポイントは2つ。

  • 調べたい日の曜日
  • 調べたい日の月曜日週番号(第何曜日の何にあたる部分)

曜日の調べ方
まず、調べたい日の曜日ですが、西暦1年1月1日は日曜日なのでそこからの総日数を7で割った余りによって調べる事が出来ます。
ただし、総日数を調べるために1年の日数が重要なのですが、うるう年のルールがくせ者で

  • 4年に1度1日を加える
  • ただし100年毎の年はうるう年としない
  • さらに400年毎の年はうるう年とする
この3つの条件で1年が365日になったり366日になったりします。

長々と書きましたが、大抵はツールに曜日を調べる機能があるためそれを使うのが一般的。
表計算なら曜日を調べる関数(例えばWEEKDAY関数)を使えば簡単に調べられますし、プログラム言語なら提供されるライブラリにその機能があります。

そういう機能がなかった場合の予備知識程度に片隅にトドメておくと良いでしょう。

月週番号の調べ方
月週番号は大抵のツールにはありません。単純な計算式で求めます。

(日付÷7)+1=月の週番号(小数点以下切り捨て)

これで導き出せます。

よく勘違いされるのが1年を通してカウントする週番号との混同。
表計算ならWEEKNUM関数があり、さらにそのオプションとしてISO方式とUSA方式の2種類があります。
誤ってこれを使った場合、例えば先に例を上げた2016年12月。


12月1日は第1週、12月7日は第2週になってしまいます。
今回使いたいのは曜日の出現回数。12月1日は第1木曜日、12月8日は第2木曜日となりますし、
12月6日は第1火曜日、12月13日は第2火曜日です。
ですから、難しく考えず7で割った数字を使ってください
なお、1を足しているのは第1週が0となり、第2週が1となり、、、という数学の計算ルールの結果そうなるので1を加えて下駄を履かせてます。

私が使ったツール環境
  • ハードウェアはRaspberry Pi 2 Model B
  • OSはRaspbian
  • プログラム言語はPHP
  • カレンダーはGoogleカレンダー
一見すると難しそうに感じますが、コレはたまたま私の手元にあって作りやすかったから使っただけです。
もっと一般的なもの、例えば表計算ソフトを使っても作ることは可能です。
勉強にもなりますので、課題としてチャレンジしてみても良いかもしれませんね。

最後にお約束の注意事項を

今回調べた法則は独自のモノです。
春日部市が公開しているモノではなく、また平成28年度のカレンダーのみを元としているため、これが平成29年度以降も使えるかどうかはわかりません。
裏取りまでしてシッカリやって作りこみたいという熱心な方は、是非市役所の担当課に問い合わせてみてください。

2016年4月3日日曜日

平成28年度 #春日部 ゴミカレンダー Googleカレンダー版作りました

平成28年度がスタートしました。
私が住む埼玉県春日部市では、毎年この時期になるとゴミの収集日がひと目でわかるゴミカレンダーというのが配布されます。

ごみ・資源物の収集日程一覧(平成28年度ゴミカレンダー)

印刷物の他に上記サイトでPDFも配布されています。
ただ、残念な事にiCalendar形式(ICS形式)やCSV形式での配布はされていません。
そこで、今回はあったら便利だなと以前から思っていた

春日部ゴミカレンダー Googleカレンダー版

作ってみました。
制作過程の話は後ほど書くとして、今回はその成果物であるカレンダーを公開します。
Googleカレンダーをご利用の方、また、Googleアカウントをお持ちでこれを機に使ってみようと思われる方は取り込んで活用されてみてはいかがでしょうか?
PC/Macは元より、スマートホン・タブレットのカレンダーアプリからでもGoogleカレンダーは利用が出来ます。

是非ご活用ください。

第1収集区
内牧,梅田,梅田本町,粕壁,栄町,中央1丁目19番(1号・6号除く)・20番,中央2丁目25番(8号~24号除く)・26番・27番,新方袋,浜川戸,南中曽根,南栄町,八木崎町,西八木崎1丁目~3丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第2収集区
大沼3丁目~6丁目,中央1丁目1番~18番・19番(1号・6号)・21番~59番,中央2丁目1番~24番・25番(8号~24号),中央3丁目~8丁目,南1丁目~3丁目,谷原1丁目~3丁目,豊町1丁目・2丁目・5丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第3収集区
大沼1丁目・2丁目・7丁目,下大増新田,下蛭田,上大増新田,上蛭田,道順川戸,道口蛭田,武里中野(みどり住宅),新方袋(飛地),花積,増田新田,増戸,増富,谷原新田,豊町3丁目・4丁目・6丁目,南中曽根(飛地)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第4収集区
一ノ割,一ノ割1丁目8番~32番・2丁目~4丁目,南4丁目・5丁目,大枝(東武線西側),大畑(東武線西側),大場(東武線西側),薄谷,千間1丁目,武里中野(みどり住宅を除く),備後西1丁目~5丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第5収集区
粕壁1丁目~4丁目,粕壁東1丁目~6丁目,小渕,八丁目,不動院野

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第6収集区
一ノ割1丁目1番~7番,大畑(東武線東側),大場(東武線東側),備後東1丁目~8丁目,緑町1丁目~6丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第7収集区
赤沼,牛島,新川,銚子口,豊野町1丁目~3丁目,樋堀,樋籠,藤塚,本田町1丁目・2丁目,六軒町

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第8収集区
大枝(東武線東側),武里団地1街区~9街区

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第9収集区
榎,大衾(線路北側),神間,上吉妻,上柳,上金,金崎,木崎,倉常,椚,米島(線路北側),小平,下吉妻,新宿新田(線路北側),立野,塚崎,西親野井,西宝珠花,芦橋

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第10収集区
西金野井(線路北側)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第11収集区
米崎,米島(線路南側),大衾(線路南側)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第12収集区
赤崎,飯沼,下柳,新宿新田(線路南側),水角,永沼,西金野井(線路南側),東中野

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布