$30 off During Our Annual Pro Sale. View Details »

CRANパッケージの作成・投稿とコードレビュー対応 〜 GoogleImage2Array パッケージでの事例紹介 〜 @ BioPackathon

CRANパッケージの作成・投稿とコードレビュー対応 〜 GoogleImage2Array パッケージでの事例紹介 〜 @ BioPackathon

CRANパッケージの作成・投稿とコードレビュー対応
〜 GoogleImage2Array パッケージでの事例紹介 〜
@BioPackathon

skume

April 19, 2023
Tweet

More Decks by skume

Other Decks in Programming

Transcript

  1. Satoshi Kume
    CRANパッケージの作成・投稿と
    コードレビュー対応
    〜GoogleImage2Arrayパッケージでの事例紹介〜
    211013 @ BioPackathon

    View Slide

  2. 今回の内容
    ・ GoogleImage2Arrayパッケージの概要
    ・ CRANへの投稿とコードレビュー対応
    ・ RコードのTips:
    ・Exampleコードのラップ⽅法(donttest{} etc)
    ・サンプル実⾏時にローカル保存させない
    ・on.exit()
    ・ CRANでのコンパイルエラー

    View Slide

  3. 今回の内容
    ・ GoogleImage2Arrayパッケージの概要
    ・ CRANへの投稿とコードレビュー対応
    ・ RコードのTips:
    ・Exampleコードのラップ⽅法(donttest{} etc)
    ・サンプル実⾏時にローカル保存させない
    ・on.exit()
    ・ CRANでのコンパイルエラー

    View Slide

  4. https://cran.r-project.org/web/packages/GoogleImage2Array/index.html
    GoogleImage2Arrayパッケージ
    主な⽤途:
    ・R上で使う画像取得全般
    ・機械学習などで使うデータ
    GANとか分類問題とか
    次元圧縮とか
    概要:
    ・Google画像検索の結果をR
    に取り込んで、4次元アレイ形
    式に変換する
    ・画像の可視化
    ・ 4次元アレイの結合 (New)

    View Slide

  5. R Array (アレイ, 配列) とは??
    R Array/配列とは、⾏列を多次元に拡張したもの。
    Matrix/⾏列: 2次元のデータ構造
    Array/配列: 3次元、4次元、それ以上の次元のデータ構造。
    http://venus.ifca.unican.es/Rintro/dataStruct.html
    要素
    ex. numeric

    View Slide

  6. 多次元テンソルの⼤まかな考え⽅
    https://www.javatpoint.com/pytorch-tensors
    要素
    ex. numeric
    2D画像の扱いは、
    2D テンソル ??
    2D画像の扱いは、
    ・横ピクセル数
    ・縦ピクセル数
    ・チャネル(RGBなど原色数)
    ・画像の枚数

    View Slide

  7. GoogleImage2Arrayパッケージでできること
    Google画像検索をすると
    画像のサムネイルが表⽰される
    検索
    R アレイ/テンソル
    (20 images/query)
    画像取得&変換
    R上での可視化
    (ラスター表⽰)
    20 images以上取得したい場合
    RSeleniumパッケッージを使うことに

    View Slide

  8. 実⾏コード
    アレイの取得: GoogleImage2array関数
    (20, 幅ピクセル数, ⾼さピクセル数, チャネル数)
    アレイの結合
    (1次元⽅向で)
    アレイの可視化: display.array関数

    View Slide

  9. GoogleImage2array関数の中⾝をちょっと説明
    https://github.com/kumeS/GoogleImage2Array/blob/main/R/GoogleImage2array.R
    URL⽣成 + %エンコード
    検索⾔語の指定
    Webスクレイピング
    + 画像URL取得
    画像処理、アレイへの変換
    などの処理と続く
    関数の引数
    wh: 縦横ピクセル数
    Col: カラー(T) or グレイ(F)
    Save: ローカル保存の有無
    gl: 検索エリア指定

    View Slide

  10. CRANへの投稿
    https://cran.r-project.org/submit.html
    必要事項の記載
    gzファイルを選択
    ここをクリック

    View Slide

  11. CRANへの投稿(準備)について、詳しくは
    を参照のこと

    View Slide

  12. CRANから本⼈確認メールが届く
    ココをクリック

    View Slide

  13. 次に、投稿完了のメールが届く

    View Slide

  14. 次に、CRANでのコンパイルが⾛る
    OKなら、レビューが始まる

    View Slide

  15. 約11時間後、、コードレビュー結果が返ってくる
    ハヤっ!!
    WebサービスのURLを概要
    に⼊れてください。
    コメントは4点
    Exampleは、dontrun{}ではなく、
    donttest{}を使ってください。
    テストの途中ファイルをローカ
    ルに保存しないでください。
    ユーザーの設定を変えない
    でください。この場合、
    on.exit()を使ってください。

    View Slide

  16. 修正して再投稿 〜投稿時と同じところで〜
    https://cran.r-project.org/submit.html
    ココにレスポンス・
    修正点を書く。
    論⽂のレスポンスレターというより、
    カジュアルな返事でOK!!

    View Slide

  17. 次の⽇にOKメールが届く
    同⽇中には、CRANに登録されていた。

    View Slide

  18. 今回の内容
    ・ GoogleImage2Arrayパッケージの概要
    ・ CRANへの投稿とコードレビュー対応
    ・ RコードのTips:
    ・Exampleコードのラップ⽅法(donttest{} etc)
    ・サンプル実⾏時にローカル保存させない
    ・on.exit()
    ・ CRANでのコンパイルエラー

    View Slide

  19. RコードのTips: Exampleコードのラップ⽅法/例外ルール
    https://runebook.dev/ja/docs/r/library/utils/html/example
    コードが本当に実⾏でき
    ない時だけ
    # Not run: ⾏を追記
    (1)実⾏が5秒以上かかる
    (2)途中でデータダウン
    ロードを実⾏する
    実⾏が正常かつ5秒未満なら、unwrapする
    結果として、サンプルコードは、
    donttestか、unwrapを推奨

    View Slide

  20. RコードのTips: ローカル保存させない
    https://github.com/kumeS/GoogleImage2Array/blob/main/R/GoogleImage2array.R
    デフォルト値が「Save=TRUE 」
    になっていたのを突っ込まれる。
    引数
    wh: 縦横ピクセル数
    Col: カラー(T) or グレイ(F)
    Save: ローカル保存の有無
    gl: 検索エリア指定
    どうしても保存したい場合は、
    tempdir()で作成される⼀時ディレ
    クトリに出⼒するようにとのこと。

    View Slide

  21. RコードのTips: on.exit()を使って、ユーザーオプション
    (作図の設定 etc)を元に戻すこと。
    http://cse.naro.affrc.go.jp/takezawa/r-tips/r/31.html

    View Slide

  22. RコードのTips: CRANでのコンパイルエラー
    CRANでは、毎回、コンパイル環境が違う?
    1つくらいなら、Errorがでててもあまり気にしなくてもよそさそう。

    View Slide

  23. RコードのTips: CRANでのコンパイルエラー
    CRANでは、毎回、コンパイル環境が違う?
    1つくらいなら、Errorがでててもあまり気にしなくてもよそさそう。

    View Slide

  24. まとめ
    ・ パッケージ作成 2⽇、投稿・レビュー・再投稿1.5⽇
    => 今回、コードの下書きがあったので、
    パッケージ化から3⽇程度で、CRANに採択された。
    ・ コードレビューは、コードの中⾝というより
    CRANポリシーに合っているかどうかが審査される。
    ・ 普段のデータ解析⽤途では、気にしてないところを突っ込まれる

    View Slide