diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a34f815 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "csb-jp.github.io"] + path = csb-jp.github.io + url = git@github.com:csb-jp/csb-jp.github.io.git diff --git a/README.md b/README.md new file mode 100644 index 0000000..dfb13f6 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Zenn Contents + +👇How to use +https://zenn.dev/zenn/articles/zenn-cli-guide diff --git a/articles/.keep b/articles/.keep new file mode 100644 index 0000000..e69de29 diff --git a/bin/bookgen b/bin/bookgen new file mode 100755 index 0000000..d4aaad3 --- /dev/null +++ b/bin/bookgen @@ -0,0 +1,35 @@ +#!/usr/bin/env node +const assert = require("assert"); +const path = require("path"); +const fs = require("fs/promises"); +const sidebars = require("../csb-jp.github.io/sidebars.js"); + +const docsPath = "csb-jp.github.io/docs"; +const bookPath = "books/codesandbox-guidebook"; + +function flatten(object) { + const values = (value) => + typeof value === "object" ? flatten(value) : [value]; + return Object.values(object).flatMap(values); +} + +async function main() { + const mdFiles = []; + + for (const id of flatten(sidebars)) { + const file = path.resolve(docsPath, `${id}.md`); + try { + await fs.stat(file); + } catch { + continue; + } + mdFiles.push(file); + } + + for (const [i, file] of mdFiles.entries()) { + const chapter = i + 1; + await fs.copyFile(file, path.resolve(bookPath, `${chapter}.md`)); + } +} + +main(); diff --git a/books/codesandbox-guidebook/1.md b/books/codesandbox-guidebook/1.md new file mode 100644 index 0000000..b122de4 --- /dev/null +++ b/books/codesandbox-guidebook/1.md @@ -0,0 +1,10 @@ +--- +id: intro +title: はじめに +slug: / +--- + +## CodeSandbox (コード・サンドボックス)とは + +CodeSandbox は Web アプリケーション開発のためのオンラインエディターです。 +Web ブラウザの上ですばやくプロトタイプを作成し、簡単に実験を行い、ワンクリックで共有できます。 diff --git a/books/codesandbox-guidebook/2.md b/books/codesandbox-guidebook/2.md new file mode 100644 index 0000000..3dfa805 --- /dev/null +++ b/books/codesandbox-guidebook/2.md @@ -0,0 +1,78 @@ +--- +id: usage +title: 基本的な使い方 +--- + +CodeSandbox の基本的な使い方を紹介します。 + +## 画面のレイアウト + +![area](https://i.gyazo.com/2dedff98cf5997e6582242e42f1401fd.png) + +画面の左側のエリアから編集するファイルの選択などを行うことができます。 + +中央の大きなエリアがファイルを編集するところです。プログラムを書き換えることができます。 + +左側のエリアがプレビューです。ブラウザーでの表示を実際に確認できます。実際のブラウザーの画面で表示を確認するには、プレビューのエリアの右上の[Open In New Window]ボタンを選択します。 + +![open-in-new-window](https://i.gyazo.com/44c66d294361d40bd6109ed94fc8b0f0.png) + +## サインイン + +CodeSandbox は GitHub アカウントでサインインします。制限なく自分のサンドボックスを保存・作成できるようになります。 + +:::message +GitHub は世界中のコードをホスティングしているサービスです。サインインすることによって CodeSandbox で作成したプログラムを GitHub で公開できます。 +::: + +![signin](https://i.gyazo.com/6253559e46d4dddc718d8d0d9c52a62a.png) + +## 保存 + +書き換えたファイルを保存するには、左上のメニューバーから、[File] → [Save] を選択します。 + +:::message alert +保存すると自動的にインターネットに公開されます。秘密の情報を書かないようにしましょう。 +::: + +![menu](https://i.imgur.com/5ipA65C.png) + +:::message +(PC の場合) ショートカットキー `Ctrl`+`S` で保存できます。 +::: + +保存すると開いているファイルのタブの見た目が変わり、表示結果も自動的に更新されます。 + +![on-save](https://i.imgur.com/cScnE7L.png) + +## ファイルの作成 + +新しいファイルを追加するには、ファイルの一覧の部分の右上にある[New File]ボタンを選択します。 + +![newfile](https://i.imgur.com/b5LF4Fg.png) + +作成したファイルは、画面上からファイル名の変更や削除を行えます。 + +![deletefile](https://i.imgur.com/WU3GwtD.png) + +## 機能 + +他にも CodeSandbox には Web アプリケーション開発に便利な機能があります。左端のアクティビティバーの中からいくつか機能を説明します。 + +![activitybar](https://i.imgur.com/aqCK6jO.png) + +ファイル一覧 + +: ファイルの選択や追加・削除を行います。 + +設定 + +: このサンドボックスの設定の変更を行います。 + +GitHub 連携 + +: GitHub リポジトリとの連携を行います。コミットや PR (Pull Request)を作成できます。 + +Live + +: 共同編集の設定を行います。共同編集するための URL を知ることができます。 diff --git a/books/codesandbox-guidebook/3.md b/books/codesandbox-guidebook/3.md new file mode 100644 index 0000000..dd21901 --- /dev/null +++ b/books/codesandbox-guidebook/3.md @@ -0,0 +1,69 @@ +--- +id: github +title: GitHub 連携 +--- + +サンドボックスを GitHub リポジトリと同期したり、サンドボックスからフォークして Pull Request を作成できます。 + +## GitHub からインポート + +GitHub のリポジトリを元にしてサンドボックスにインポートできます。 +[サンドボックスの作成ウィザード](https://codesandbox.io/s/)から、[Import Project]を選択し、インポートしたい GitHub リポジトリの URL を貼り付け、[Import and Fork]を選択します。 + +![import-from-github](https://i.gyazo.com/199b75a0ef972b50793a34a6c10d5e0d.png) + +ブランチやサブディレクトリもサポートしており、対応する URL を指定することでインポート可能です。 + +### 別の方法: GitHubBox.com を使う + +GitHubBox.com を使うことでブラウザーのアドレスバーから簡単にインポートすることもできます。 +インポートしたい GitHub リポジトリの URL のホスト名 `github.com` を `githubbox.com` に書き換えます。 +たとえば、このサイトの GitHub リポジトリ (`https://github.com/csb-jp/csb-jp.github.io`)をインポートするには、URL [https://githubbox.com/csb-jp/csb-jp.github.io](https://githubbox.com/csb-jp/csb-jp.github.io) にアクセスします。 + +## リポジトリの作成 + +:::message +サインインが必要です。 +::: + +サンドボックスを GitHub リポジトリとして書き出せます。 +画面左端のアクティビティバーの中から[GitHub]を選択します。 + +![activitybar-github](https://i.gyazo.com/bdcd5e1c9701aa6412dc787a0543d74d.png) + +[Export to new GitHub repository] ペインの中で新しいリポジトリの名前を入力し、[Create new repository on GitHub] を選択すると、新しい GitHub リポジトリへの書き出しが開始されます。 + +![new-repo](https://i.gyazo.com/114a6615162e3bffe711df9664d9f7db.png) + +成功すると、GitHub リポジトリ `https://github.com/{自分の GitHub アカウント名}/{入力したリポジトリ名}` が作成されます。 + +:::message +"Unable to create the repo. Please refresh and try again or report issue." と通知され、書き出しに失敗した場合、GitHub リポジトリ側を操作して手動で片付けましょう。 +::: + +## リポジトリとの紐づけ + +:::message +サインインが必要です。 +::: + +サンドボックスを GitHub リポジトリと紐づけます。 +[Link to GitHub repository] ペインの中の [Link Sandbox] を選択します。 + +![link-to-github](https://i.gyazo.com/722f4e40161ab4e0989a0df224d7b0f0.png) + +## Pull Request + +:::message +サインインが必要です。 +::: + +紐づく GitHub リポジトリへの Pull Request を作成できます。 + +### コミット + +コミットしたいファイルの変更を保存したら、[Changes] ペインの中の [Summary (required)] に変更内容の概要を入力します。 + +![commit-changes](https://i.gyazo.com/10cc7cffec0c7048d4e38890d316b226.png) + +「ブランチを作成し PR を開始する ("Create branch csb-\* for the commit and start a PR")」を選択し [Commit changes] を選択すると変更内容のコミットの含まれるブランチが作られ Pull Request が作成されます。 diff --git a/books/codesandbox-guidebook/4.md b/books/codesandbox-guidebook/4.md new file mode 100644 index 0000000..06eb621 --- /dev/null +++ b/books/codesandbox-guidebook/4.md @@ -0,0 +1,70 @@ +--- +id: live +title: Live (共同編集) +--- + +リアルタイムにサンドボックスを共有し共同編集を行うことができます。 + +:::message +サインインが必要です。サインインされていない場合、事前にサインインしましょう。 +::: + +## 共有リンクの取得 + +Live はデフォルトで有効です。共有するためのリンクを取得する方法を説明します。 +画面左端のアクティビティバーの中から[Live]を選択します。 + +![activitybar](https://i.imgur.com/gnSa9R4.png) + +[Live]ペインの中を見ると、誰かを招待するための共有リンクが表示されます。 +招待するには共有リンクを選択しコピーして、共同編集したい相手に伝えます。 + +![live](https://i.imgur.com/PCQVQEX.png) + +:::message +PC の場合、選択範囲をコピーするにはショートカットキー `Ctrl`+`C` +::: + +## 共同編集を行う + +:::message +共同編集を行う相手もサインインが必要です。 +::: + +Live Mode に応じて相手のできることが異なります。共有リンクを知っている人が誰でも編集ができるようにするには、[Live Mode]のペインの中のドロップダウンメニューの中から、[Everyone can edit]を選択します。 + +![live-mode](https://i.imgur.com/0yJ8rEH.png) + +招待されると、相手は、ファイル、コードの編集、作成、名前の変更、更新、依存関係の追加と削除を共同で行うことができます。また、お互いに見ているファイルや現在の選択内容を確認することもできます。 + +## 中断 + +Live を中断するには、[■ Stop Session]ボタンを押します。 + +## Live Mode + +相手との編集権限を設定を変更するペインです。 + +誰でも編集 + +: Everyone can edit +共有リンクを知っている相手なら誰でも編集できます。 + +相手に応じた編集権限の制御 + +: Classroom mode +許可した相手のみ編集を行えます。編集が許可された相手は[Editors]ペインに表示されます。[Viewers]ペインの中のユーザー名の隣にある[+]ボタンを押すとそのユーザーによる編集が許可されます。 + +## Preferences (設定) + +共同編集の際に便利な機能の設定のためのペインです。 + +チャット + +: Chat enabled +チャット機能の有効化を行います。 + +通知 + +: Show notifications +通知機能の有効化を行います。 diff --git a/books/codesandbox-guidebook/5.md b/books/codesandbox-guidebook/5.md new file mode 100644 index 0000000..c913cf1 --- /dev/null +++ b/books/codesandbox-guidebook/5.md @@ -0,0 +1,57 @@ +--- +id: configuration +title: 設定 +--- + +サンドボックスの設定方法とそれぞれのオプションを説明します。 + +## package.json + +パッケージに必要なモジュールの管理などの設定を行います。詳しくは[npm 公式の package.json のドキュメント](https://docs.npmjs.com/files/package.json)を参照してください。 + +## sandbox.config.json + +サンドボックスの設定は sandbox.config.json ファイルの内容を変更することで行います。左端のアクティビティの中から[Configuration Files]→[sandbox.config.json]→[Create]または[Edit]選択すると sandbox.config.json の内容を変更できます + +Infinite Loop Protection + +: `infiniteLoopProtection` +無限ループを検知したとき実行を停止するかどうか設定します。(デフォルト: `false` 停止しない) + +:::message +無限ループを動作したい場合は`true`に設定しましょう。 +::: + +Hard Reload on Change + +: `hardReloadOnChange` +ファイルを変更するたび強制的にリロードするかどうか設定します。(デフォルト: `false` 強制的なリロードをしない) + +:::message +`setInterval()`などグローバルな状態を扱う際は`true`に設定しましょう。 +::: + +Template + +: [`template`](https://github.com/codesandbox/codesandbox-importers/blob/2ef3155b84a056e808c146485def6016d43a7318/packages/types/index.d.ts#L34-L59) +選択したテンプレートを使用します。(`static` 静的ファイル、`node` Node.js コンテナー環境) + +## .prettierrc + +コードの自動整形の設定を行います。詳しくは[Prettier の設定ファイルのドキュメント](https://prettier.io/docs/en/configuration.html)を参照してください。 + +## netlify.toml + +:::message alert +デプロイに関する設定です。 +::: + +Netlify へのデプロイに関わる設定ファイルです。詳しくは[Netlify の設定ファイルのドキュメント](https://docs.netlify.com/configure-builds/file-based-configuration/)を参照してください。 + +## now.json (vercel.json) + +:::message alert +デプロイに関する設定です。 +::: + +Vercel へのデプロイに関わる設定ファイルです。詳しくは[Vercel の設定ファイルのドキュメント](https://vercel.com/docs/configuration)を参照してください。 diff --git a/books/codesandbox-guidebook/6.md b/books/codesandbox-guidebook/6.md new file mode 100644 index 0000000..b87b277 --- /dev/null +++ b/books/codesandbox-guidebook/6.md @@ -0,0 +1,20 @@ +--- +id: environment +title: 環境 +--- + +実行環境は大きく分けて「クライアント」と「コンテナー」の 2 つがあります。 +「クライアント」は静的ファイルや React、Vue などフロントエンド向けの開発環境です。サーバー側で Node.js のプログラムを動的に実行することはできませんが、すばやくプロトタイプ作成に取り組むことができます。多くのテンプレートが通常こちらの環境です。 +一方「コンテナー」は Node.js のアプリケーションを実行可能なバックエンド向けの開発可能な環境です。サーバー側で Node.js のプログラムを動的に実行する場合に使います。 + +:::message +現在コンテナー環境はベータ版です。コンテナー環境のサンドボックスを作成するためにはサインインする必要あります。 +::: + +## クライアント + +[CodeSandbox 公式のクライアント環境のテンプレート一覧](https://github.com/codesandbox/codesandbox-templates/tree/461d9ba5861030d59b3aa72c5e564dcc89722e8b/packages/client) + +## コンテナー + +[CodeSandbox 公式のコンテナー環境のテンプレート一覧](https://github.com/codesandbox/codesandbox-templates/tree/461d9ba5861030d59b3aa72c5e564dcc89722e8b/packages/container) diff --git a/books/codesandbox-guidebook/7.md b/books/codesandbox-guidebook/7.md new file mode 100644 index 0000000..a3df141 --- /dev/null +++ b/books/codesandbox-guidebook/7.md @@ -0,0 +1,12 @@ +--- +id: uploading +title: 静的ファイルのアップロード +--- + +画像や音声などのテキスト以外のファイルをアップロードする方法を説明します。左側のファイル一覧のエリアにある[Upload Files]ボタンを選択し、アップロードするファイルを選択します。 + +![uploadfile](https://i.imgur.com/UdiaYG6.png) + +## 制約事項 + +アップロードできるファイルのサイズは[通常 20MB まで](https://codesandbox.io/docs/uploading#static-file-uploading:~:text=As%20a%20patron%20you%20are%20allowed%20to%20upload%20a%20maximum%20of%20500MB%2C%20otherwise%20you%20are%20able%20to%20upload%2020MB.)です。 diff --git a/books/codesandbox-guidebook/8.md b/books/codesandbox-guidebook/8.md new file mode 100644 index 0000000..dd0e4ff --- /dev/null +++ b/books/codesandbox-guidebook/8.md @@ -0,0 +1,12 @@ +--- +id: faq +title: よくある質問 +--- + +## ファイルの保存するときのフォーマットを無効化したい + +:::message +Prettier の設定は [.prettierrc](../configuration.md#prettierrc) によって行います。 +::: + +`Ctrl`+`,` で Settings を開き "Editor: Format on Save" を検索して、ファイルを保存するときのフォーマットするか否かを選択します。 diff --git a/books/codesandbox-guidebook/9.md b/books/codesandbox-guidebook/9.md new file mode 100644 index 0000000..6ffc63b --- /dev/null +++ b/books/codesandbox-guidebook/9.md @@ -0,0 +1,8 @@ +--- +id: reference +title: 参考文献 +--- + +- [CodeSandbox 公式ドキュメント](https://codesandbox.io/docs) +- [npm の公式ドキュメント](https://docs.npmjs.com/) +- [Prettier の公式ドキュメント](https://prettier.io/docs/en/index.html) diff --git a/books/codesandbox-guidebook/config.yml b/books/codesandbox-guidebook/config.yml new file mode 100644 index 0000000..53f4647 --- /dev/null +++ b/books/codesandbox-guidebook/config.yml @@ -0,0 +1,5 @@ +title: CodeSandbox ガイド +summary: CodeSandbox の使い方 +topics: ["codesandbox"] +published: true +price: 0 diff --git a/books/codesandbox-guidebook/cover.png b/books/codesandbox-guidebook/cover.png new file mode 100644 index 0000000..060cdd8 Binary files /dev/null and b/books/codesandbox-guidebook/cover.png differ diff --git a/csb-jp.github.io b/csb-jp.github.io new file mode 160000 index 0000000..ebd82e7 --- /dev/null +++ b/csb-jp.github.io @@ -0,0 +1 @@ +Subproject commit ebd82e7aca37e11c8332f8913ef899fc176549ca