Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最近のRパッケージ開発事情

 最近のRパッケージ開発事情

Kazuhiro Maeda

April 06, 2019
Tweet

More Decks by Kazuhiro Maeda

Other Decks in Technology

Transcript

  1. 最近のR
    パッケージ開発事情
    最近のR
    パッケージ開発事情
    LINE Fukuoka
    株式会社
    LINE Fukuoka
    株式会社
    前田和寛(Kazuhiro Maeda)
    前田和寛(Kazuhiro Maeda)
    2019/04/06
    2019/04/06

    View Slide

  2. why creating R package?
    why creating R package?

    View Slide

  3. 「なければ作る」
    「なければ作る」
    Sometimes, we look for R packages to do the
    processing we want to achieve
    However, the packages we seek may not exist
    (If we look for it carefully, it will exist)
    「なければ作ればいい」

    View Slide

  4. Procedure of R package dev
    Procedure of R package dev
    1. Prepare environment for R package-dev
    2. Create repository and R-project
    3. Write codes, descriptions, documents
    4. Build and Testing
    5. Deploy
    6. Create the information-site of this package

    View Slide

  5. Prepare environment for R
    Prepare environment for R
    package-dev
    package-dev

    View Slide

  6. Applications required for R-package dev
    Applications required for R-package dev
    git
    for version control
    R
    RStudio
    IDE for R
    web browser
    for access git(github) and check docs

    View Slide

  7. R packages for dev
    R packages for dev
    devtools
    tool-set of R package dev
    roxygen2
    useful package for generating/modifying descriptions
    usethis
    useful package for creating R package
    testthat
    for test
    rmarkdown
    for rendering documents
    pkgdown
    for creating web-site of this package

    View Slide

  8. Create repository and R-
    Create repository and R-
    project
    project

    View Slide

  9. Prepare R-project
    Prepare R-project
    Create R-project
    Create R-project
    this one:
    usethis::create_package("path_to_project_directory")

    View Slide

  10. Add license
    Add license
    If you want to add “MIT” license, run this code:
    usethis::use_mit_license()
    Another licenses(CC0, GPL, etc
    …), see .

    View Slide

  11. initialize git
    initialize git

    View Slide

  12. Prepare git(github)
    Prepare git(github)
    Create git repository
    Create git repository

    View Slide

  13. Copy repository’s url
    Copy repository’s url
    Please do not create any files at this point.

    View Slide

  14. connect R-package and repository
    connect R-package and repository
    Click ‘Terminal’ tab and run these command:
    git remote add origin (repository_url)
    git add .
    git commit -m "first commit"
    git push --set-upstream origin master
    This is a kind of samples.

    View Slide

  15. Write codes, descriptions,
    Write codes, descriptions,
    documents
    documents

    View Slide

  16. Description method using roxygen2
    Description method using roxygen2
    Concepts
    Concepts
    The premise of roxygen2 is simple:
    describe your functions in comments next
    to their definitions and roxygen2 will
    process your source code and comments
    to produce Rd files in the man/ directory.
    How to write
    How to write
    It is a easier way to check this cheat sheet:
    https://www.rstudio.com/resources/cheatsheets/#package

    View Slide

  17. example
    example
    from roxygen2 repository:
    #' The length of a string (in characters).
    #'
    #' @param string input character vector
    #' @return numeric vector giving number of characters in each element of
    #' character vector. Missing strings have missing length.
    #' @seealso \code{\link{nchar}} which this function wraps
    #' @export
    #' @examples
    #' str_length(letters)
    #' str_length(c("i", "like", "programming", NA))
    str_length <- function(string) {
    string <- check_string(string)
    nc <- nchar(string, allowNA = TRUE)
    is.na(nc) <- is.na(string)
    nc
    }

    View Slide

  18. example:

    View Slide

  19. create documents
    create documents
    If you wrote this, you just need to do this:
    devtools::document()
    This function create documents. For example, help,
    vignette, DESCRIPTION(package meta info), NAMESPACE
    and so on.

    View Slide

  20. Build and Testing
    Build and Testing

    View Slide

  21. Build check
    Build check
    Click “Check” button on “Build” tab:
    If you get error or warning, fix it.

    View Slide

  22. Build and test
    Build and test
    Click “Install and Restart” button on “Build” tab. After
    build and installed your package, execute and test the
    function to see if it works as intended:

    View Slide

  23. Check help
    Check help
    If you have already run and
    executed , you could see the help
    documents you write:

    View Slide

  24. View Slide

  25. Test using testthat
    Test using testthat
    If you want to use automated test application(e.g.,
    CircleCI), testthat package may help you.
    For more detail about testthat, please see the
    .
    package
    site

    View Slide

  26. Deploy
    Deploy

    View Slide

  27. Edit DESCRIPTION
    Edit DESCRIPTION
    You have to edit file

    If you want add “package dependency”, use
    :
    usethis::use_package("name_of_package", type = "Imports")

    View Slide

  28. Write README.md(or README.Rmd)
    Write README.md(or README.Rmd)
    Write!

    View Slide

  29. How to deploy
    How to deploy
    It will be a quick way to publish to GitHub. You are
    already connected with github, so it’s OK if you push the
    project.

    View Slide

  30. Release on GitHub
    Release on GitHub

    View Slide

  31. Create the infomation-site of
    Create the infomation-site of
    this package
    this package

    View Slide

  32. Create site using pkgdown package
    Create site using pkgdown package
    1. install package
    2. edit (or )
    3. run this code:
    pkgdown::build_site()

    View Slide

  33. Yeah!

    View Slide

  34. Deploy the site
    Deploy the site
    1. git add -> git commit -> git push
    2. access github and go to this repository
    3. click “Setting” tab
    4. activate “GitHub pages”
    choose “master branch /docs folder” at Source area
    5. access
    and check it

    View Slide

  35. Summary
    Summary

    View Slide

  36. Let’s develop your package easily using
    Let’s develop your package easily using
    these packages!
    these packages!
    devtools
    roxygen2
    usethis
    testthat
    rmarkdown
    pkgdown
    https://devtools.r-lib.org/
    https://github.com/klutometis/roxygen
    https://usethis.r-lib.org/index.html
    https://testthat.r-lib.org/
    https://bookdown.org/yihui/rmarkdown/
    https://pkgdown.r-lib.org/

    View Slide

  37. Enjoy!
    Enjoy!

    View Slide