Skip to content

Commit

Permalink
Merge pull request #4054 from yamatoya/master
Browse files Browse the repository at this point in the history
Add Japanese translation documentation for faq and tutorial
  • Loading branch information
zcbenz committed Jan 11, 2016
2 parents 26bd97d + 630819e commit b25435c
Show file tree
Hide file tree
Showing 14 changed files with 1,198 additions and 0 deletions.
24 changes: 24 additions & 0 deletions docs-translations/jp/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
## FAQ

頻繁に聞かれる質問がありますので、issueを作成する前にこれをチェックしてください。

* [Electron FAQ](faq/electron-faq.md)


## ガイド

* [サポートするプラットフォーム](tutorial/supported-platforms.md)
* [アプリケーションの配布](tutorial/application-distribution.md)
* [Mac App Store 提出ガイド](tutorial/mac-app-store-submission-guide.md)
* [アプリケーションのパッケージ化](tutorial/application-packaging.md)
* [ネイティブのNodeモジュールを使用する](tutorial/using-native-node-modules.md)
* [メインプロセスのデバッグ](tutorial/debugging-main-process.md)
* [Selenium と WebDriverを使用する](tutorial/using-selenium-and-webdriver.md)
* [DevTools エクステンション](tutorial/devtools-extension.md)
* [Pepper Flashプラグインを使用する](tutorial/using-pepper-flash-plugin.md)
* [Widevine CDMプラグインを使用する](tutorial/using-widevine-cdm-plugin.md)



# チュートリアル

* [クイックスタート](tutorial/quick-start.md)
* [デスクトップ環境の統合](tutorial/desktop-environment-integration.md)
* [オンライン/オフライン イベントの検知](tutorial/online-offline-events.md)
73 changes: 73 additions & 0 deletions docs-translations/jp/faq/electron-faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Electron FAQ

## Electronは、いつ最新のChromeにアップグレードされますか?

ElectronのChromeバージョンは、通常、新しいChromeのstabeleバージョンがリリースされた後、1~2週間以内に上げられます。

また、Chromeのstableチャンネルのみを使用し、もし、重要な修正がbetaまたはdevチャンネルにある場合、それをバックポートします。

## Electronは、いつ最新のNode.jsにアップグレードされますか?

Node.jsの新しいバージョンがリリースされたとき、とても頻繁に発生している新しいNode.jsバージョンで取り込まれたバグによる影響を避けるために、ElectronのNode.jsをアップグレードする前に、通常、約1カ月待ちます。

通常、Node.jsの新しい機能はV8のアップグレードによってもたらされ、 ElectronはChromeブラウザーに搭載されているV8を使用しているので、
新しいNode.jsの重要な新しいJavaScript機能はElectronでは、すでに導入されています。

## 数分後、アプリのWindow/trayが表示されなくなります

これは、Window/trayを格納するのに使用している変数がガベージ コレクションされたときに発生します。

この問題に遭遇した時には、次のドキュメントを読むことをお勧めします。

* [Memory Management][memory-management]
* [Variable Scope][variable-scope]

もし簡単に修正したい場合は、グローバル変数を作成し、コードを変更します。

変更前:

```javascript
app.on('ready', function() {
var tray = new Tray('/path/to/icon.png');
})
```

変更後:

```javascript
var tray = null;
app.on('ready', function() {
tray = new Tray('/path/to/icon.png');
})
```

## ElectronでjQuery/RequireJS/Meteor/AngularJSを使用できません

Electronに組み込まれているNode.jsの影響で, `module`, `exports`, `require`のようなシンボルがDOMに追加されています。いくつかのライブラリで、追加しようとしているシンボルと同じ名前があり、これが原因で問題が発生します。
これを解決するために、Electronに組み込まれているnodeを無効にすることができます。

```javascript
// In the main process.
var mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false
}
});
```

しかし、Node.jsとElectron APIを使用した機能を維持したい場合は、ほかのライブラリを読み込む前に、ページのシンボルをリネームする必要があります。

```html
<head>
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
<script type="text/javascript" src="jquery.js"></script>
</head>
```

[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx
108 changes: 108 additions & 0 deletions docs-translations/jp/tutorial/application-distribution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# アプリケーションの配布

Electronでアプリケーションを配布するために、アプリケーションを`app` という名前のディレクトリにし、Electronのリソースディレクトリ(OS X では
`Electron.app/Contents/Resources/` 、Linux と Windows では `resources/`)配下に置くべきです,

OS X:

```text
electron/Electron.app/Contents/Resources/app/
├── package.json
├── main.js
└── index.html
```

Windows と Linux:

```text
electron/resources/app
├── package.json
├── main.js
└── index.html
```

`Electron.app` (または Linux上では、`electron`、Windows上では、 `electron.exe`)を実行すると、Electronはアプリケーションを開始します。The `electron` ディレクトリを最終的なユーザーに提供するために配布します。

## ファイルにアプリケーションをパッケージングする

すべてのソースコードをコピーすることでアプリケーションを提供する方法とは別に、アプリケーションのソースコードをユーザーに見えるのを避けるために、[asar](https://github.com/atom/asar) にアーカイブしてアプリケーションをパッケージ化することができます。

`asar`アーカイブを使用するために、`app`フォルダーと置き換え、アーカイブファイルを`app.asar`という名前に変更する必要があり、Electronのリソースディレクトリの下に置くと、Electronはアーカイブを読み込もうとし、それを開始します。

OS X:

```text
electron/Electron.app/Contents/Resources/
└── app.asar
```

Windows と Linux:

```text
electron/resources/
└── app.asar
```

[Application packaging](application-packaging.md)で、詳細を確認できます。

## ダウンローするバイナリのブランド名の変更

Electronにバンドルした後、ユーザーに配布する前に、 Electron名を変更したいでしょう。

### Windows

`electron.exe`を任意の名前に変更でき、[rcedit](https://github.com/atom/rcedit) または
[ResEdit](http://www.resedit.net)のようなツールでアイコンやその他の情報を編集できます。

### OS X

`Electron.app` を任意の名前に変更でき、次のファイルの `CFBundleDisplayName``CFBundleIdentifier``CFBundleName`のフィールドの名前を変更する必要があります。

* `Electron.app/Contents/Info.plist`
* `Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist`

Activity Monitorで、`Electron Helper`と表示されるのを避けるために、helper appの名前を変更でき、 helper appの実行ファイルの名前を確認します。

次のようなappの変更する名前の構造

```
MyApp.app/Contents
├── Info.plist
├── MacOS/
│   └── MyApp
└── Frameworks/
├── MyApp Helper EH.app
| ├── Info.plist
| └── MacOS/
|    └── MyApp Helper EH
├── MyApp Helper NP.app
| ├── Info.plist
| └── MacOS/
|    └── MyApp Helper NP
└── MyApp Helper.app
├── Info.plist
└── MacOS/
   └── MyApp Helper
```

### Linux

`electron` を任意の名前に変更できます。

## ソースからElectronをリビルドしてブランド名を変更する

プロダクト名を変更し、ソースからビルドすることで、Electronのブランド名を変更できます。これをするために、`atom.gyp` ファイルを変更し、クリーンリビルドする必要があります。

### grunt-build-atom-shell

マニュアルでは、Electronのコードをダウンロードし、リビルドさせます。一方で、面倒なタスクはこれで自動化できます:
[grunt-build-atom-shell](https://github.com/paulcbetts/grunt-build-atom-shell).

This task will automatically handle editing the 自動処理を管理するのに、`.gyp`ファイルを編集し、ソースからビルドし、新しい実行名に一致したときにはNativeのNodeモジュールをリビルドするようにできます。

## パッケージングツール

マニュアルでパッケージ化するのとは別に、サードパーティのパッケジングツールを選ぶこともできます。

* [electron-packager](https://github.com/maxogden/electron-packager)
* [electron-builder](https://github.com/loopline-systems/electron-builder)
149 changes: 149 additions & 0 deletions docs-translations/jp/tutorial/application-packaging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
# アプリケーションのパッケージ化

Windows上の長いパス名周りの[issues](https://github.com/joyent/node/issues/6960) を軽減させるたり、`require`を若干スピードアップさせたり、 簡単な調査からソースコードを隠したりするために、ソースコードの少しの変更で、[asar][asar]にアーカイブし、パッケージ化を選択することもできます。

## `asar` アーカイブの生成

[asar][asar] アーカイブは、1つのファイルに連結されたtarライクのシンプルなフォーマットです。Electronは、すべてのファイルをアンパッキングせずに、任意のファイルを読み込めます。

アプリを `asar` アーカイブにパッケージ化する手順

### 1. asar ツールのインストール

```bash
$ npm install -g asar
```

### 2. `asar pack`でパッケージ化する

```bash
$ asar pack your-app app.asar
```

## `asar` アーカイブを使用する

Electronには、2組のAPIがあります。Node APIは、Node.jsで提供されており、Web APIは、Chromiumで提供されています。両方のAPIは、 `asar` アーカイブからのファイル読み込みに対応しています。

### Node API

Electronでは特定のパッチで、`fs.readFile``require` のようなNode APIは、`asar` アーカイブを仮想ディレクトリのように扱い、ファイルをファイルシステムで通常のファイルのように扱います。

例えば、`/path/to` 配下に、`example.asar` アーカイブがあると仮定します:

```bash
$ asar list /path/to/example.asar
/app.js
/file.txt
/dir/module.js
/static/index.html
/static/main.css
/static/jquery.min.js
```

`asar` アーカイブでファイルを読み込む:

```javascript
const fs = require('fs');
fs.readFileSync('/path/to/example.asar/file.txt');
```

アーカイブのルート直下にあるすべてのファイルを一覧にする:

```javascript
const fs = require('fs');
fs.readdirSync('/path/to/example.asar');
```

アーカイブからモジュールを使用する:

```javascript
require('/path/to/example.asar/dir/module.js');
```

`BrowserWindow`で、`asar`アーカイブで、Webページを表示することができます:

```javascript
const BrowserWindow = require('electron').BrowserWindow;
var win = new BrowserWindow({width: 800, height: 600});
win.loadURL('file:///path/to/example.asar/static/index.html');
```

### Web API

Webページで、アーカイブ内のファイルを `file:` プロトコルでリクエストできます。
Node APIのように、`asar` アーカイブはディレクトリのように扱われます。

例えば、 `$.get` でファイルを取得できます:

```html
<script>
var $ = require('./jquery.min.js');
$.get('file:///path/to/example.asar/file.txt', function(data) {
console.log(data);
});
</script>
```

### `asar` アーカイブを通常のファイルのように扱う

For some cases like verifying the `asar` アーカイブのチェックサムを検証するようなケースで、 `asar` アーカイブのコンテンツをファイルのように扱う必要があります。この目的のために、 `asar` サポートしないオリジナルの `fs` API が提供する ビルトインの `original-fs` モジュールを使用できます。

```javascript
var originalFs = require('original-fs');
originalFs.readFileSync('/path/to/example.asar');
```

`fs` モジュールで、`asar` サポートを無効化するために、`process.noAsar``true` に設定します:

```javascript
process.noAsar = true;
fs.readFileSync('/path/to/example.asar');
```

## Node API の制限

Node APIで、`asar` アーカイブが可能な限りディレクトリのように動作するよう懸命に試してますが、Node APIの低レベル性質の影響で、まだ制限があります。

### アーカイブは読み取り専用です

ファイルを変更できる全てのNode APIは、 `asar` アーカイブに対して動作しないので、アーカイブは変更されません。

### 作業ディレクトリは、アーカイブ内のディレクトリに設定できません

`asar` アーカイブはディレクトリのように扱われるにも関わらず、ファイルシステム上では実際のディレクトリではなく、`asar` アーカイブ内に決して作業ディレクトリは設定されません。いくつかのAPIの`cwd`オプションを設定していて、それがエラー原因になります。

### いくつかのAPIで追加のアンパッキングがされます

たいていの `fs` APIは、アンパッキングせずに、 `asar` アーカイブからファイルを読み込んだり、ファイル情報を取得できます。しかし、実際のファイルパスを通してシステムコールに依存するAPIもあり、Electronは必要なファイルを一時ファイルに解凍し、一時ファイルのパスを通して、APIが動作します。これは、APIに多少のオーバーヘッドがあります。

追加のアンパッキングに必要なAPIです。:

* `child_process.execFile`
* `child_process.execFileSync`
* `fs.open`
* `fs.openSync`
* `process.dlopen` - ネイティブモジュール上の `require` で使用されます

### `fs.stat` の偽の統計情報

ファイルシステム上にファイルが存在しないので、`fs.stat` および `asar` アーカイブ内のファイルへの関連情報によって返される`Stats` オブジェクトは、推測して生成されます。ファイルサイズの取得とファイルタイプのチェックを除いて、 `Stats` オブジェクトを信頼すべきではありません。

### `asar` アーカイブ内でバイナリを実行します

`child_process.exec``child_process.spawn``child_process.execFile` のようなバイナリを実行できるNode APIがあります。しかし、`execFile` だけが、`asar` アーカイブ内でのバイナリ実行をサポートしています。

`exec``spawn` は、インプットを `file` の代わりに `command` を受け取り、`command` はシェル配下で実行されます。コマンドがasar アーカイブ内のファイルを使うかどうかを決定するための信頼できる方法はありません。影響なしで、コマンドでパスを置き換えることができるかどうかを確認することはできません。

## アンパッキングする `asar` アーカイブ内のファイルを追加する

上記のように、いくつかのNode APIは、呼び出さすとき、ファイルをファイルパスへアンパックします。パフォーマンス問題は別として、ウィルススキャナーのアラートにつながる可能性があります。

これに対する対応として、`--unpack` オプションを使用して、アーカイブを作成する際に、いくつかのファイルをアンパックできます。例えば、ネイティブモジュールの共有ライブラリを除きます。

```bash
$ asar pack app app.asar --unpack *.node
```

このコマンドを実行した後、`app.asar` とは別に、アンパックファイルを含んだ`app.asar.unpacked` フォルダーが生成され、ユーザーに提供するときには、`app.asar` と一緒にコピーしなければなりません。

[asar]: https://github.com/atom/asar

0 comments on commit b25435c

Please sign in to comment.