niszetの日記

細かい情報を載せていくブログ

(雑記)アウトプットしようぜって話

技術同人誌書くのにちょっと飽きたからブログ書いてみようってはなしじゃないんだからね!?

さて、たまには緩い話を。

最近、このブログとかTwitterとかを監視見ていただいて方が増えてきたようなので、みんなも書こうぜっていう話です。

ドキュメントに書きだすのはわかりつつあるときが一番良い。

技術者…に限った話じゃないかもしれませんが、一度わかってしまったことって自分の中で常識化してしまって、新人や後輩に教えるときとかに「何がわかっていないのか」の前提が共有できなくなってしまったりしますよね。あとは特定の技術に対して、その下地になる別の多数の基本技術との関係とか。何がきっかけでわかるようになったのか、わからないときはどういうイメージだったのか、などなど。

そして、何かをまとめるとき、自分の中で常識化してしまったものはこのわかるようになる過程を書いていくのが結構難しい、というかもう覚えてないわけですから書けないんですよね。

一方で、トップダウン的に情報を整理整頓して階層構造、依存関係を明らかにしてまとめていくっていうのは"完全に理解した"あとでないとなかなか難しいのですが。

まぁ何が言いたいかって、「!?…わかったかも?」くらいのタイミングでブログとかにどんどんアウトプットしていきましょうっていう話で、↑に書いたみたいに理解してから書こうと思うと、わかる過程の感覚が書けないのです。こうやったらできた、とか、こうではうまくいかない…という記録が、わかる過程の記録です。書いておくとよいと思うのです。

もちろん自分が再入門("全部忘れた!"とき)するときも、役に立ちますね。

この、アウトプットする過程で情報をある程度整理して書かねばならないので、自分の理解がどこまでか?みたいなこともわかるわけですね。そして、不足している部分が見つかって、それを勉強する・・・と。

一方で、よくわかってからトップダウン的に整理整頓して書く時も、なんだかんだで抜けている部分があるので、そこも自分が振り返れるようにまとめておくのは良いのではないかなーって思うのでした。

という、まさに「!?…わかったかも?」のタイミングで書いている文章が↑なのでした。

これは雑記帳としての記事なのでこれでいいかな。本当はもうちょっと整理した方が良いですね。読みにくいから。

でも、読みやすい文章とは…とか構成…校正…みたいにやってる中の息抜き文章ということでここはひとつ。

作業にもどろう。

(R) TokyoR72 でLTしてきました。

もうちょっと発表は頑張ろうっていつも思うよね。

資料は公開しています。Rmdもあるので画像以外は使えるので、RMarkdown書く時のご参考に。

TokyoR 72 LTskimrとsummarytoolsパッケージの紹介

skimrパッケージとsummarytoolsパッケージの紹介をしました。

はい。

なんだかんだでスライドに収める部分が一番苦労しましたね…。skimrはヒストグラムが文字化けする、summarytoolsはそもそもほとんどカスタマイズできないので頑張って一枚に収まるように加工する、など。

欠測が見れることと集計結果を流用できることは強み

発表でも説明しましたが、可視化という意味ではどちらも強いですが、欠測の有無の確認や分布の確認が同時にでき、結果をdata.frame(tibble)で渡せる点はskimrの強みです(summarytoolsは多分渡せないと思う…)

ぱっと結果を見るならsummarytools、使い込むならskimrじゃないかなと思います。が、どうなんでしょ

もっと詳しく説明できる部分があるので、まとまった時間が取れたときにでもQiitaあたりに記事を作っていこうと思います。

しばらくは技術書典に向けて全力なので、9月のブログの更新量はかなり落とすと思います(本当かな?

Enjoy!!

(HW)基板設計の勉強を始めた…。

いうほど進んでない。

今はこれを通勤中に読んでいます。最近出版されたものなので、(僕は詳しくわからないけど)情報の時代遅れ感とかもなく、実践的(多分、製品レベルまでいける?)でフレッシャーズの時点で読めるのであれば読んでおくべき一冊ではないかなって思いました(まだ読んでるけど shop.cqpub.co.jp

基板の設計やったことないのですが、KiCadも出て同人HW界隈はなんか基板作れないとダメなのでは(たぶんそんなことはないが)という気になるので、仕事では多分レビュー程度にしか参加しないだろうけど、基板設計を一通り勉強することにしたのでした。

上記の本はKiCadの登場前の出版だと思うので、そのあたりの情報はないので注意?

KiCadならこっちなんだろうけど、今はツールに依存した情報よりはもうちょっと設計一般を知りたいので。

shop.cqpub.co.jp

そしてこれ、

shop.cqpub.co.jp

が次に控えている。こちらはもうちょっと材料とか基板そのものについての情報が多めで、基板屋じゃなければそれほど・・・という気もするが、知っておきたいと思って購入。

そしてこれ

shop.cqpub.co.jp

がさらに控えていて、こちらはディスクリートの知識が全くない僕のためにあるような本。結構多岐にわたっているので手元にあると便利なのではと思っているが知見がない。早く読みたい…。

ということで、まだ勉強中というか始まったばかりですが、少しずつ基板まわりを押さえていこうと思います。

そもそもIO屋なんだからこのあたりは知っておいて良い話ではあったんだわなぁ。SI/PIとかばっかりやってたわ。。。

がんばろう💪

(R) ggimageパッケージのgeom_image()でアスペクト比を与えて表示する

サークルカットをRで描きたいだけなのに…。

さて、ggimageパッケージ、用途が良くわかりませんが、ggplot()でプロットする中に画像を埋め込めるので便利です。

が、なんかアスペクト比がおかしくなるのですよね。たとえば

library(ggimage)
ggplot()+geom_image(aes(x=0, y=0), image="circle_title.bmp", size=1, by="width")+coord_equal()

で、こんな感じ。

f:id:niszet:20180824002721p:plain

本当はアスペクト比が勝手に決まるような意図でコードが書かれているようなのですが、有効になっていないようで(原因はちょっと心当たりはある)、内部のコードから必要な部分を取り出して無理やりアスペクト比を変換してみます。

ggimageの内部では下記のようにimage_read2()という関数で画像を取り込んでいます。

ggimage::image_read2("circle_title.bmp")
##  format width height colorspace matte filesize density
## 1    PNG  1008    591       sRGB FALSE        0   72x72

…なのですが、この関数は余白を除いた領域のサイズをとってきます。なんかbmpなのにpngになってますね…。
この関数、画像の表示には良いですが、画像サイズを知りたい場合はこれでは困るので、オリジナルの関数を使います。

magick::image_read("circle_title.bmp")
##   format width height colorspace matte filesize density
## 1   BMP3  1152    648       sRGB FALSE  2239542   72x72

こんな感じ。ちなみにこれらの関数は実行するとVIewerペインに画像が表示されます。

また、この戻り値は

str(ggimage::image_read2("circle_title.bmp"))
## Class 'magick-image' <externalptr> 

でmagick-imageクラスになっています(どちらの場合も)。このクラスのオブジェクトが持っている画像の情報を抜き出すにはmagick::image_info()を使います。

magick::image_info(magick::image_read("circle_title.bmp"))
##   format width height colorspace matte filesize density
## 1   BMP3  1152    648       sRGB FALSE  2239542   72x72

これで、widthとheightを知ることが出来ました。この値をとってくるにはそれぞれ

image_width <- magick::image_info(magick::image_read("circle_title.bmp"))$width
image_width
## [1] 1152

image_height <- magick::image_info(magick::image_read("circle_title.bmp"))$height
image_height 
## [1] 648

でよいです。あとはgeom_image()の引数aspに↑で得た幅と高さからアスペクト比を計算して与え、表示領域の固定をします。

ggplot()+geom_image(aes(x=0, y=0), image="circle_title.png", size=1, by="width", asp=image_width/image_height)+
  coord_fixed()+xlim(-image_width/2, image_width/2)+ylim(-image_height/2, image_height/2)

f:id:niszet:20180824002733p:plain

これに軸を消したり背景消したり…ということをthemeで与えてあげると…

ggplot()+geom_image(aes(x=0, y=0), image="circle_title.png", size=1, by="width", asp=image_width/image_height)+
  coord_fixed()+xlim(-image_width/2, image_width/2)+ylim(-image_height/2, image_height/2)+
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
          panel.background = element_blank(), axis.line = element_line(colour = "black", size=1),
          axis.text = element_blank(), axis.title = element_blank(), axis.ticks.length = grid::unit(rep(0, 4), "points"),
          axis.ticks = element_blank(), axis.line.x = element_blank(),
          axis.line.y = element_blank(), plot.margin=grid::unit(rep(0, 4), "points"))

f:id:niszet:20180824003032p:plain

と、オリジナルの画像そのままの表示となりました。

あとはこれに好きな文字を足したり、plotを重ねたりしてあげればよいですね。

ようやくこれでサークルカットが描ける…よかったよかった。

Enjoy!!

(メモ) Guidelines for R packages providing interfaces to Stan (R)

下書きのままずっと放置していたので供養の投稿。

読んだのがずいぶん前なのであまり覚えていませんが、こんなガイドラインがあったのでメモ。tidyの方のガイドラインととあわせて理解しておきたいなと思ってます(私はstan使いではないのだけどね)
とりあえず公開しておいて、記事を修正しなくてはいけない気持ちを高めておく…

Guidelines for Developers of R Packages Interfacing with Stan Guidelines for Developers of R Packages Interfacing with Stan

これは、rstantoolsパッケージのvignettesとして公開されていました。

Stan/RStanのコード規約等どんなものがあるのだろうか?ということで調べていたのですが、上記のvignettesはRでStan I/Fパッケージを開発するときのガイドラインとのことです。
が、そもそもこのパッケージを使っている方いるのだろうか。 stan系のRラッパー開発者向けってことでいいのかな?

Enjoy!!

(技術書典) 進捗

まぁ色々と。

そんなわけで技術書典5に当選し、配置も決定しました。

◎貴サークル「niszet工房」は、 い04 に配置されました。

リンク貼ってよいのかな?こちらです。

https://storage.googleapis.com/techbookfest-static/tbf05/circle-layout.png

また、技術書典5自体は 日時 2018/10/08 (月) 11:00〜17:00

場所は池袋サンシャインシティ2F 展示ホールD(文化会館ビル2F)です。

株式会社サンシャインシティ 展示ホールご案内|施設概要

進捗

今回はRStudio 1.2.x (preview)を使って、Pandoc 2.x の機能を使えるだけ使ってR MarkdownからWord文書を作成する方法についてまとめていっています。 現在、30ページくらいですが、どこまで増えるのかは時間次第ですね。

図表とか整形で結構ページ数は変わるのでは?と思っているので↑のページ数はあまりあてにならないです。

あんまり需要ない話だと思うので、50部あれば良いよねって思ってます。電子版の予定は今のところないです(作り方わからない)

とりあえずいろんなものが全然わからないので、ワンストップ!技術同人誌を書こう(同人誌版)を読んで勉強中です。

がんばろう、楽しもう!

(R) RStudio preview releaseを使えばPowerPointプレゼンテーションが作れるようになりましたよ

速報性が高い。

mdからpandocに投げるところ自分で書いてやろうかと思っていましたが公式に対応されました。

support.rstudio.com

もともとPandoc 2.x系はpptx作れるので、RStudio側の対応まだかなーって思っていたところでした。

とりあえず出力されることは確認した。

とりあえず何も考えずにR MarkdownからPower Point Presentationが出力されるように選択して、そのままknitを実行、

f:id:niszet:20180819235951p:plain

味もそっけもないスライドが作られました。

f:id:niszet:20180820000001p:plain

ちゃんとした?スライドを作るにはアレコレ細工が必要そうですが、それは追って調べていきます。まぁ結構便利かな…どうなんですかね?

そういえば、このpreview版使ったらメニューがこんな感じで、Python は普通に出てくるし、SQLやらPlumberの文字まで見える。すごいモリモリになりそうだなぁ。進化が楽しみ。日本語入力がもうちょっとまともになってくれれば神環境になれるのだが、さて…。 f:id:niszet:20180820000206p:plain

Enjoy!