From d409f829f55ab64202d51bf9fd093db38f5a9199 Mon Sep 17 00:00:00 2001 From: Hirotaka Mizutani Date: Wed, 15 Jan 2020 13:47:53 +0900 Subject: [PATCH 1/5] docs: translate tutorial/part-one/index --- docs/tutorial/part-one/index.md | 203 ++++++++++++++++---------------- 1 file changed, 101 insertions(+), 102 deletions(-) diff --git a/docs/tutorial/part-one/index.md b/docs/tutorial/part-one/index.md index 81cb56006..b5fc5599b 100644 --- a/docs/tutorial/part-one/index.md +++ b/docs/tutorial/part-one/index.md @@ -1,57 +1,57 @@ --- -title: Get to Know Gatsby Building Blocks +title: Gatsbyの構成要素を理解する typora-copy-images-to: ./ disableTableOfContents: true --- -In the [**previous section**](/tutorial/part-zero/), you prepared your local development environment by installing the necessary software and creating your first Gatsby site using the [**“hello world” starter**](https://github.com/gatsbyjs/gatsby-starter-hello-world). Now, take a deeper dive into the code generated by that starter. +[**前のセクション**](/tutorial/part-zero/)で、必要なソフトウェアをインストールしてローカル開発環境を準備し、[**"hello world"スターター**](https://github.com/gatsbyjs/gatsby-starter-hello-world)を使って、最初の Gatsby サイトを作成しました。次に、そのスターターが生成したコードをさらに深く掘り下げていきましょう。 -## Using Gatsby starters +## Gatsby スターターの使用 -In [**tutorial part zero**](/tutorial/part-zero/), you created a new site based on the “hello world” starter using the following command: +[**チュートリアル・パート 0**](/tutorial/part-zero/)で、次のコマンドを使用して"hello world""スターターに基づいて新しいサイトを作成しました。 ```shell gatsby new hello-world https://github.com/gatsbyjs/gatsby-starter-hello-world ``` -When creating a new Gatsby site, you can use the following command structure to create a new site based on any existing Gatsby starter: +新しい Gatsby サイトを作成する場合、次のコマンド構成を使用して、すでにある Gatsby スターターに基づいて新しいサイトを作成できます。 ```shell gatsby new [SITE_DIRECTORY_NAME] [URL_OF_STARTER_GITHUB_REPO] ``` -If you omit a URL from the end, Gatsby will automatically generate a site for you based on the [**default starter**](https://github.com/gatsbyjs/gatsby-starter-default). For this section of the tutorial, stick with the “Hello World” site you already created in tutorial part zero. You can learn more about [modifying starters](/docs/modifying-a-starter) in the docs. +末尾の URL_OF_STARTER_GITHUB_REPO(スターターの GitHub レポジトリ URL)を省略すると、Gatsby は[**デフォルトスターター**](https://github.com/gatsbyjs/gatsby-starter-default)に基づいてサイトを自動的に生成します。チュートリアルのこのセクションでは、チュートリアル・パート 0 ですでに作成した"Hello World"サイトを引き続き使用します。詳細については、[スターターの変更](/docs/modifying-a-starter)のドキュメントをご覧ください。 -### ✋ Open up the code +### ✋ コードを開く -In your code editor, open up the code generated for your “Hello World” site and take a look at the different directories and files contained in the ‘hello-world’ directory. It should look something like this: +コードエディターで、"Hello World"サイト用に生成されたコードを開き、"hello-world"ディレクトリーに含まれるさまざまなディレクトリとファイルを確認します。次のようになっていることでしょう。 -![Hello World project in VS Code](01-hello-world-vscode.png) +![VS Code上でのHello Worldプロジェクト](01-hello-world-vscode.png) -_Note: Again, the editor shown here is Visual Studio Code. If you’re using a different editor, it will look a little different._ +_ヒント: 繰り返しますが、ここに示すエディターは Visual Studio Code です。別のエディターを使用している場合は、外観が少し異なります。_ -Let’s take a look at the code that powers the homepage. +ホームページを動かしているコードを見ていきましょう。 -> 💡 If you stopped your development server after running `gatsby develop` in the previous section, start it up again now — time to make some changes to the hello-world site! +> 💡 前のセクションで`gatsby develop`を実行した後、開発サーバを止めている場合はもう一度立ち上げてください。それでは、hello-word サイトに変更を加えていきましょう! -## Familiarizing with Gatsby pages +## Gatsby ページに慣れる -Open up the `/src` directory in your code editor. Inside is a single directory: `/pages`. +コードエディターで`/src`ディレクトリーを開きます。中に`/pages`というディレクトリーが 1 つあります。 -Open the file at `src/pages/index.js`. The code in this file creates a component that contains a single div and some text — appropriately, “Hello world!” +`src/pages/index.js`ファイルを開きます。このファイルのコードは、ひとつの div といくつかのテキスト("Hello world!"という文字列)を含んだコンポーネントを作成します。 -### ✋ Make changes to the “Hello World” homepage +### ✋ "Hello World"ホームページに変更を加える -1. Change the “Hello World!” text to “Hello Gatsby!” and save the file. If your windows are side-by-side, you can see that your code and content changes are reflected almost instantly in the browser after you save the file. +1. "Hello World!"という文字列を"Hello Gatsby!"に変更して、ファイルを保存します。ウィンドウを横に並べている場合、ファイルを保存すると、コードとコンテンツの変更がブラウザーへほぼ即座に反映されることがわかります。 -> 💡 Gatsby uses **hot reloading** to speed up your development process. Essentially, when you’re running a Gatsby development server, the Gatsby site files are being “watched” in the background — any time you save a file, your changes will be immediately reflected in the browser. You don’t need to hard refresh the page or restart the development server — your changes just appear. +> 💡 Gatsby は**ホットリローディング**を使用して開発プロセスをスピードアップします。基本的に、Gatsby 開発サーバーを実行している場合、Gatsby サイトのファイルをバックグラウンドで「監視」しています。ファイルを保存すると、変更がすぐにブラウザへ反映されます。ページをハードリフレッシュしたり、開発サーバーを再起動したりする必要はありません。変更はすぐに表示されます。 -2. Now you can make your changes a little more visible. Try replacing the code in `src/pages/index.js` with the code below and save again. You’ll see changes to the text — the text color will be purple and the font size will be larger. +2. 変更した内容をもう少し見やすくすることができます。`src/pages/index.js`のコードを以下のコードに置き換えて、もう一度保存してください。変更されたテキストが表示されます。テキストの色が紫色になり、フォントサイズが大きくなります。 ```jsx:title=src/pages/index.js import React from "react" @@ -61,9 +61,9 @@ export default () => ( ) ``` -> 💡 We’ll be covering more about styling in Gatsby in [**part two**](/tutorial/part-two/) of the tutorial. +> 💡 Gatsby のスタイルについてはこのチュートリアルの[**パート 2**](/tutorial/part-two/)で詳しく説明します。 -3. Remove the font size styling, change the “Hello Gatsby!” text to a level-one header, and add a paragraph beneath the header. +3. フォントサイズのスタイルを削除し、"Hello Gatsby!"テキストをレベル 1 のヘッダーに変更し、ヘッダーの下に段落を追加します。 ```jsx:title=src/pages/index.js import React from "react" @@ -78,9 +78,9 @@ export default () => ( ) ``` -![More changes with hot reloading](03-more-hot-reloading.png) +![ホットリロードによるその他の変更](03-more-hot-reloading.png) -4. Add an image. (In this case, a random image from Unsplash). +4. 画像を追加します。(ここでは、Unsplash の画像をランダムで表示します)。 ```jsx:title=src/pages/index.js import React from "react" @@ -95,21 +95,21 @@ export default () => ( ) ``` -![Add image](04-add-image.png) +![画像を追加](04-add-image.png) -### Wait… HTML in our JavaScript? +### ちょっと待って… JavaScript に HTML? -_If you’re familiar with React and JSX, feel free to skip this section._ If you haven’t worked with the React framework before, you may be wondering what HTML is doing in a JavaScript function. Or why we’re importing `react` on the first line but seemingly not using it anywhere. This hybrid “HTML-in-JS” is actually a syntax extension of JavaScript, for React, called JSX. You can follow along with this tutorial without prior experience with React, but if you’re curious, here’s a brief primer… +\_React と JSX に精通している場合は、このセクションをスキップしてください。\_React フレームワークを使用したことがない場合、JavaScript 関数の中で HTML が何をしているのか疑問に思うかもしれません。また、最初の行で"react"をインポートしているのに、どこでも使用していないのはなぜでしょう。このハイブリッドな"HTML-in-JS"は、実際には JSX と呼ばれる React 用の JavaScript の構文拡張です。React を使用した経験がなくても、このチュートリアルを進めることはできますが、興味がある方のために、簡単な解説をしましょう。 -Consider the original contents of the `src/pages/index.js` file: +`src/pages/index.js`ファイルの元の内容をみてみましょう。 ```jsx:title=src/pages/index.js import React from "react" -export default () =>
Hello world!
+export default () => Hello world! ``` -In pure JavaScript, it looks more like this: +純粋な JavaScript では、次のようになります。 ```javascript:title=src/pages/index.js import React from "react" @@ -117,42 +117,42 @@ import React from "react" export default () => React.createElement("div", null, "Hello world!") ``` -Now you can spot the use of the `'react'` import! But wait. You’re writing JSX, not pure HTML and JavaScript. How does the browser read that? The short answer: It doesn’t. Gatsby sites come with tooling already set up to convert your source code into something that browsers can interpret. +これで、 `'react'`のインポートが使われているのを見つけることができます!ちょっと待って。あなたは純粋な HTML や JavaScript ではなく、JSX を書いています。ブラウザーはそれをどのように読み込むのでしょうか?短い答えとしては、読み込みません。Gatsby サイトには、ソースコードをブラウザーが解釈できるものに変換するためのツールがすでに設定されているのです。 -## Building with components +## コンポーネントを使用して構築 -The homepage you were just making edits to was created by defining a page component. What exactly is a “component”? +編集をしたばかりのホームページは、ページコンポーネントを定義して作成しました。「コンポーネント」とは正確には何なのでしょうか? -Broadly defined, a component is a building block for your site; It is a self-contained piece of code that describes a section of UI (user interface). +大まかに定義すると、コンポーネントはサイトを構成する要素です。 UI(ユーザーインターフェイス)部分を記述する自己完結型なコードです。 -Gatsby is built on React. When we talk about using and defining **components**, we are really talking about **React components** — self-contained pieces of code (usually written with JSX) that can accept input and return React elements describing a section of UI. +Gatsby は React 上に構築されています。本文書の中で**コンポーネント**という言葉を使用したり定義する場合、私たちは**React コンポーネント**のことを指します。React コンポーネントとは、入力を受け付けて、UI 部分を記述する React エレメントを返す自己完結型のコード(通常 JSX で記述)のことです。 -One of the big mental shifts you make when starting to build with components (if you are already a developer) is that now your CSS, HTML, and JavaScript are tightly coupled and often living even within the same file. +コンポーネントを使用して構築しはじめるのに、大きな精神的変化(すでに開発者である場合)の 1 つは、CSS、HTML、および JavaScript が密結合(1 つのファイルになることも多い)されることです。 -While a seemingly simple change, this has profound implications for how you think about building websites. +一見単純な変更ですが、これは Web サイトを構築する上での考え方に深い意味を持ちます。 -Take the example of creating a custom button. In the past, you would create a CSS class (perhaps `.primary-button`) with your custom styles and then use it whenever you want to apply those styles. For example: +カスタムしたボタンを作成する例を見てみましょう。この前までは、CSS クラス(例えば`.primary-button`)を作成しスタイルをカスタムし、それらのスタイルを適用したいときにカスタムしたスタイルを使用していました。以下が例です。 ```html ``` -In the world of components, you instead create a `PrimaryButton` component with your button styles and use it throughout your site like: +コンポーネントの世界では、ボタンのスタイルの代わりに`PrimaryButton`コンポーネントを作成し、サイト全体で次のように使用します。 ```jsx Click me ``` -Components become the base building blocks of your site. Instead of being limited to the building blocks the browser provides, e.g. ` ``` -コンポーネントの世界では、ボタンのスタイルの代わりに`PrimaryButton`コンポーネントを作成し、サイト全体で次のように使用します。 +コンポーネントの世界では、ボタンのスタイルの代わりに `PrimaryButton` コンポーネントを作成し、サイト全体で次のように使用します。 ```jsx @@ -148,11 +148,11 @@ Gatsby は React 上に構築されています。本文書の中で**コンポ ### ✋ ページコンポーネントの使用 -`src/pages/*.js`で定義した React コンポーネントは自動的にページになります。これを実際に見てみましょう。 +`src/pages/*.js` で定義した React コンポーネントは自動的にページになります。これを実際に見てみましょう。 -すでに"Hello World"スターターに付属する`src/pages/index.js`ファイルがあります。about ページを作成しましょう。 +すでに "Hello World" スターターに付属する `src/pages/index.js` ファイルがあります。about ページを作成しましょう。 -1. `src/pages/about.js`に新しいファイルを作成し、次のコードを新しいファイルにコピーして保存します。 +1. `src/pages/about.js` に新しいファイルを作成し、次のコードを新しいファイルにコピーして保存します。 ```jsx:title=src/pages/about.js import React from "react" @@ -169,14 +169,14 @@ export default () => ( ![新しい about ページ](05-about-page.png) -React コンポーネントを'src/pages/about.js`ファイルに配置するだけで、`/about`でアクセス可能なページを作成します。 +React コンポーネントを 'src/pages/about.js` ファイルに配置するだけで、`/about` でアクセス可能なページを作成します。 ### ✋ サブコンポーネントの使用 -ホームページと about ページの両方が非常に大きくなってくると、多くのことを書き直す必要があります。サブコンポーネントを使用して、UI を再利用可能なパーツに分割できます。どちらのページにも`

`があるので、それらを`Header`というコンポーネントとして作成しましょう。 +ホームページと about ページの両方が非常に大きくなってくると、多くのことを書き直す必要があります。サブコンポーネントを使用して、UI を再利用可能なパーツに分割できます。どちらのページにも `

` があるので、それらを `Header` というコンポーネントとして作成しましょう。 -1. `src/components`に新しいディレクトリーを作成し、そのディレクトリー内に`header.js`というファイルを作成します。 -2. 次のコードを新しい`src/components/header.js`ファイルに追加します。 +1. `src/components` に新しいディレクトリーを作成し、そのディレクトリー内に `header.js` というファイルを作成します。 +2. 次のコードを新しい `src/components/header.js` ファイルに追加します。 ```jsx:title=src/components/header.js import React from "react" @@ -184,7 +184,7 @@ import React from "react" export default () =>

This is a header.

``` -3. `about.js`ファイルを変更して、`Header`コンポーネントをインポートします。`h1`のマークアップを `
'に置き換えます。 +3. `about.js` ファイルを変更して、`Header` コンポーネントをインポートします。`h1` のマークアップを `
' に置き換えます。 ```jsx:title=src/pages/about.js import React from "react" @@ -200,7 +200,7 @@ export default () => ( ![Header コンポーネントの追加](06-header-component.png) -ブラウザーでは、"About Gatsby"となっていたヘッダーテキストが"This is a header"に置き換えられます。ただし、"About"ページでは、"This is a header"と表示するのではなく、"About Gatsby"と表示したいことでしょう。 +ブラウザーでは、"About Gatsby" となっていたヘッダーテキストが "This is a header" に置き換えられます。ただし、"About" ページでは、"This is a header" と表示するのではなく、"About Gatsby" と表示したいことでしょう。 4. `src/components/header.js` に戻り、次の変更を行います。 @@ -210,7 +210,7 @@ import React from "react" export default props =>

{props.headerText}

{/* highlight-line */} ``` -5. `src/pages/about.js`に戻り、次の変更を行います。 +5. `src/pages/about.js` に戻り、次の変更を行います。 ```jsx:title=src/pages/about.js import React from "react" @@ -224,29 +224,29 @@ export default () => ( ) ``` -![Headerにデータを渡す](07-pass-data-header.png) +![Header にデータを渡す](07-pass-data-header.png) -また、ヘッダーテキストに"About Gatsby"が表示されました! +また、ヘッダーテキストに "About Gatsby" が表示されました! -### "props"とは何ですか? +### "props" とは何ですか? -先ほど、UI を描写する再利用可能なコードとして React コンポーネントを定義しました。これらの再利用可能な部品を動的にするには、それらに異なるデータを与えられるようにする必要があります。"props"と呼ばれる入力でそれを行います。Props は、React コンポーネントにプロパティを与えるためのものです。 +先ほど、UI を描写する再利用可能なコードとして React コンポーネントを定義しました。これらの再利用可能な部品を動的にするには、それらに異なるデータを与えられるようにする必要があります。"props" と呼ばれる入力でそれを行います。Props は、React コンポーネントにプロパティを与えるためのものです。 -`about.js`では、インポートした`Header`サブコンポーネントに`"About Gatsby"`の値を持つ`headerText`属性を渡しました。 +`about.js` では、インポートした `Header` サブコンポーネントに `"About Gatsby"` の値を持つ `headerText` 属性を渡しました。 ```jsx:title=src/pages/about.js
``` -`header.js`で、Header コンポーネントは`headerText`属性を受け取ることを期待しています(それを期待するように記述しているので)。そのため、次のようにアクセスできます。 +`header.js` で、Header コンポーネントは `headerText` 属性を受け取ることを期待しています(それを期待するように記述しているので)。そのため、次のようにアクセスできます。 ```jsx:title=src/components/header.js

{props.headerText}

``` -> 💡 JSX では、`{}`で囲むことでどのような JavaScript の構文も埋めこむことができます。これにより"props"オブジェクトから`headerText`属性にアクセスすることができるようになります。 +> 💡 JSX では、`{}`で囲むことでどのような JavaScript の構文も埋めこむことができます。これにより "props" オブジェクトから `headerText` 属性にアクセスすることができるようになります。 -`
`コンポーネントに別の属性を渡した場合、以下のようになります。 +`
` コンポーネントに別の属性を渡した場合、以下のようになります。 ```jsx:title=src/pages/about.js
@@ -254,7 +254,7 @@ export default () => ( `arbitraryPhrase` 属性には `{props.arbitraryPhrase}` でアクセスできます。 -6. これまで述べてきたことにより、コンポーネントが再利用可能になることを強調するにため、追加の`
`コンポーネントを about ページに追加し、次のコードを`src/pages/about.js`ファイルに追加して保存します。 +6. これまで述べてきたことにより、コンポーネントが再利用可能になることを強調するにため、追加の`
` コンポーネントを about ページに追加し、次のコードを `src/pages/about.js` ファイルに追加して保存します。 ```jsx:title=src/pages/about.js import React from "react" @@ -277,15 +277,15 @@ props を使用して異なるデータを渡すことで、コードを一切 レイアウトコンポーネントは、サイト内で複数のページで共有するためのセクションです。たとえば、Gatsby サイトには通常、共有ヘッダーとフッターを持つレイアウトコンポーネントがあります。その他、一般的にレイアウトへ追加するものとして、サイドバーやナビゲーションメニューがあります。 -[**パート 3**](/tutorial/part-three/)でレイアウトコンポーネントについて詳しく掘り下げます。 +[**パート 3**](/tutorial/part-three/) でレイアウトコンポーネントについて詳しく掘り下げます。 ## ページ間のリンク 多くの場合、ページ間をリンクする必要があります。Gatsby サイトでのルーティングを見てみましょう。 -### ✋ ``コンポーネントの使用 +### ✋ `` コンポーネントの使用 -1. インデックスページコンポーネント(`src/pages/index.js`)を開き、Gatsby の``コンポーネントをインポートし、ヘッダーの上に追加し、パス名として`"/contact/"`の値を持つ`to`属性を指定します。 +1. インデックスページコンポーネント(`src/pages/index.js`)を開き、Gatsby の `` コンポーネントをインポートし、ヘッダーの上に追加し、パス名として `"/contact/"` の値を持つ `to` 属性を指定します。 ```jsx:title=src/pages/index.js import React from "react" @@ -302,13 +302,13 @@ export default () => ( ) ``` -ホームページで新しく追加した"Contact"リンクをクリックすると、次が表示されるはずです。 +ホームページで新しく追加した "Contact" リンクをクリックすると、次が表示されるはずです。 ![Gatsby dev 404 page](09-dev-404.png) Gatsby development 404 page。どうして?まだ存在しないページにリンクしようとしているからです。 -2. ここで、新しく"Contact"ページ用に`src/pages/contact.js`としてページコンポーネントを作成し、ホームページにリンクする必要があります。 +2. ここで、新しく "Contact" ページ用に `src/pages/contact.js` としてページコンポーネントを作成し、ホームページにリンクする必要があります。 ```jsx:title=src/pages/contact.js import React from "react" @@ -324,20 +324,20 @@ export default () => ( ) ``` -ファイルを保存すると、"Contact"ページを表示し、ホームページへのリンクをたどることができます。 +ファイルを保存すると、"Contact" ページを表示し、ホームページへのリンクをたどることができます。 -Gatsby の``コンポーネントは、サイト内のページ間をリンクするためのものです。Gatsby サイトで処理しない外部へのリンクは、通常の HTML の``タグを使用します。 +Gatsby の `` コンポーネントは、サイト内のページ間をリンクするためのものです。Gatsby サイトで処理しない外部へのリンクは、通常の HTML の `` タグを使用します。 ## Gatsby サイトのデプロイ Gatsby は**モダンなサイトジェネレーター**です。つまり、デプロイするためにセットアップするサーバーや複雑なデータベースは必要ありません。代わりに、Gatsby の`build`コマンドで、静的なサイトホスティングサービスにデプロイできるように、静的な HTML および JavaScript ファイルのディレクトリーを生成します。 -もし Gatsby でつくった Web サイトをはじめてデプロイするなら、[Surge](http://surge.sh/)を試してみてください。Surge は、Gatsby サイトをデプロイするための数ある「静的サイトホスティングサービス」の 1 つです。 +もし Gatsby でつくった Web サイトをはじめてデプロイするなら、[Surge](http://surge.sh/) を試してみてください。Surge は、Gatsby サイトをデプロイするための数ある「静的サイトホスティングサービス」の 1 つです。 以前 Surge をセットアップしたことがない場合は、新しいターミナルウィンドウを開いてコマンドラインツールをインストールします。 @@ -348,13 +348,13 @@ npm install --global surge surge login ``` -次に、ターミナルで次のコマンドをサイトのルート上で実行してサイトをビルドします(ヒント: このコマンドをサイトのルート、この場合は hello-world フォルダーで実行していることを確認してください。`gatsby develop`を実行するために使用したのと同じウィンドウで新しいタブを開くことによって行うことができます)。 +次に、ターミナルで次のコマンドをサイトのルート上で実行してサイトをビルドします(ヒント: このコマンドをサイトのルート、この場合は hello-world フォルダーで実行していることを確認してください。`gatsby develop` を実行するために使用したのと同じウィンドウで新しいタブを開くことによって行うことができます)。 ```shell gatsby build ``` -ビルドには 15〜30 秒かかります。ビルドが終了したら、`gatsby build`コマンドでデプロイするための準備ができたばかりのファイルを見てみるのもいいでしょう。 +ビルドには 15〜30 秒かかります。ビルドが終了したら、`gatsby build` コマンドでデプロイするための準備ができたばかりのファイルを見てみるのもいいでしょう。 サイトのルートに次のターミナルコマンドを入力して、生成されたファイルのリストを確認します。これにより、`public`ディレクトリーを確認できます。 @@ -370,7 +370,7 @@ surge public/ 実行が終了すると、ターミナルに次のように表示されます。 -![Surgeを使用してGatsbyサイトを公開したスクリーンショット](surge-deployment.png) +![Surge を使用して Gatsby サイトを公開したスクリーンショット](surge-deployment.png) 一番下の行にリストしている Web アドレス(この場合 `lowly-pain.surge.sh`)を開いて、新しく公開したサイトを見ることができます!すばらしい!