getwd()
[1] "/home/runner/work/rrr/rrr"
再現可能なデータ分析を可能にするために、いくつかの基本的な概念を理解する必要があります。 ここでは再現可能性を求めるデータ分析作業においてR言語を利用することを前提とし、再現性に関する基礎知識を身につけます。
コンピュータ上のファイルやディレクトリ(フォルダ)は、それぞれ一意の場所を持っています。 この場所を示すために、フォルダやファイルにはパス(path)と呼ばれるものが与えられます。 パスは、ファイルやディレクトリの住所のような存在で、文字列で表現されます。
パスは、プログラムの実行時に重要な役割を果たします。 プログラムがファイルを読み込む際や、ファイルを書き込む際には、そのファイルのパスを指定する必要があります。 そのためプログラム初心者が最初につまづく要因の一つが、パスの指定方法です。 パスは正確に記述しないと、プログラムがファイルを特定できないためにエラーが発生します。
Rを使う際には、作業ディレクトリ(working directory)という概念が重要です。 作業ディレクトリは、Rがファイルを読み込む際や書き込む際の基準となるディレクトリです。 作業ディレクトリは特定のフォルダを指定します。 通常はユーザーのホームディレクトリが作業ディレクトリとなりますが、必要に応じてsetwd()
関数を使用して変更可能です。
~/Documents
が作業ディレクトリとなっている。コンピュータには、プログラムが動作するために必要な条件、設定が存在します。 この条件や設定のことを「環境」と呼びます。 環境はコンピュータのOS(オペレーティングシステム)、ハードウェア、ソフトウェア、ネットワークなど、さまざまな要素で構成されています。 そのため、コンピュータ間で同じ環境を用意することは容易ではありません。
環境の違いは、プログラムの動作に影響を与えることがあります。 例えば、あるコンピュータで動作するプログラムが、別のコンピュータで動作しなかったり、出力結果が異なることがあります。 例を見てみましょう。 Rの作業ディレクトリを示す getwd()
関数をmacOSとWindowsで実行した場合、それぞれのOSに応じたディレクトリが表示されます。 以下は著者のR実行環境であるmacOSでの実行結果ですが、Windowsで実行した場合、ディレクトリの先頭は通常 C:/
となります。
getwd()
[1] "/home/runner/work/rrr/rrr"
プログラムは通常、バージョン(版)を示すための番号であるバージョン番号を持っています。 バージョン番号を見ることで、そのプログラムの新しさを知ることができます。
プログラムは一度作成されると、その後も更新されていくのが普通です。 完成したプログラムにバグ修正や機能追加が行われると、バージョン番号が更新されます。 バージョン番号を見ることで、そのプログラムが新しいものなのか、また、リリースノートなどの情報を見ることで、どのような変更が行われたのか、どのような機能を持っているのかを知ることができます。
バージョンの違いは環境の違いの一因となります。 あるバージョンでは実装されていないプログラムがあったり、 バージョンが古いために挙動が異なることがあります。
バージョンの表記方法にはさまざまな形式があります。 その中で、セマンティックバージョニング(Semantic Versioning)は、バージョン番号の付け方の一つです。 バージョン番号を、Major.Minor.Patch
の3つの数字で構成されます。
例えば1.2.3
のバージョンは、Major
が1、Minor
が2、Patch
が3です。 バージョン番号を構成する3つの数字の意味は以下の通りです。 Major
は互換性がない変更があった場合に増やします。 Minor
は互換性がある機能追加があった場合に増やします。 Patch
は互換性があるバグ修正があった場合に増やします。
セマンティックバージョニングは、バージョン番号の付け方を開発者間で統一することで、バージョン番号だけで互換性の情報を得られるようにするためのルールです。 上記のような規則がありますが、実際にはこの規則に従っていない場合もあります。
Rのバージョンはセマンティックバージョニングと同様に3桁の数字で構成されています。 年度初めの4月下旬に新しいメジャーあるいはマイナーバージョンがリリースされることが多く、 その年度内には3、4回のパッチバージョンアップが行われるのが通例です。
本書執筆時の最新版は、2024年6月にリリースされたR4.4.1です。 利用しているRのバージョンはR起動時のメッセージや version
の実行などで確認できます。
Rでのバージョンの違いは、R本体の機能だけでなく、インストール可能なパッケージにも影響を与えます。 パッケージによっては、動作条件に特定のRバージョンが必要となることがあります。 また、第3章以降で導入する統合開発環境のRStudioの実行にはR3.6.0以上が必要です。
プログラムのバージョンは日々更新されています。 そのため、バージョンを最新版に保つことが重要です。 一方、バージョンを更新することで、以前のバージョンとの互換性がなくなることがあります。 また、複数人で実行するプログラムの場合、環境間でのバージョンの違いが問題となることがあります。 そのため、バージョンを更新する際には、その影響を十分に検討し、事前に方針を決めておくことが重要です。
一つの方針として、常に最新のバージョンを利用することが挙げられます。 先に書いたような利点がありますが、プログラムに関わる全員が最新版を利用できる環境であることが前提となります。 もう一つの方針は、安定版を利用することです。 安定版は、バグが少なく、互換性が高いため、安定して利用できることが特徴です。 例えば最新バージョンが4.4.1である場合、4.3系の最新版である4.3.3を利用する、というような方針です。 この方針に従えばバージョン更新の手間を減らせますが、時間の経過とともに安定版の見直しを行うと良いでしょう。