From a50566472f810737594363ad048dfad7963bd908 Mon Sep 17 00:00:00 2001 From: Toshiyuki Yoshida Date: Thu, 26 Sep 2024 10:36:54 +0900 Subject: [PATCH] Add Japanese translations and implement I18N support - Add Japanese translations for documentation - Implement I18N framework - Update mkdocs.yml for multi-language support This commit significantly enhances the project's internationalization. --- docs/ja/advanced.md | 108 + docs/ja/contributing.md | 132 + docs/ja/encryption.md | 150 + docs/ja/external-editors.md | 113 + docs/ja/formats.md | 328 ++ docs/ja/installation.md | 37 + docs/ja/journal-types.md | 68 + docs/ja/overview.md | 44 + docs/ja/privacy-and-security.md | 223 ++ docs/ja/reference-command-line.md | 162 + docs/ja/reference-config-file.md | 127 + docs/ja/tips-and-tricks.md | 214 ++ docs/ja/usage.md | 254 ++ docs_theme/laungae_selector.html | 23 + mkdocs.yml | 96 +- poetry.lock | 1455 +++++---- pyproject.toml | 77 +- site/404.html | 192 ++ site/advanced/index.html | 322 ++ site/assets/colors.css | 34 + site/assets/highlight.css | 141 + site/assets/index.css | 325 ++ site/assets/theme.css | 378 +++ site/contributing/index.html | 360 +++ site/css/fonts/Roboto-Slab-Bold.woff | Bin 0 -> 87624 bytes site/css/fonts/Roboto-Slab-Bold.woff2 | Bin 0 -> 67312 bytes site/css/fonts/Roboto-Slab-Regular.woff | Bin 0 -> 86288 bytes site/css/fonts/Roboto-Slab-Regular.woff2 | Bin 0 -> 66444 bytes site/css/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes site/css/fonts/fontawesome-webfont.svg | 2671 ++++++++++++++++ site/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes site/css/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes site/css/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes site/css/fonts/lato-bold-italic.woff | Bin 0 -> 323344 bytes site/css/fonts/lato-bold-italic.woff2 | Bin 0 -> 193308 bytes site/css/fonts/lato-bold.woff | Bin 0 -> 309728 bytes site/css/fonts/lato-bold.woff2 | Bin 0 -> 184912 bytes site/css/fonts/lato-normal-italic.woff | Bin 0 -> 328412 bytes site/css/fonts/lato-normal-italic.woff2 | Bin 0 -> 195704 bytes site/css/fonts/lato-normal.woff | Bin 0 -> 309192 bytes site/css/fonts/lato-normal.woff2 | Bin 0 -> 182708 bytes site/css/theme.css | 13 + site/css/theme_extra.css | 197 ++ site/encryption/index.html | 362 +++ site/external-editors/index.html | 318 ++ site/formats/index.html | 533 ++++ site/img/banner_og.png | Bin 0 -> 229935 bytes site/img/banner_twitter.png | Bin 0 -> 179094 bytes site/img/favicon.ico | Bin 0 -> 16958 bytes site/img/favicon.svg | 15 + site/img/jrnl_white.svg | 10 + site/img/logo.svg | 16 + site/img/logo_white.svg | 9 + site/img/sprites.svg | 14 + site/index.html | 127 + site/index.js | 1 + site/installation/index.html | 251 ++ site/ja/advanced/index.html | 306 ++ site/ja/contributing/index.html | 347 ++ site/ja/encryption/index.html | 353 +++ site/ja/external-editors/index.html | 296 ++ site/ja/formats/index.html | 487 +++ site/ja/installation/index.html | 246 ++ site/ja/journal-types/index.html | 284 ++ site/ja/overview/index.html | 257 ++ site/ja/privacy-and-security/index.html | 417 +++ site/ja/reference-command-line/index.html | 426 +++ site/ja/reference-config-file/index.html | 342 ++ site/ja/tips-and-tricks/index.html | 380 +++ site/ja/usage/index.html | 417 +++ site/journal-types/index.html | 286 ++ site/js/html5shiv.min.js | 4 + site/js/jquery-3.6.0.min.js | 2 + site/js/theme.js | 2 + site/js/theme_extra.js | 8 + site/overview/index.html | 273 ++ site/privacy-and-security/index.html | 425 +++ site/reference-command-line/index.html | 429 +++ site/reference-config-file/index.html | 349 +++ site/requirements.txt | 2 + site/search.html | 226 ++ site/search/lunr.js | 3475 +++++++++++++++++++++ site/search/main.js | 109 + site/search/search_index.json | 1 + site/search/worker.js | 133 + site/sitemap.xml | 107 + site/sitemap.xml.gz | Bin 0 -> 369 bytes site/tips-and-tricks/index.html | 392 +++ site/usage/index.html | 420 +++ 89 files changed, 20420 insertions(+), 681 deletions(-) create mode 100644 docs/ja/advanced.md create mode 100644 docs/ja/contributing.md create mode 100644 docs/ja/encryption.md create mode 100644 docs/ja/external-editors.md create mode 100644 docs/ja/formats.md create mode 100644 docs/ja/installation.md create mode 100644 docs/ja/journal-types.md create mode 100644 docs/ja/overview.md create mode 100644 docs/ja/privacy-and-security.md create mode 100644 docs/ja/reference-command-line.md create mode 100644 docs/ja/reference-config-file.md create mode 100644 docs/ja/tips-and-tricks.md create mode 100644 docs/ja/usage.md create mode 100644 docs_theme/laungae_selector.html create mode 100644 site/404.html create mode 100644 site/advanced/index.html create mode 100644 site/assets/colors.css create mode 100644 site/assets/highlight.css create mode 100644 site/assets/index.css create mode 100644 site/assets/theme.css create mode 100644 site/contributing/index.html create mode 100644 site/css/fonts/Roboto-Slab-Bold.woff create mode 100644 site/css/fonts/Roboto-Slab-Bold.woff2 create mode 100644 site/css/fonts/Roboto-Slab-Regular.woff create mode 100644 site/css/fonts/Roboto-Slab-Regular.woff2 create mode 100644 site/css/fonts/fontawesome-webfont.eot create mode 100644 site/css/fonts/fontawesome-webfont.svg create mode 100644 site/css/fonts/fontawesome-webfont.ttf create mode 100644 site/css/fonts/fontawesome-webfont.woff create mode 100644 site/css/fonts/fontawesome-webfont.woff2 create mode 100644 site/css/fonts/lato-bold-italic.woff create mode 100644 site/css/fonts/lato-bold-italic.woff2 create mode 100644 site/css/fonts/lato-bold.woff create mode 100644 site/css/fonts/lato-bold.woff2 create mode 100644 site/css/fonts/lato-normal-italic.woff create mode 100644 site/css/fonts/lato-normal-italic.woff2 create mode 100644 site/css/fonts/lato-normal.woff create mode 100644 site/css/fonts/lato-normal.woff2 create mode 100644 site/css/theme.css create mode 100644 site/css/theme_extra.css create mode 100644 site/encryption/index.html create mode 100644 site/external-editors/index.html create mode 100644 site/formats/index.html create mode 100644 site/img/banner_og.png create mode 100644 site/img/banner_twitter.png create mode 100644 site/img/favicon.ico create mode 100644 site/img/favicon.svg create mode 100644 site/img/jrnl_white.svg create mode 100644 site/img/logo.svg create mode 100644 site/img/logo_white.svg create mode 100644 site/img/sprites.svg create mode 100644 site/index.html create mode 100644 site/index.js create mode 100644 site/installation/index.html create mode 100644 site/ja/advanced/index.html create mode 100644 site/ja/contributing/index.html create mode 100644 site/ja/encryption/index.html create mode 100644 site/ja/external-editors/index.html create mode 100644 site/ja/formats/index.html create mode 100644 site/ja/installation/index.html create mode 100644 site/ja/journal-types/index.html create mode 100644 site/ja/overview/index.html create mode 100644 site/ja/privacy-and-security/index.html create mode 100644 site/ja/reference-command-line/index.html create mode 100644 site/ja/reference-config-file/index.html create mode 100644 site/ja/tips-and-tricks/index.html create mode 100644 site/ja/usage/index.html create mode 100644 site/journal-types/index.html create mode 100644 site/js/html5shiv.min.js create mode 100644 site/js/jquery-3.6.0.min.js create mode 100644 site/js/theme.js create mode 100644 site/js/theme_extra.js create mode 100644 site/overview/index.html create mode 100644 site/privacy-and-security/index.html create mode 100644 site/reference-command-line/index.html create mode 100644 site/reference-config-file/index.html create mode 100644 site/requirements.txt create mode 100644 site/search.html create mode 100644 site/search/lunr.js create mode 100644 site/search/main.js create mode 100644 site/search/search_index.json create mode 100644 site/search/worker.js create mode 100644 site/sitemap.xml create mode 100644 site/sitemap.xml.gz create mode 100644 site/tips-and-tricks/index.html create mode 100644 site/usage/index.html diff --git a/docs/ja/advanced.md b/docs/ja/advanced.md new file mode 100644 index 000000000..ebbc46faa --- /dev/null +++ b/docs/ja/advanced.md @@ -0,0 +1,108 @@ + + +# 高度な使用方法 + +## 設定ファイル + +`jrnl`には、テンプレート、フォーマット、複数のジャーナルなど、設定ファイルを通 +してカスタマイズできる多様なオプションがあります。詳細については[設定ファイルリ +ファレンス](./reference-config-file.md)を参照するか、以下の一般的な使用例をお読 +みください。 + +### 複数のジャーナルファイル + +[設定ファイル](./reference-config-file.md)でより多くのジャーナルを定義することで、`jrnl`を複数のジャーナル(例:`private`と`work`)で使用するように設定できます。例えば: + +```yaml +journals: + default: ~/journal.txt + work: ~/work.txt +``` + +`default`ジャーナルは`jrnl`を初めて起動したときに作成されます。 +これで、`jrnl`の代わりに`jrnl work`を使用して`work`ジャーナルにアクセスできます。例えば: + +```sh +jrnl work at 10am: @Steveとのミーティング +jrnl work -n 3 +``` + +これらはどちらも`~/work.txt`を使用しますが、`jrnl -n 3`は`~/journal.txt`から最後の3つのエントリーを表示します(`jrnl default -n 3`も同様です)。 + +各ジャーナルのデフォルトオプションを個別にオーバーライドすることもできます。 +`jrnl.yaml`が以下のようになっている場合: + +```yaml +encrypt: false +journals: + default: ~/journal.txt + work: + journal: ~/work.txt + encrypt: true + food: ~/my_recipes.txt +``` + +`default`と`food`ジャーナルは暗号化されませんが、`work`ジャーナルは暗号化されます! + +`jrnl.yaml`のトップレベルにあるすべてのオプションをオーバーライドできますが、少なくともそのジャーナルのジャーナルファイルを指す`journal: ...`キーを指定してください。 + +以下の設定例を考えてみましょう: + +```yaml +editor: vi -c startinsert +journals: + default: ~/journal.txt + work: + journal: ~/work.txt + encrypt: true + display_format: json + editor: code -rw + food: + display_format: markdown + journal: ~/recipes.txt +``` + +`work`ジャーナルは暗号化され、デフォルトで`json`形式で出力され、VSCodeの既存のウィンドウで編集されます。同様に、`food`ジャーナルはデフォルトでmarkdown形式で出力されますが、他のすべてのデフォルト設定を使用します。 + +### コマンドラインから設定を変更する + +現在の`jrnl`インスタンスの設定フィールドを`--config-override CONFIG_KEY CONFIG_VALUE`を使用してオーバーライドできます。ここで、`CONFIG_KEY`は有効な設定フィールドをドット表記で指定し、`CONFIG_VALUE`は希望する(有効な)オーバーライド値です。ドット表記を使用して、`colors.title`のような他のキー内のキーを変更することもできます。 + +複数のオーバーライドを指定するには、`--config-override`を複数回呼び出します。 + +!!! note +これらのオーバーライドにより、jrnl設定の**_任意の_**フィールドを変更できます。自己責任で使用してください。 + +#### 例 + +```sh +# 高速ログ記録のために`stdin`プロンプトを使用してエントリーを作成する +jrnl --config-override editor "" + +# プロジェクトのログを記録する +jrnl --config-override journals.todo "$(git rev-parse --show-toplevel)/todo.txt" todo タオルを見つける + +# 複数のオーバーライドを渡す +jrnl --config-override display_format fancy --config-override linewrap 20 \ +--config-override colors.title green +``` + +### 代替設定の使用 + +現在の`jrnl`インスタンスに対して、`--config-file CONFIG_FILE_PATH`を使用して代替設定ファイルを指定できます。ここで`CONFIG_FILE_PATH`は代替`jrnl`設定ファイルへのパスです。 + +#### 例 + +```sh +# 個人的なジャーナルエントリーに個人用設定ファイルを使用する +jrnl --config-file ~/foo/jrnl/personal-config.yaml + +# 仕事関連のエントリーに代替設定ファイルを使用する +jrnl --config-file ~/foo/jrnl/work-config.yaml + +# デフォルトの設定ファイルを使用する(初回実行時に作成される) +jrnl +``` diff --git a/docs/ja/contributing.md b/docs/ja/contributing.md new file mode 100644 index 000000000..1ffa150b2 --- /dev/null +++ b/docs/ja/contributing.md @@ -0,0 +1,132 @@ + + +# jrnlへの貢献 + +jrnlへの貢献を歓迎します。バグの報告、ドキュメントの改善、リリースのテスト、機能やバグに関する議論への参加、コードの作成など、さまざまな形での貢献が可能です。 + +## 目次 + +- [行動規範](#行動規範) +- [バグの報告](#バグの報告) +- [ドキュメントの編集](#ドキュメントの編集) +- [テスト](#テスト) +- [機能リクエストとアイデアの提出](#機能リクエストとアイデアの提出) +- [jrnlの開発](#開発) + +## 行動規範 + +まず始めに、[行動規範](https://github.com/jrnl-org/jrnl/blob/develop/CODE_OF_CONDUCT.md)をお読みください。 + +## バグの報告 + +バグは[新しい問題を開く](https://github.com/jrnl-org/jrnl/issues/new/choose)ことで報告してください。できるだけ詳細に説明してください。多くのバグは特定のオペレーティングシステムやPythonのバージョンに固有のものなので、その情報も含めてください! + +## ドキュメントの編集 + +ドキュメントにタイプミスや間違いを見つけた場合は、すぐに修正してプルリクエストを送ってください。何を変更すべきか不確かだが問題を見つけた場合は、「ドキュメントの変更」タイプで[新しい問題を開く](https://github.com/jrnl-org/jrnl/issues/new/choose)ことができます。 + +ドキュメントを編集するには、**develop**ブランチの`docs/*.md`ファイルを編集します。プロジェクトのルートディレクトリで`poe docs-run`を実行し、ブラウザで[localhost:8000](http://localhost:8000)にアクセスすることで結果を確認できます。 + +### 外部エディタとヒントとコツ + +便利だと思うjrnlのコマンドラインテクニックを共有したい場合は、["ヒントとコツ"セクション](tips-and-tricks.md)に追加するとよいでしょう。特定の外部エディタとの統合に関するアドバイスは、["外部エディタ"セクション](external-editors.md)に追加できます。 + +## テスト + +jrnlの保守作業の多くは、コーディングよりもテストに関わるものです。 + +jrnlの性質上、非常に機密性の高いデータを扱うため、データ損失のリスクを冒すことはできません。jrnlには包括的な自動テストスイートがありますが、ユーザーテストはこのリスクを軽減する上で極めて重要です。 + +### プレリリース + +[プレリリースは通常のリリースと同様にPyPiを通じてデプロイされます](https://pypi.org/project/jrnl/#history)。[pipx](https://pypi.org/project/pipx/)を使用してそれらを取得し、テストすることができます。各リリースで変更された内容については[チェンジログ](https://github.com/jrnl-org/jrnl/blob/develop/CHANGELOG.md)を参照してください。 + +### プルリクエスト + +gitに慣れている場合は、特定の[プルリクエスト](https://github.com/jrnl-org/jrnl/pulls)をフェッチし、自分でテストして、結果を報告してください。新機能の動作をスクリーンキャストで示すとなおよいでしょう。 + +### バグ報告の確認 + +[GitHubの問題](https://github.com/jrnl-org/jrnl/issues?q=is%3Aissue+is%3Aopen+label%3Abug)には常にオープンなバグがあり、多くは特定のOS、Pythonバージョン、またはjrnlバージョンに固有のものです。「jrnl v2.2、MacOS 10.15、Python 3.8.1で確認」といった簡単なコメントでも、バグの追跡に非常に役立ちます。 + +### 自動テスト + +新しい自動テストの追加方法については、以下の開発セクションを参照してください。 + +## 機能リクエストとアイデアの提出 + +jrnlに対する機能リクエストやアイデアがある場合は、[新しい問題を開いて](https://github.com/jrnl-org/jrnl/issues/new/choose)機能の目的と関連するユースケースを説明してください。私たちはあなたと議論し、それがプロジェクトに適しているかどうかを決定します。 + +新機能について議論する際は、私たちの設計目標を念頭に置いてください。jrnlは[一つのことをうまく行う](https://en.wikipedia.org/wiki/Unix_philosophy)ことを目指しています。私たちにとって、それは以下を意味します: + +- *機敏*であること +- シンプルなインターフェースを持つこと +- 機能の重複を避けること + +## 開発 + +### 環境のセットアップ + +jrnlを開発するには[poetry](https://python-poetry.org/)をインストールする必要があります。poetryがプロジェクトの他のすべての依存関係を管理します。 + +### ブランチの理解 + +jrnlは主に2つのブランチを使用します: + +- `develop` - 継続的な開発用 +- `release` - リリース用 + +一般的に、プルリクエストは`develop`ブランチに対して行われるべきです。 + +### 一般的な開発コマンド + +`pyproject.toml`にコマンドの一覧があります。ユーザーは`poe`の後にコマンド名を入力することでコマンドを実行できます([Poe the Poet](https://github.com/nat-n/poethepoet)は単独で、または`poetry install`の一部としてインストールできます)。 + +典型的な開発ワークフローには以下が含まれます: + +- 依存関係のインストール: + - `poetry install` +- 仮想環境の有効化: + - `poetry shell` +- 仮想環境でソースを実行: + - `jrnl`(必要に応じて引数を付けて) +- テストの実行: + - `poe test` +- コードのフォーマットをスタイルに標準化: + - `poe format` + +### 自動テストの更新 + +バグの解決や新機能の追加時には、将来その機能が壊れるのを防ぐためにテストを追加してください。テストでカバーされていない機能に気づいた場合は、テストのみのプルリクエストを提出することもできます。 + +テストには、ユニットテスト用に[pytest](https://docs.pytest.org)を、統合テスト用に[pytest-bdd](https://pytest-bdd.readthedocs.io/)を使用しています。すべてのテストは`tests`フォルダーにあります。 + +多くのテストは、他のテストと同じフォーマットの`*.feature`ファイルを編集するだけで作成できます。より複雑な機能については、`tests/lib/`にステップを実装し、それを`feature`ファイルのテストで実行する必要があるかもしれません。 + +### プルリクエストの提出 + +準備ができたら、プルリクエスト(PR)を提出してください。jrnlのメンテナーは通常2週間ごとにプルリクエストをレビューしますが、継続的統合パイプラインは数分以内にあなたのコードに対して自動テストを実行し、さまざまな環境で見つかった問題を報告します。 + +プルリクエストのテンプレートにはハウスキーピング項目のチェックリストが含まれています。提出時に必要に応じてそれらを記入してください。 + +プルリクエストにテスト失敗が含まれている場合、おそらくレビューされず、確実に承認されません。ただし、テスト失敗の解決に助けが必要な場合は、PRでその旨を言及してください。 + +### 作業対象を見つける + +[jrnlのGitHub Issues](https://github.com/jrnl-org/jrnl/issues)を[ラベル](https://github.com/jrnl-org/jrnl/labels)で検索して、作業対象を見つけることができます。以下は検索する価値のあるラベルです: + +- [critical](https://github.com/jrnl-org/jrnl/labels/critical) +- [help wanted](https://github.com/jrnl-org/jrnl/labels/help%20wanted) +- [bug](https://github.com/jrnl-org/jrnl/labels/bug) +- [enhancement](https://github.com/jrnl-org/jrnl/labels/enhancement) + +[マイルストーン](https://github.com/jrnl-org/jrnl/milestones)をレビューして、プロジェクトの優先事項を把握することもできます。 + +### 新しいプログラマーとPythonを初めて使うプログラマーへの注意 + +jrnlは発足以来かなり成長しましたが、全体的な複雑さ(エンドユーザープログラムとしては)は比較的低く、コードを理解しやすいと思います。 + +質問がある場合は、遠慮なく聞いてください!Pythonは初心者プログラマーを歓迎し、オープンなコミュニティとして知られています。コードをフォークして自由に試してみてください!私たちと共有したいものを作成した場合は、プルリクエストを作成してください。プルリクエストが完璧で、慣用的で、すぐにマージできるコードであることは期待していません。一緒に取り組んでいきましょう! diff --git a/docs/ja/encryption.md b/docs/ja/encryption.md new file mode 100644 index 000000000..46f0e2189 --- /dev/null +++ b/docs/ja/encryption.md @@ -0,0 +1,150 @@ + + +# 暗号化 + +## セキュリティに関する注意 + +`jrnl`はベストプラクティスに従っていますが、現実世界で完全なセキュリティを実現することは不可能です。あなたの`jrnl`データを少なくとも部分的に侵害する方法はいくつかあります。詳細については、[プライバシーとセキュリティ](./privacy-and-security.md)のページを参照してください。 + +## 暗号化と復号化 + +既存のプレーンテキストのジャーナルファイルは、`--encrypt`コマンドを使用して暗号化できます: + +```sh +jrnl --encrypt [ファイル名] +``` + +その後、新しいパスワードを入力すると、暗号化されていないファイルが新しい暗号化されたファイルに置き換えられます。 + +このコマンドは、既に暗号化されているジャーナルファイルのパスワードを変更する際にも機能します。`jrnl`は現在のパスワードと新しいパスワードの入力を求めます。 + +逆に、 + +```sh +jrnl --decrypt [ファイル名] +``` + +は暗号化されたジャーナルファイルをプレーンテキストファイルに置き換えます。また、ファイル名を指定することもできます(例:`jrnl --decrypt plain_text_copy.txt`)。これにより、元の暗号化されたファイルはそのままで、その隣に新しいプレーンテキストファイルが作成されます。 + +!!! note +[設定ファイル](./reference-config-file.md)の`encrypt`を別の値に変更しても、 +ジャーナルファイルの暗号化や復号化は行われません。それはただ、あなたの +ジャーナルが暗号化されているかどうかを示すだけです。したがって、この +オプションを手動で変更すると、ほとんどの場合、ジャーナルファイルを +ロードできなくなります。そのため、上記のコマンドが必要になります。 + +## パスワードをキーチェーンに保存する + +誰も`jrnl`のパスワードを回復またはリセットすることはできません。パスワードを失うと、 +あなたのデータに永久にアクセスできなくなります。 + +このため、ジャーナルを暗号化する際、`jrnl`はパスワードをシステムのキーチェーンに +保存するかどうかを尋ねます。追加の利点として、ジャーナルファイルとやり取りする際に +パスワードを入力する必要がなくなります。 + +最初にパスワードをキーチェーンに保存しなかったが、後で保存することにした場合 +(または、あるコンピューターのキーチェーンには保存したいが、別のコンピューターでは +保存したくない場合)、暗号化されたジャーナルに対して`jrnl --encrypt`を実行し、 +同じパスワードを再度使用することができます。これによりキーチェーン保存のプロンプトが +トリガーされます。 + +## 手動復号化 + +ジャーナルを復号化する最も簡単な方法は`jrnl --decrypt`を使用することですが、 +必要に応じてジャーナルを手動で復号化することもできます。これを行うには、 +AESアルゴリズム(特にAES-CBC)をサポートする任意のプログラムを使用できます。 +復号化には以下の関連情報が必要です: + +- **キー:** 暗号化に使用されるキーは、パスワードの + [SHA-256](https://en.wikipedia.org/wiki/SHA-2)ハッシュです。 +- **初期化ベクトル(IV):** IVは暗号化されたジャーナルファイルの最初の16バイトに + 保存されています。 +- **ジャーナルの実際のテキスト**(暗号化されたジャーナルファイルの最初の16バイト + 以降のすべて)は[UTF-8](https://en.wikipedia.org/wiki/UTF-8)でエンコードされ、 + 暗号化される前に[PKCS#7](https://en.wikipedia.org/wiki/PKCS_7)に従って + パディングされます。 + +スクリプト形式でどのように見えるかの例が必要な場合は、以下にジャーナルを手動で +復号化するのに使用できるPythonスクリプトの例をいくつか示します。 + +!!! note +これらは単なる例であり、`jrnl`が存在しなくなっても、ジャーナルファイルが +まだ復元可能であることを示すためにここにあります。可能な場合は +`jrnl --decrypt`を使用してください。 + +**jrnl v2ファイルの例**: + +```python +#!/usr/bin/env python3 +""" +jrnl v2の暗号化されたジャーナルを復号化します。 + +注意:`cryptography`モジュールがインストールされている必要があります +(`pip3 install crytography`のようなコマンドでインストールできます) +""" + +import base64 +import getpass +from pathlib import Path + +from cryptography.fernet import Fernet +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC + +filepath = input("ジャーナルファイルのパス: ") +password = getpass.getpass("パスワード: ") + +with open(Path(filepath), "rb") as f: + ciphertext = f.read() + +password = password.encode("utf-8") +kdf = PBKDF2HMAC( + algorithm=hashes.SHA256(), + length=32, + salt=b"\xf2\xd5q\x0e\xc1\x8d.\xde\xdc\x8e6t\x89\x04\xce\xf8", + iterations=100_000, + backend=default_backend(), +) + +key = base64.urlsafe_b64encode(kdf.derive(password)) + +print(Fernet(key).decrypt(ciphertext).decode("utf-8")) +``` + +**jrnl v1ファイルの例**: + +```python +#!/usr/bin/env python3 +""" +jrnl v1の暗号化されたジャーナルを復号化します。 + +注意:`pycrypto`モジュールがインストールされている必要があります +(`pip3 install pycrypto`のようなコマンドでインストールできます) +""" + +import argparse +import getpass +import hashlib + +from Crypto.Cipher import AES + +parser = argparse.ArgumentParser() +parser.add_argument("filepath", help="復号化するジャーナルファイル") +args = parser.parse_args() + +pwd = getpass.getpass() +key = hashlib.sha256(pwd.encode("utf-8")).digest() + +with open(args.filepath, "rb") as f: + ciphertext = f.read() + +crypto = AES.new(key, AES.MODE_CBC, ciphertext[:16]) +plain = crypto.decrypt(ciphertext[16:]) +plain = plain.strip(plain[-1:]) +plain = plain.decode("utf-8") +print(plain) +``` diff --git a/docs/ja/external-editors.md b/docs/ja/external-editors.md new file mode 100644 index 000000000..893e1c0c3 --- /dev/null +++ b/docs/ja/external-editors.md @@ -0,0 +1,113 @@ + + +# 外部エディタ + +お好みの外部エディタを設定するには、[設定ファイル](./reference-config-file.md#editor)の`editor`オプションを更新してください。エディタがオペレーティングシステムの`PATH`環境変数に含まれていない場合は、エディタのフルパスを入力する必要があります。 + +設定が完了したら、`jrnl`コマンドを単独で使用して、エディタで新しいドキュメントとしてエントリーを作成できます: + +```text +jrnl +``` + +ドキュメントの最初の行に、通常通りエントリーの時間とタイトルを指定できます。 + +クイックエントリーを含めることで、エディタをスキップすることもできます: + +```text +jrnl yesterday: All my troubles seemed so far away. +``` + +コマンドラインでエントリーを開始し、選択したエディタで書き続けたい場合は、`--edit`フラグを使用します。例: + +```text +jrnl yesterday: All my troubles seemed so far away. --edit +``` + +!!! note +エントリーの編集を保存してログに記録するには、ファイルを保存して閉じてください。 + +jrnlで動作するには、すべてのエディタが[ブロッキングプロセス]()である必要があります。[micro](https://micro-editor.github.io/)のような一部のエディタはデフォルトでブロッキングですが、他のエディタは以下に記載されているような追加の引数でブロッキングにすることができます。jrnlがエディタを開いても即座に実行が終了する場合、そのエディタはブロッキングプロセスではありません。以下の提案のいずれかで修正できる可能性があります。 + +エディタが機密情報を漏洩する可能性とそのリスクを軽減する方法については、[このセクション](./privacy-and-security.md#editor-history)を参照してください。 + +## Sublime Text + +[Sublime Text](https://www.sublimetext.com/)を使用するには、Sublime Textのコマンドラインツールをインストールし、`jrnl.yaml`を以下のように設定します: + +```yaml +editor: "subl -w" +``` + +`-w`フラグは、jrnlがSublime Textがファイルを閉じるのを待ってからジャーナルに書き込むようにするためのものです。 + +## Visual Studio Code + +[Visual Studio Code](https://code.visualstudio.com)も、プロセスがファイルを閉じるまで待機するように指示するフラグが必要です: + +```yaml +editor: "code --wait" +``` + +Windowsでは、`code`はデフォルトでパスに追加されていないので、`code.exe`ファイルのフルパスを入力するか、`PATH`変数に追加する必要があります。 + +## MacVim + +Sublime Textと同様に、MacVimもプロセスがファイルを閉じるまで待機してからジャーナルに制御を戻すように指示するフラグで起動する必要があります。MacVimの場合、このフラグは`-f`です: + +```yaml +editor: "mvim -f" +``` + +## Vim/Neovim + +Linuxでエディタとしてvimの派生版を使用するには、単純に`editor`を実行ファイルに設定します: + +```yaml +editor: "vim" +# または +editor: "nvim" +``` + +## iA Writer + +OS Xでは、素晴らしい[iA Writer](http://www.iawriter.com/mac)を使用してエントリーを書くことができます。`jrnl.yaml`を以下のように設定してください: + +```yaml +editor: "open -b pro.writer.mac -Wn" +``` + +これは何をしているのでしょうか?`open -b ...`は、バンドル識別子(すべてのアプリに固有の文字列)で識別されるアプリケーションを使用してファイルを開きます。`-Wn`は、制御を戻す前にアプリケーションが閉じるまで待つこと、およびアプリケーションの新しいインスタンスを使用することをアプリケーションに指示します。 + +システムで`pro.writer.mac`バンドル識別子が見つからない場合は、シェルでiA Writerの`Info.plist`ファイルを調べることで、使用する正しい文字列を見つけることができます: + +```sh +grep -A 1 CFBundleIdentifier /Applications/iA\ Writer.app/Contents/Info.plist +``` + +## Windows上のNotepad++ + +[Notepad++](http://notepad-plus-plus.org/)をエディタとして設定するには、`jrnl`の設定ファイル(`jrnl.yaml`)を以下のように編集します: + +```yaml +editor: "C:\\Program Files (x86)\\Notepad++\\notepad++.exe -multiInst -nosession" +``` + +二重のバックスラッシュは、`jrnl`がファイルパスを正しく読み取るために必要です。`-multiInst -nosession`オプションにより、`jrnl`は独自のNotepad++ウィンドウを開きます。 + +## emacs + +`emacs`をエディタとして使用するには、`jrnl`の設定ファイル(`jrnl.yaml`)を以下のように編集します: + +```yaml +editor: emacsclient -a "" -c +``` + +メッセージの編集が終わったら、保存して`C-x #`でバッファを閉じ、emacsclientプロセスを停止します。 + +## その他のエディタ + +他のエディタを使用していて、共有したい場合は、[ドキュメントの貢献](./contributing.md#editing-documentation)を自由に行ってください。 diff --git a/docs/ja/formats.md b/docs/ja/formats.md new file mode 100644 index 000000000..a2ab7374a --- /dev/null +++ b/docs/ja/formats.md @@ -0,0 +1,328 @@ + + +# フォーマット + +`jrnl`は様々な代替フォーマットをサポートしています。これらは、ジャーナルを`jrnl`のデフォルトとは異なる方法で表示したり、ジャーナルからのデータを他のプログラムにパイプして報告書を作成したり、`jrnl`のデータを好きなように使用したりするのに利用できます。 + +これらのフォーマットはいずれも検索と組み合わせて使用でき(例:`jrnl -contains "lorem ipsum" --format json`)、検索結果を指定されたフォーマットで表示したり、単独で使用して(例:`jrnl --format json`)選択されたジャーナルのすべてのエントリーを表示したりできます。 + +このページでは、すべての組み込みフォーマットの例を示していますが、`jrnl`はプラグインを通じてさらにフォーマットを追加することをサポートしているため、システムによってはさらに多くのフォーマットが利用可能な場合があります。システムで利用可能なフォーマットのリストについては、`jrnl --help`を参照してください。 + +これらのフォーマットはどれも互換性があり、以下では便宜上「表示」、「データ」、「レポート」フォーマットにグループ分けしているだけです。 + +## 表示フォーマット + +これらのフォーマットは主にターミナルでジャーナルを表示することを目的としています。それでも、他のフォーマットと同じように使用できます(選択すればファイルに書き込むこともできます)。 + +### Pretty + +```sh +jrnl --format pretty +# または +jrnl -1 # 任意の検索 +``` + +これは`jrnl`のデフォルトフォーマットです。`--format`が指定されていない場合、`pretty`が使用されます。 + +各エントリーのタイムスタンプをユーザー設定に従ってフォーマットし、同じ行にタイトルを表示します。その後、エントリーの本文が下に表示されます。 + +このフォーマットは、設定ファイルの以下の値を通じて設定可能です(詳細は[Advanced Usage](./advanced.md)を参照): + +- `colors` + - `body` + - `date` + - `tags` + - `title` +- `indent_character` +- `linewrap` +- `timeformat` + +**出力例**: + +```sh +2020-06-28 18:22 これは最初のサンプルエントリーです +| これは最初のサンプルエントリーの本文テキストです。 + +2020-07-01 20:00 これは2番目のサンプルエントリーです +| これは2番目のサンプルエントリーの本文テキストですが、 +| これには@tagがあります。 + +2020-07-02 09:00 これは3番目のサンプルエントリーです +| これは3番目のサンプルエントリーの本文テキストです。 +``` + +### Short + +```sh +jrnl --format short +# または +jrnl --short +``` + +これはエントリーを短縮して、日付とタイトルのみを表示します。本質的には`pretty`フォーマットから各エントリーの本文を除いたものです。長いジャーナルエントリーがあり、検索に一致するエントリーのリストのみを表示したい場合に便利です。 + +**出力例**: + +```sh +2020-06-28 18:22 これは最初のサンプルエントリーです +2020-07-01 20:00 これは2番目のサンプルエントリーです +2020-07-02 09:00 これは3番目のサンプルエントリーです +``` + +### Fancy (または Boxed) + +```sh +jrnl --format fancy +# または +jrnl --format boxed +``` + +このフォーマットは各エントリーを枠線で囲みます。これにより、各エントリーの開始と終了がわかりやすくなります。フォーマットがいかに自由形式であるかを示す例であり、また、そういったものが好きな人にとっては~_~ファンシー~_~に見えるかもしれません。 + +!!! note +日本語の場合、文字幅の問題でボックスが崩れてしまうようです。 + +**出力例**: + +```sh +┎──────────────────────────────────────────────────────────────────────╮2020-06-28 18:22 +┃ これは最初のサンプルエントリーです ╘═══════════════╕ +┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +┃ これは最初のサンプルエントリーの本文テキストです。 │ +┖──────────────────────────────────────────────────────────────────────────────────────┘ +┎──────────────────────────────────────────────────────────────────────╮2020-07-01 20:00 +┃ これは2番目のサンプルエントリーです ╘═══════════════╕ +┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +┃ これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 │ +┖──────────────────────────────────────────────────────────────────────────────────────┘ +┎──────────────────────────────────────────────────────────────────────╮2020-07-02 09:00 +┃ これは3番目のサンプルエントリーです ╘═══════════════╕ +┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +┃ これは3番目のサンプルエントリーの本文テキストです。 │ +┖──────────────────────────────────────────────────────────────────────────────────────┘ +``` + +## データフォーマット + +これらのフォーマットは主に、ジャーナルを他のプログラムにパイプしたりエクスポートしたりすることを目的としています。それでも、他のフォーマットと同じように使用できます(必要に応じてファイルに書き込んだり、ターミナルに表示したりできます)。 + +!!! note +これらのフォーマットを使用する際に「2つのエントリーが見つかりました」のようなメッセージボックスが表示されることがありますが、これらのメッセージは`stdout`ではなく`stderr`に書き込まれるため、`|`演算子を使用してパイプする際には含まれません。 + +### JSON + +```sh +jrnl --format json +``` + +JSONは多くのプログラムで使用される非常に便利なフォーマットで、ほぼすべてのプログラミング言語でサポートされています。JSONデータでできることは多岐にわたります。例えば、`jq`([プロジェクトページ](https://github.com/stedolan/jq))を使用してジャーナルのフィールドをフィルタリングすることができます。 +以下のように: + +```sh +$ j -3 --format json | jq '.entries[].date' jrnl-GFqVlfgP-py3.8 +"2020-06-28" +"2020-07-01" +"2020-07-02" +``` + +あるいは、ジャーナルの[美しいタイムライン](http://timeline.knightlab.com/)を作成するのはどうでしょうか? + +**出力例**: + +```json +{ + "tags": { + "@tag": 1 + }, + "entries": [ + { + "title": "これは最初のサンプルエントリーです", + "body": "これは最初のサンプルエントリーの本文テキストです。", + "date": "2020-06-28", + "time": "18:22", + "tags": [], + "starred": false + }, + { + "title": "これは2番目のサンプルエントリーです", + "body": "これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。", + "date": "2020-07-01", + "time": "20:00", + "tags": ["@tag"], + "starred": false + }, + { + "title": "これは3番目のサンプルエントリーです", + "body": "これは3番目のサンプルエントリーの本文テキストです。", + "date": "2020-07-02", + "time": "09:00", + "tags": [], + "starred": false + } + ] +} +``` + +### Markdown + +```sh +jrnl --format markdown +# または +jrnl --format md +``` + +Markdownは人間が読みやすく、他のフォーマット(html、pdf)にレンダリングできるシンプルなマークアップ言語です。例えば、`jrnl`の[README](https://github.com/jrnl-org/jrnl/blob/develop/README.md)はmarkdownでフォーマットされており、Githubが一部のフォーマットを追加して見栄えを良くしています。 + +markdownフォーマットはエントリーを日付でグループ化し(まず年、次に月)、必要に応じてヘッダーマーキング(例:`#`、`##`など)を追加します。すでにジャーナルにmarkdownのヘッダーマーキングがある場合、これらの新しいヘッダーの下に適合するように必要に応じて増加します(つまり、`#`は`##`になります)。 + +このフォーマットは、例えば、ジャーナルをmarkdownからhtmlに変換するプログラムにエクスポートして、ジャーナルからウェブサイトやブログを作成するのに非常に便利です。 + +**出力例**: + +```markdown +# 2020 + +## 6月 + +### 2020-06-28 18:22 これは最初のサンプルエントリーです + +これは最初のサンプルエントリーの本文テキストです。 + +## 7月 + +### 2020-07-01 20:00 これは2番目のサンプルエントリーです + +これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 + +### 2020-07-02 09:00 これは3番目のサンプルエントリーです + +これは3番目のサンプルエントリーの本文テキストです。 +``` + +### プレーンテキスト + +```sh +jrnl --format text +# または +jrnl --format txt +``` + +これは、`jrnl`がジャーナルをディスクに保存するのに使用するのと同じプレーンテキストフォーマットでジャーナルを出力します。このフォーマットは特に`jrnl`内でのジャーナルのインポートとエクスポートに便利です。 + +例えば、あるジャーナルから別のジャーナルにエントリーを移動したり、別のジャーナルからの検索結果で新しいジャーナルを作成したりするのに使用できます。 + +**出力例**: + +```sh +[2020-06-28 18:22] これは最初のサンプルエントリーです +これは最初のサンプルエントリーの本文テキストです。 + +[2020-07-01 20:00] これは2番目のサンプルエントリーです +これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 + +[2020-07-02 09:00] これは3番目のサンプルエントリーです +これは3番目のサンプルエントリーの本文テキストです。 +``` + +### XML + +```sh +jrnl --format xml +``` + +これはジャーナルをXML形式で出力します。XMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。 + +**出力例**: + +```xml + + + + これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。 + これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 + これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。 + + + 1 + + +``` + +### YAML + +```sh +jrnl --format yaml --file 'my_directory/' +``` + +これはジャーナルをYAML形式で出力します。YAMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。[ディレクトリへのエクスポート](#ディレクトリへのエクスポート)は唯一サポートされているYAMLエクスポートオプションであり、各エントリーは別々のファイルに書き込まれます。 + +**ファイル例**: + +```yaml +title: これは2番目のサンプルエントリーです +date: 2020-07-01 20:00 +starred: False +tags: tag + +これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 +``` + +## レポートフォーマット + +フォーマットはジャーナルデータを使用して異なる方法で表示するため、レポートの作成にも使用できます。 + +### タグ + +```sh +jrnl --format tags +# または +jrnl --tags +``` + +このフォーマットは、フォーマットがどのようにレポート作成に使用できるかの簡単な例です。ジャーナル内(または検索結果内)の各タグと、そのタグが出現するエントリーの数を表示し、頻度順にソートします。 + +出力例: + +```sh +@one : 32 +@two : 17 +@three : 4 +``` + +## オプション + +### `--file`を使用したエクスポート + +例: `jrnl --format json --file /some/path/to/a/file.txt` + +デフォルトでは、`jrnl`はエントリーをターミナルに出力します。しかし、`--file`とファイル名を一緒に指定すると、ターミナルに出力されるはずだった同じ出力がファイルに書き込まれます。これは出力をファイルにパイプするのと同じです。 + +したがって、bashの場合、以下の2つの文は同等です: + +```sh +jrnl --format json --file myjournal.json +``` + +```sh +jrnl --format json > myjournal.json +``` + +#### ディレクトリへのエクスポート + +`--file`引数がディレクトリの場合、jrnlは各エントリーを個別のファイルにエクスポートします: + +```sh +jrnl --format yaml --file my_entries/ +``` + +`my_entries/`の内容は次のようになります: + +```output +my_entries/ +|- 2013_06_03_a-beautiful-day.yaml +|- 2013_06_07_dinner-with-gabriel.yaml +|- ... +``` diff --git a/docs/ja/installation.md b/docs/ja/installation.md new file mode 100644 index 000000000..ca2fcb6c7 --- /dev/null +++ b/docs/ja/installation.md @@ -0,0 +1,37 @@ + + +# はじめに + +## インストール + +`jrnl`をインストールする最も簡単な方法は、[Python](https://www.python.org/) 3.10以上で[pipx](https://pipx.pypa.io/stable/installation/)を使用することです: + +```sh +pipx install jrnl +``` + +!!! tip +`jrnl`のインストール時に`sudo`を使用しないでください。パスの問題が発生する可能性があります。 + +`jrnl`を初めて実行すると、ジャーナルファイルをどこに作成するか、そして暗号化するかどうかを尋ねられます。 + +## クイックスタート + +新しいエントリーを作成するには、以下のように入力します + +```text +jrnl yesterday: 病欠した。時間を使って掃除をし、本の執筆に4時間費やした。 +``` + +そしてリターンキーを押します。`yesterday:`はタイムスタンプとして解釈されます。 +最初の文章の区切り(`.?!:`)までがタイトルとして、残りが本文として解釈されます。ジャーナルファイルでは、結果は次のようになります: + +```output +2012-03-29 09:00 病欠した。 +時間を使って家の掃除をし、本の執筆に4時間費やした。 +``` + +単に`jrnl`と入力すると、エントリーの作成を促されますが、外部エディタを使用するように*jrnl*を[設定する](advanced.md)こともできます。 diff --git a/docs/ja/journal-types.md b/docs/ja/journal-types.md new file mode 100644 index 000000000..571bea209 --- /dev/null +++ b/docs/ja/journal-types.md @@ -0,0 +1,68 @@ + + +# ジャーナルタイプ + +`jrnl`はいくつかの異なる方法でジャーナルを保存できます: + +- 単一のテキストファイル(暗号化されているかどうかにかかわらず) +- 日付ごとに整理された暗号化されていないテキストファイルを含むフォルダ構造 +- DayOne Classicフォーマット + +使用したいジャーナルタイプを指定する必要はありません。代わりに、 +`jrnl`は[設定ファイル](advanced.md)でファイルを参照しているかフォルダを参照しているか、 +そしてそれがフォルダの場合、DayOne Classicのコンテンツがそこに存在するかどうかに基づいて、 +自動的にジャーナルタイプを検出します。 + +## 単一ファイル + +単一ファイルフォーマットは最も柔軟で、[暗号化](encryption.md)することができます。 +使用するには、ファイルへのパス、または既に存在しないパスを入力します。任意の拡張子を +使用できます。最初のエントリーを保存すると、`jrnl`は自動的にファイルを作成します。 + +## フォルダ + +フォルダジャーナルフォーマットは、エントリーを年と月のサブフォルダ、そして各日の`.txt`ファイルに +整理します。1日に複数のエントリーがある場合、それらはすべて同じ`.txt`ファイルに表示されます。 + +ディレクトリツリー構造は以下の形式です:`YYYY/MM/DD.txt`。例えば、 +`~/folderjournal`にあるフォルダジャーナルに2021年5月5日のエントリーがある場合、 +次の場所に配置されます:`~/folderjournal/2021/05/05.txt` + +!!! note +新しいフォルダジャーナルの作成は2つの方法で行えます: + +- `jrnl`を実行する前に、ジャーナルの名前でフォルダを作成します。そうしないと、`jrnl`を初めて実行したとき、単一ファイルジャーナルを作成していると見なされ、そのパスにファイルが作成されます。 +- [設定ファイル](advanced.md)で新しいジャーナルを作成し、パスの最後に`/`(POSIXシステムのLinuxやMacOSXの場合)または`\`(Windowsシステムの場合)を付けます。フォルダが存在しない場合は自動的に作成されます。 + +!!! note +フォルダジャーナルは暗号化できません。 + +## Day One Classic + +`jrnl`はDayOneで使用されていた元のデータフォーマットをサポートしています。これはフォルダ +ジャーナルフォーマットに似ていますが、以下の特徴のいずれかで識別されます: + +- フォルダに`.dayone`拡張子がある +- フォルダに`entries`という名前のサブフォルダがある + +これはDayOne 2.0フォーマットとは混同しないでください。[それは非常に異なります](https://help.dayoneapp.com/en/articles/1187337-day-one-classic-is-retired)。 + +!!! note +DayOne Classicジャーナルは暗号化できません。 + +## ジャーナルタイプの変更 + +ジャーナルの設定を単に変更してタイプを変更することはできません。代わりに、 +希望するタイプの新しいジャーナルを定義し、 +[パイピング]() +を使用して古いジャーナルを`txt`としてエクスポートし、新しいジャーナルにインポートコマンドを実行します。 + +例えば、`projects`ジャーナルを`new`ジャーナルにインポートしたい場合、 +`new`ジャーナルの設定を行った後、次のように実行します: + +``` +jrnl projects --format txt | jrnl new --import +``` diff --git a/docs/ja/overview.md b/docs/ja/overview.md new file mode 100644 index 000000000..1e870ec98 --- /dev/null +++ b/docs/ja/overview.md @@ -0,0 +1,44 @@ + + +# 概要 + +`jrnl`はコマンドライン用のシンプルな日記アプリケーションです。 + +簡単に日記エントリーの作成、検索、閲覧ができます。日記は人間が読める形式のプレーンテキストで保存され、[AES暗号化](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)を使用して暗号化することもできます。 + +`jrnl`には必要な機能のほとんどが備わっており、不要な機能はほとんどありません。 + +## プレーンテキスト + +`jrnl`は各日記をプレーンテキストで保存します。`jrnl`ファイルは任意の場所に保存でき、共有フォルダに保存してデバイス間で同期することもできます。日記ファイルはコンパクトで(数千のエントリーでも1MiB未満)、現在そして近い将来にわたってほぼすべての電子デバイスで読むことができます。 + +## タグ + +後でエントリーを見つけやすくするために、`jrnl`はインラインタグをサポートしています(デフォルトのタグ記号は`@`です)。タグを他の検索条件と組み合わせて、エントリーを検索およびフィルタリングできます。 + +## 複数の日記のサポート + +`jrnl`は複数の日記の作成をサポートしており、各日記は単一のファイルまたは一連のファイルとして保存できます。エントリーは人間が読める形式で自動的にタイムスタンプが付けられ、複数のエントリーを一度に簡単に閲覧できます。`jrnl`は必要なエントリーを簡単に見つけ出し、読んだり編集したりすることができます。 + +## 外部エディタのサポート + +`jrnl`はお気に入りのテキストエディタと上手く連携します。エディタで日記エントリーを書くことを好む場合や、より包括的なアプリケーションを必要とする変更を加えたい場合があるかもしれません。`jrnl`は特定のエントリーをフィルタリングし、選択した[外部エディタ](./external-editors.md)に渡すことができます。 + +## 暗号化 + +`jrnl`は[AES暗号化](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)をサポートしています。詳細については[暗号化ページ](./encryption.md)をご覧ください。 + +## インポートとエクスポート + +`jrnl`は他のソースからエントリーを簡単にインポートできます。既存のエントリーは様々な[フォーマット](./formats.md)でエクスポートできます。 + +## マルチプラットフォームサポート + +`jrnl`はほとんどのオペレーティングシステムと互換性があります。様々なパッケージマネージャーを使用して[ダウンロード](./installation.md)するか、ソースからビルドすることができます。 + +## オープンソース + +`jrnl`は[Python](https://www.python.org)で書かれており、オープンソースソフトウェア愛好家の[フレンドリーなコミュニティ](https://github.com/jrnl-org/jrnl)によって維持されています。 diff --git a/docs/ja/privacy-and-security.md b/docs/ja/privacy-and-security.md new file mode 100644 index 000000000..7c0dc387f --- /dev/null +++ b/docs/ja/privacy-and-security.md @@ -0,0 +1,223 @@ + + +# プライバシーとセキュリティ + +`jrnl`はプライバシーとセキュリティを念頭に置いて設計されていますが、他のプログラムと同様に、 +注意すべきいくつかの制限があります。 + +## パスワードの強度 + +`jrnl`はパスワードの強度要件を強制しません。短いまたは一般的に使用されるパスワードは、 +基本的なセキュリティスキルを持つ人が暗号化された`jrnl`ファイルにアクセスするのを +簡単に回避できてしまいます。 + +## 合理的否認 + +ジャーナルの内容を暗号化の層の背後に隠すことはできますが、誰かがあなたの設定ファイルに +アクセスできる場合、ジャーナルの存在、そのジャーナルファイルの場所、最後に編集した +時期を知ることができます。十分な力の不均衡がある場合、誰かが非技術的な手段を通じて +あなたに暗号化を解除させることができるかもしれません。 + +## スパイ行為 + +`jrnl`は開かれていない間のジャーナルエントリーへの不正アクセスから保護できますが、 +安全でないコンピューター/場所からは保護できません。例えば: + +- 誰かがキーロガーをインストールし、ジャーナルに入力する内容を追跡する。 +- 誰かがエントリーを書いている間にあなたの画面を見ている。 +- 誰かが`jrnl`にバックドアをインストールしたり、ジャーナルを毒して + エントリーを明らかにするよう仕向けたりする。 + +## 保存されたパスワード + +暗号化されたジャーナルを作成する際、「パスワードをキーチェーンに保存するか」と +尋ねられます。このキーチェーンは[Python keyringライブラリ](https://pypi.org/project/keyring/)を +使用してアクセスされ、オペレーティングシステムによって動作が異なります。 + +Windowsでは、キーチェーンはWindows Credential Manager(WCM)で、ロックできず、 +あなたのユーザー名で実行されている他のアプリケーションからアクセスできます。 +これが心配な場合は、パスワードを保存しないほうがよいかもしれません。 + +## シェル履歴 + +コマンドラインからエントリーを入力できるため、コマンドライン操作をログに記録する +ツールは潜在的なセキュリティリスクとなります。以下に、様々なシェルでこの問題に +対処する方法を示します。 + +### bash + +`~/.bashrc`ファイルに以下の行を追加することで、jrnlの履歴ログを無効にできます: + +```sh +HISTIGNORE="$HISTIGNORE:jrnl *" +``` + +`bash`履歴から既存の`jrnl`コマンドを削除するには、bashの履歴ファイルから +単純に削除します。このファイルのデフォルトの場所は`~/.bash_history`ですが、 +必要に応じて`echo "$HISTFILE"`を実行して見つけることができます。また、 +`history -c`を実行して履歴からすべてのコマンドを削除することもできます。 + +### zsh + +`~/.zshrc`ファイルに以下を追加することで、jrnlの履歴ログを無効にできます: + +```sh +setopt HIST_IGNORE_SPACE +alias jrnl=" jrnl" +``` + +`zsh`履歴から既存の`jrnl`コマンドを削除するには、zshの履歴ファイルから +単純に削除します。このファイルのデフォルトの場所は`~/.zsh_history`ですが、 +必要に応じて`echo "$HISTFILE"`を実行して見つけることができます。また、 +`history -c`を実行して履歴からすべてのコマンドを削除することもできます。 + +### fish + +デフォルトでは、`fish`はスペースで始まるコマンドをログに記録しません。 +常にjrnlの前にスペースを付けて実行したい場合は、`~/.config/fish/config.fish` +ファイルに以下を追加できます: + +```sh +abbr --add jrnl " jrnl" +``` + +`fish`履歴から既存のjrnlコマンドを削除するには、`history delete --prefix 'jrnl '`を実行します。 + +### Windowsコマンドプロンプト + +Windowsは履歴をディスクにログ記録しませんが、コマンドプロンプトセッションには +保持されます。ジャーナリング後、コマンドプロンプトを閉じるか`Alt`+`F7`を +押して履歴をクリアしてください。 + +## エディターからjrnlへの転送中のファイル + +エントリーの作成や編集時、`jrnl`はエディターがジャーナルにアクセスできるよう +ディスク上に暗号化されていない一時ファイルを使用します。エディターを閉じた後、 +`jrnl`はこの一時ファイルを削除します。 + +つまり、ジャーナルエントリーを保存したがまだエディターを閉じていない場合、 +暗号化されていない一時ファイルがディスク上に残ります。この間にコンピューターが +シャットダウンしたり、`jrnl`プロセスが予期せず終了したりすると、暗号化されて +いない一時ファイルがディスク上に残ります。この問題を軽減するには、エディターを +閉じる直前にのみ保存するようにしてください。また、一時フォルダからこれらの +ファイルを手動で削除することもできます。デフォルトでは、これらは`jrnl*.jrnl` +という名前ですが、[テンプレート](reference-config-file.md#template)を使用して +いる場合は、テンプレートと同じ拡張子になります。 + +## エディター履歴 + +一部のエディターは、将来の使用のためにディスク上に使用履歴を保存します。 +これは、最近の検索パターンやエディターコマンドを通じて機密情報が漏洩する +可能性があるという意味でセキュリティリスクとなる可能性があります。 + +### Visual Studio Code + +Visual Studio Codeは、後でコンテンツを復元またはレビューできるように、 +保存されたファイルの内容を保存します。すべてのファイルに対してこの機能を +無効にするには、[設定エディター](https://code.visualstudio.com/docs/getstarted/settings#_settings-editor)で +`workbench.localHistory.enabled`設定のチェックを外します。 + +または、`workbench.localHistory.exclude`設定で[パターン](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)を +設定することで、特定のファイルに対してこの機能を無効にできます。`jrnl`によって +生成される暗号化されていない一時ファイルを除外するには、[設定エディター](https://code.visualstudio.com/docs/getstarted/settings#_settings-editor)で +`workbench.localHistory.exclude`設定に`**/jrnl*.jrnl`パターンを設定できます +([テンプレート](reference-config-file.md#template)を使用していない場合)。 + +!!! note +Windowsでは、履歴の場所は通常`%APPDATA%\Code\User\History`にあります。 + +Visual Studio Codeは、開いているすべての未保存ファイルのコピーも作成します。 +これらのコピーはバックアップ場所に保存され、ファイルを保存すると自動的に +クリーンアップされます。ただし、ファイルを保存する前にコンピューターが +シャットダウンしたり、Visual Studio Codeプロセスが予期せず停止したりすると、 +暗号化されていない一時ファイルがディスク上に残る可能性があります。これらの +ファイルはバックアップ場所から手動で削除できます。 + +!!! note +Windowsでは、バックアップ場所は通常`%APPDATA%\Code\Backups`にあります。 + +### Vim + +Vimは`~/.viminfo`にある所謂Viminfoファイルに進捗データを保存します。 +これにはコマンドライン履歴、検索文字列履歴、検索/置換パターン、レジスタの +内容など、あらゆる種類のユーザーデータが含まれています。また、予期せぬ +アプリケーションの終了後に開いていたファイルを復元できるよう、Vimはスワップ +ファイルを使用します。 + +これらのオプションや他の情報漏洩の可能性のある機能は、Jrnl設定の`editor`キーを +以下のように設定することで無効にできます: + +```yaml +editor: "vim -c 'set viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure'" +``` + +すべてのプラグインとカスタム設定を無効にし、デフォルト設定でVimを起動するには、 +コマンドラインで`-u NONE`を渡すこともできます。これにより、悪意のあるプラグインや +その他の検出が困難な情報漏洩が確実に排除されます。ただし、これによりエディター +の使用感が大幅に低下します。 + +代わりに、Jrnlファイルが編集されているときに自動的に検出するようVimに設定するには、 +autocommandを使用できます。これを`~/.vimrc`に配置します: + +```vim +autocmd BufNewFile,BufReadPre *.jrnl setlocal viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure +``` + +!!! note +[テンプレート](reference-config-file.md#template)を使用している場合は、 +`.jrnl`の代わりにテンプレートのファイル拡張子を使用する必要があります。 + +言及したオプションの詳細については、Vimで`:h