niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

気象庁の震源ファイルをdata.frameにしたいと思っていたのだが…(メモ)

やっていたのだが…

背景

去年からGISに興味が出てひそかに勉強しているのだが、手元に岩波データサイエンスシリーズのvol.4があることを思い出し、これもやってみるか…と年始に読んでみて、Rのコードが公開されていることが分かったので試してみようと思った。

sites.google.com

が、震源データについてはすでに書籍で紹介されているような形のデータ形式ではなく、別のフォーマットとなっていた…

と、勘違いをしていた。過去のデータは地震月報を見てくれと書いてあるのだが、実は過去のデータもそのまま残っているようである。

たとえば、2016年4月18日ならここ。他の日もURLをいじれば見れる。

www.data.jma.go.jp

この形式のデータにする必要があるのか…と思って、データのフォーマットを確認してRで読み取ってdata.frameに書き出すための関数の整備をしていたのであるが、まるまる無駄になったのでいつか形にして供養する。

www.data.jma.go.jp

ただ、データを見ていると、月報と当時の日報とでデータに差異がある。確定報などを抜き出して処理するなどが必要かもしれないが、ちょっと知識が足りなさ過ぎてそこまでは出来ないかな…という見込み。

GISのことをやろうとしているだけなのに、真面目に震源データを見ていくととても深い沼のようなので、この辺りで止めておいた方が良いかなという気がする。

Pandocの情報収集、どうする?

遅刻です。

この記事はPandoc Advent Calendar 2020の19日目の記事です。

adventar.org

今回はPandocの情報収集、どうやっていく?というお話です。あんまりまとまりのない記事になりますが…。

マニュアル類

まずは基本から。他のソフトウェアと同様に、まずはマニュアルを熟読するところから始めましょう。と言っても、自分が使うファイル形式だけ押さえておけば良いと思いますが。

pandoc.org

有志による日本語訳も(翻訳途中だけど)ありますので、英語が苦手な人はこちらを。

pandoc-doc-ja.readthedocs.io

あと、sky_y氏の記事を追いかけるのがまとまっていて良いでしょう。初心者に優しい記事が多いです。

qiita.com

公式のマニュアルも結構更新が入っていきますので、GitHub上でcommit毎の差分を確認すると良いでしょう。更新が多いので翻訳が追いつけないですねぇ…。

github.com

Slack

日本Pandocユーザ会のSlackがあります。何か質問があればここに。あまり質問を受けるような運用になってないのが寂しい(Pandocについて質問をする、という状況があまり発生しないというのはある)

docs.google.com

この中で、news-and-feedチャンネルはマークダウンという文字列に反応して関係ない情報も拾ってきますが、いろんなブログ等の投稿を見つけられるので(私は)便利です。Pandocはどのくらい理解されているんだろうか?みたいな確認に使ってます。

Twitter

今回の記事はこのアカウントの紹介が本題です。Twitterではniszetが日本語でPandocのtipsを呟くというアカウントを作成してたのですが、

twitter.com

本家?pandoc_tipsがこの度、活動を開始しました。

twitter.com

このアカウントはPandocのLuaフィルタ回りや各種フォーマットの対応をしているtarleb氏と私niszetで運用をすることとなりました。tarleb氏からやらない?って誘われたので、是非是非!と応えたらこのようになりました。まさかの展開である。Jaの方は本家を日本語で補足説明するという運用にしようと思ったんですが、pandoc_tipsの方でも日本語で呟いてもいいよ!と言われまして。あと、他にも誘っていいよ!とも言われましたので、興味ある方はどうでしょうか…?

これらのアカウントは不定期でつぶやくことになると思いますので、速報性はあまり期待せずに。おそらくはPandocのオプションを気ままに紹介という運用になるかな、と。

MailingList

こちらは英語ですが、pandoc-discussのやり取りを追うのはPandocの開発の方向性やFAQ的にどういう質問が来ているのだろうか?という情報収集に便利です。そのままIssueやPRになるものもあるので、参加しておくと良いかもです。たまにniszetも回答しますがあんまり役にたってない気もする。

groups.google.com

Pandocの質問ガイドとしても、Issueでは質問せず、こちらで質問をしてほしいこと、そしてIssue建てるにしても過去のIssueやこのdiscussで議論されていないか?を確認したうえで、discussに投稿してからIssueにすることが推奨されます。なので、Pandocにコントリビュートしたいな~という方もやはりこのメーリングリストを常に見ていくべき、ということですね。

GitHub

Issuesを追うのもアリですが、解決するものはすぐ解決、解決しないものはずっと残りがちなので、なかなか良いIssueを見るのが難しい気もします。いずれにしてもdiscussに比べると重い話が多いので、discussでは飽き足らない人向けですね。

github.com

おまけ:いち早くPandocのリリース情報を察知しよう

さて、Pandocのリリース通知が来るたびにほぼリアルタイムでツイートしている私ですが、いつ頃来そうか、一応目安にしているものがあります。commitログをみていると、バージョンを上げるcommit、"Bump to ..." というのが見つかります。まずこれが出ないとバージョンが上がらないので、これを見つけます。

次に、リリースが近い場合は機能追加は減り、ドキュメントやテストの整備などのcommitが増えます。AUTHORS、changelogあたりの修正をしている場合はリリース直前ですね。

github.com

リリースするタイミングでおそらくjgm氏が確認してると思われるので、大体の時間の見当がつきます。日本時間の13-15時(14時が多い)か2-4時くらいが多いです。たまに全然違う時間ですが。過去の通知を拾ってきて可視化すると面白いかもしれませんね?

RSSフィードで拾ってくればえぇんちゃう?ってK4氏に言われましたがそれはそれ…。

おわりに

ということで、Pandocの情報収集方法についてさらっと書いてみましたが、あまり有用な記事にはならなかった気がします。

もう少し使用例などを交えた日本語の記事が増えたほうが、「困ったらこれを読め!」みたいになって良いのかもしれませんね…。ツールの動作の原理みたいな話よりも、何が出来るのか、これを作るのにはどうすればよいのか?という記事の方が好まれますよねぇ(そういう意味でPandocで~という記事はやりにくさはありますよね)

やはり、sky_y氏

qiita.com

や、atusy氏、

blog.atusy.net

の記事を追っていくのがやはり良さそうだな、ということで、〆ておこうと思います。

来年は私ももっとPandocのことを情報発信できるよう頑張ります。少し早いですが良いお年を~

(R) Rでe-Statのデータを触っていきたい

e-Statの使い方、Japan.R 2020の動画が一番わかりやすいのでは?

さて、先日のJapan.Rでは私もLTを行いましたが、前半の方でスペシャルゲストとして独立行政法人統計センターの西村さんが「政府統計の総合窓口(e-Stat)の概要」というタイトルでe-Statの使い方について説明をしてくださいました。 japanr.connpass.com

Japan.Rの動画は公開されており、下記URLはこの発表から始まるようにしています。

www.youtube.com

e-StatをRから使うパッケージとして、estatapiパッケージがあるので、上記のe-Statのサイト上で操作しなくても(APIが整備されているデータであれば)こちらからデータの取得が出来て便利です。APIを使用するための登録は必要ですが(私は登録はしてるけどまだこのパッケージを使っていない)

yutannihilation.github.io

RDFやLODとはなんぞや?ということで調べるなら、同じく発表者の西村さんの2015年のこちらの記事を読むのが良さそうだなと思いました(私は読みました)

cran.r-project.org

Rにもrdf形式を扱うパッケージ、rdflibがあるのですが、果たして個人レベルでこれを使うことがあるのだろうか…?という気持ちです(e-Statからもrdf形式ではデータを入手するわけではないはずなので)

www.jstage.jst.go.jp

動画でも触れられていますが、整備されているデータはどうしても人手が必要なのでまだごく一部(といっても量だけ見れば結構な量ですが…)となっており、すべてのデータが快適に使えるまでには時間がかかりそうです。

ただ、統計法が2019年5月1日に改正されて、利用者の範囲が拡大されるなどしてデータをより広く使われるようにしていくという方向性は続きそうなので(詳細は調べてみてくだしあ…)、うまく利活用していきたいですね。

まぁそれはそれとして、未だpdfだけとかxlsだけとかのはやめていただきたいですわねぇ…(あと特定期間にしかデータがなさそうとか、移管されていそうなやつね…。結局、データそのものの存在とかに対するドメイン知識的なモノが必要なので、そのまま突っ込んでいったら迷子になるやつだなーという気持ち…)

Japan.R で 日本Pandocユーザー会の紹介LTをしてきました

あっさりした内容で申し訳ない…。

12/5のJapan.R 2020で"日本Pandocユーザー会の紹介" というタイトルでLTしてきました。

connpassのページはこちらに、

japanr.connpass.com

資料はこちらにあります。

niszet.github.io

今回は特に変態芸(?)もなく普通に紹介だけで終わらせてしまいました。

PandocはRMarkdownの文書のファイル形式を変換する実際の処理をしている(rmarkdownパッケージなどは前処理をしているイメージね)のでRユーザでRMarkdownを使っていれば気づかぬうちにお世話になっている(はず)のツールです。

来年こそはODT形式のシンタックスハイライトを完成させ、rmarkdownパッケージにもPRを出すんだ…

という気持ちで2020年の活動を終えようと思ってます(まだ早くない?)

来年はPandocのイベントをやりたい…やるぞ!

引っ越しました

久々に色々落ち着いた

ということで、中の人がここ1か月ほど引っ越しでバタバタしていました。結局時間もお金も結構かかったけども、とりあえず生活を移行できたのは幸いですね。

ということで、色々止めていたものを再開して行こうと思います。頑張らなくては…。

(Pandoc) docx 出力の場合、BlockQuote 中の HorizontalRule は別段落になる

コード読んだけどまだよくわかってない。

HRはそもそもBlock要素なんですが、ParaなどのBlock要素は正しくBlockQuote中に取り込まれるので、段落要素であることが原因ではないとはわかっていますが、コード見てもまだよくわかってません。docx形式で出力する、水平線がブロック引用(>ではじまる行)内に収まらないという問題です。

--to nativeすれば正しくHRがBQ中にあることは見えるので、Writer依存であることは確認できますね。

んで、あとは生成されたdocxを解凍して、中身のタグを見て、これをluaフィルタで置き換える形で対応すればよいという事で、昨日プロトタイプを書いた。

このあとK4氏の返信見て、それもできるじゃんってことでもう一個かいた。

いずれ気が向いたときにPandoc/lua-filterにPR出します。

asciidoctor出力結果のチェックのために環境を整える

先人がいるのはありがたいことです。

asciidoc/asciidoctor形式の出力ファイルを見るために、指定したツールで正しくレンダリングされるかどうかが判断基準になるため、環境を作っていました。以下はメモ。

環境そのものは下記のブログの記事を参考に入れました(そのリンク先のrubyのインストールも)

ai-gaminglife.hatenablog.com

qiita.com

ただし、rubyのインストールはこのまま実行すると以下のようなメッセージ(抜粋)が出る。

Note, selecting 'libreadline-dev' instead of 'libreadline6-dev'
E: Unable to locate package libgdbm3

上は無視しても良かったが、下はエラーになるので、インストールする一覧からlibgdbm3を削除して再実行して問題なくインストールが進んだ。

rubyのバージョンは一覧中で最も新しかった2.7.2とした。

手元にあるサンプルのadocに不備があるのか、pdf化はうまくいかなかったのだが、最低限まで削除してたら出力は出来た。

しかし、以下のようにエラーメッセージがでて、 --traceつければ何かわかるかなと思ったら内部のエラー状況を出してくるだけで入力ファイルの何が問題なのかはsuggestしてくれないので意味がなかった。どうするのが良いのだろうか?

asciidoctor-pdf -r asciidoctor-pdf-cjk test.adoc
Prawn::Errors::CannotFit
  Use --trace for backtrace

pdf出力できたが、しかし日本語が出力できない。調べるとフォントの問題だったので調べたところ下記の記事の対応で出来そうだった。

qiita.com

ただし、私はrbenvを使用してasciidoctorをインストールしているのでどこにdefault-theme.ymlがあるのかわからなかった。結果としては下記にあった。

/home/niszet/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/asciidoctor-pdf-1.5.3/data/themes/default-theme.yml  

これに追記して、日本語出力が出来た。

なお、調べたかったのは改ページの<<<の扱いで、html出力の場合は無視され、pdf出力場合は正しく改ページがされているようであった。Pandocとしては別にasciidocの先がpdfかhtmlかは気にしないので一律挿入でよさそうだなという見解。

フォント周りはまだ色々ありそうなんだけど面倒くさいので必要になるまで放置。

rubyのインストールは結構時間がかかったのだが、progress bar表示とかしてくれるといいなぁ。動いているのか止まっているのか不安になりますね。

html出力は

asciidoctor  test.adoc -r asciidoctor-diagram -a allow-uri-read -a data-uri -a toc=left

できれいに出力されたので特に深追いをしていない。pdf化出来なかったadocがhtmlは出力できたので、何かキラーパターン的なモノがあるのかもしれない。いずれまた調べるかもしれない。