🎾

Racket: Racketの環境設定ファイル/ディレクトリまとめ

2024/03/27に公開

はじめに

Racketは、シンプルな構文と強力なマクロシステムで知られています。そして、教育分野や研究目的で幅広く利用されています。
Windows や Linux を含む多様な環境で簡単にインストールできるため、関数型プログラミングの入門に最適です。

本記事では、Racketの環境設定に使用する設定ファイルとディレクトリについて解説します。これらの設定を GitHub のdotfilesリポジトリで管理することで、Racket開発環境の再構築が簡単になります。

1. 環境設定ファイル/ディレクトリ一覧

以下に、Racketの設定ファイルとディレクトリの一覧を紹介します。

種別 設定ファイル 設定ディレクトリ (シンボル名) 環境変数 説明 備考
ホームディレクトリ home-dir PLTUSERHOME 初期設定ファイルなどを保存する
ユーザー設定ファイル racket-prefs.rktd pref-dir REPLの入力履歴などを保存 ホームディレクトリ内に配置
初期設定ファイル racketrc.rktl init-dir Racket初期設定ファイル ホームディレクトリと同一
configファイル config.rktd config-dir PLTCONFIGDIR Racket,raco用設定
アドオンディレクトリ addon-dir PLTADDONDIR Racketパッケージ、拡張機能用を保存するディレクトリ
キャッシュディレクトリ cache-dir キャッシュデータを保存するディレクトリ

重要:

  • 環境変数が示されているディレクトリは、環境変数を使用してディレクトリをカスタマイズできます。

  • ディレクトリの具体的な値は、次のコマンドで確認できます。

    racket -e "(find-system-path 'home-dir)"
    

    home-dirの部分を表内のシンボルと入れ替えることで、必要なディレクトリを取得できます。

2. 環境設定ファイル/ディレクトリの詳細

表に示した設定ファイルやディレクトリについて、詳細を説明します。

2.1 ホームディレクトリ

  • 環境変数: PLTUSERHOME
  • デフォルト:
    • UNIX/Linux: $HOME
    • Windows: $USERPROFILE
    • macOS: $HOME

初期設定ファイルなど、Racketに関連する重要なファイルを保存するディレクトリ。
このディレクトリを適切に設定することで、Racketの環境設定を GitHub で管理できます。

2.2 設定ファイル

Racketの各種設定ファイルの役割について解説します。

ユーザー設定ファイル

  • ファイル:
    • UNIX/Linux: racket-prefs.rktd
    • Windows: racket-prefs.rktd
    • macOS: org.racket-lang.prefs.rktd
  • 環境変数: PLTUSERHOME
  • デフォルトディレクトリ:
    • UNIX/Linux: $XDG_CONFIG_HOME/racket
    • Windows: $AppData
    • macOS: Library/Preferences

ユーザー設定を保存する設定ファイル。
また、RacketREPL (ユーザーからの入力を受け、評価し、結果を出力する対話型のインターフェイス)の入力履歴も保存します。
これにより、Racket使用時の効率化を実現します。

注意 :
ロックファイルも作成されます。

初期設定ファイル

  • ファイル: racketrc.rktl
  • デフォルトディレクトリ:
    • UNIX/Linux: $XDG_CONFIG_HOME/racket
    • Windows: $USERPROFILE
    • macOS: Library/Racket

Racket起動時に、自動的に読み込まれる初期設定ファイル。
プログラムやREPLを実行させる前に、あらかじめ実行しておきたい処理をRacket言語で記述します。

次のようなracketrc.rktlでは、起動時にウェルカムメッセージを出力します。

racketrc.rktl
"Welcome. This initialize file for Racket."

注意:
UNIX/Linuxでは、旧来の$HOME/.racketrcも使用できます。

configファイル

  • ファイル: config.rktd
  • 環境変数: PLTCONFIGDIR
  • デフォルトディレクトリ:
    • UNIX/Linux: /etc/racket
    • Windows: etc
      注意:
      デフォルトディレクトリはインストールディレクトリ下のetcとなる。

ライブラリやパッケージなどの検索パスを設定するファイル。
そのほか、パッケージインストール時のデフォルトスコープも設定できます。
これにより、Racketシステムスコープかユーザースコープかを自動的に選んでインストールできます。

2.3 設定ディレクトリ

アドオンディレクトリ

  • ディレクトリ: addon-dir
  • 環境変数: PLTADDONDIR
  • デフォルト:
    • UNIX/Linux: $XDG_DATA_HOME/racket
    • Windows: pref-dir
    • macOS: Library/Racket

パッケージ、拡張機能を保存するディレクトリ。
パッケージマネージャーracoを使用してパッケージやライブラリ、拡張機能などをインストールしたときに、それらを保存するディレクトリです。
環境変数PLTADDONDIRによって、保存するディレクトリを設定できます。

注意:
UNIX/Linux では、旧来の.racketディレクトリも利用できますが、現在は推奨されていません。

キャッシュディレクトリ

  • ディレクトリ: cache-dir
  • 環境変数:
  • デフォルト:
    • UNIX/Linux: $XDG_CACHE_HOME/racket
    • Windows: addon-dir
    • macOS: Library/Caches/Racket

Racketが生成するキャッシュを保存するディレクトリ。
Racket言語がキャッシュを利用する場合に、生成したキャッシュをこのディレクトリ下に保存します。

注意:
UNIX/Linux では旧来の.racketも指定できます。

おわりに

Racketの設定に使用するファイル、ディレクトリ、環境変数についてまとめました。
これらを自分の PC用にカスタマイズし、GitHub のdotfilesリポジトリで管理することにより、Racket開発環境の再構築が簡単になります。

次は、Racketでのプログラミングを通して関数型プログラミングへの理解を深めましょう。
関数型プログラミングの考え方を身につけることで、効率的かつ安全なプログラミングが可能になります。
関数型プログラミングの学習を通して、自身のプログラミングをスキルアップしましょう。

最後に、Happy Hacking!

技術用語と注釈

この記事で使用する技術用語をリストアップします:

  • Racket:
    シンプルな構文と強力なマクロシステムが特徴の関数型プログラミング言語。 教育や研究に広く用いられる

  • raco:
    Racket用コマンドラインツールおよびパッケージマネージャー。Racketの開発環境やプロジェクト管理を容易にする

  • 関数型プログラミング:
    データの不変性や関数の第一級オブジェクトとしての扱いに重点を置くプログラミングパラダイム。副作用を最小限に抑えることで、より安全で再利用しやすいコードを実現する

  • REPL (Read-Eval-Print-Loop):
    コマンドや式を評価してその結果を即座に表示する対話型インターフェイス。RacketではREPLを利用してプログラムのテストやデバッグ、プロトタイピングができる

  • マクロシステム:
    Racket言語の構文を拡張し、新たな構文構造を定義することを可能にする機能。これにより、言語の表現力が大幅に向上し、プログラマの生産性が高まる

  • XDG Base Directory:
    UNIX/Linux におけるユーザーの設定ファイル、データファイル、キャッシュファイルなどを整理し、管理するための標準仕様。この仕様に従うことで、ファイルシステムが整理され、ユーザーデータのバックアップや移行が容易になる。

参考資料

Webサイト

  • FileSystem:
    Racket言語におけるファイルシステムの操作に関する公式ドキュメント。
    Locating Pathsセクションでは、今回説明した各種ファイル/ディレクトリを利用するかを解説している。

  • Installation Configuration and Search Paths
    Racketとそのパッケージマネージャーracoの設定ファイルと検索パスに関する公式ドキュメント。
    インストール時の設定や、racoがどのようにしてパッケージや設定ファイルを検索するかの説明が含まれています。

  • Racket Documentation:
    Racket公式ドキュメント

  • Racket - Discord
    DiscordRacketチャンネル

GitHubで編集を提案

Discussion