[{"data":1,"prerenderedAt":1838},["ShallowReactive",2],{"nav-docs-ja":3,"page-/ja/docs/webspace/examples/realtime-gomoku":1156,"surround-/ja/docs/webspace/examples/realtime-gomoku":1832,"raw-/ja/docs/webspace/examples/realtime-gomoku":1835},[4,67,374,775,903,1074,1084,1109],{"title":5,"tags":6,"slug":6,"path":7,"stem":8,"children":9,"page":66,"sourcePath":7},"SpaceBuilderを始める",null,"/getting-started","00.getting-started",[10,15,20,27,34,39,45,50,55,60],{"title":11,"path":12,"stem":13,"tags":6,"slug":14,"sourcePath":12},"SpaceBuilderの紹介","/getting-started/overview","00.getting-started/00.overview","/getting-started/overview/",{"title":16,"path":17,"stem":18,"tags":6,"slug":19,"sourcePath":17},"SetFNアカウントの作成","/getting-started/create-setfn-account","00.getting-started/05.create-setfn-account","/getting-started/create-setfn-account/",{"title":21,"path":22,"stem":23,"tags":24,"slug":26,"sourcePath":22},"Linuxにインストールする","/getting-started/install-linux","00.getting-started/10.install-linux",[25],"recommended","/getting-started/install-linux/",{"title":28,"path":29,"stem":30,"tags":31,"slug":33,"sourcePath":29},"Dockerでインストールする","/getting-started/install-docker","00.getting-started/12.install-docker",[32],"preparing","/getting-started/install-docker/",{"title":35,"path":36,"stem":37,"tags":6,"slug":38,"sourcePath":36},"Windowsにインストールする","/getting-started/install-windows","00.getting-started/14.install-windows","/getting-started/install-windows/",{"title":40,"path":41,"stem":42,"tags":43,"slug":44,"sourcePath":41},"macOSにインストールする","/getting-started/install-macos","00.getting-started/16.install-macos",[32],"/getting-started/install-macos/",{"title":46,"path":47,"stem":48,"tags":6,"slug":49,"sourcePath":47},"初期設定","/getting-started/initial-setup","00.getting-started/20.initial-setup","/getting-started/initial-setup/",{"title":51,"path":52,"stem":53,"tags":6,"slug":54,"sourcePath":52},"ライセンスの有効化","/getting-started/license-activation","00.getting-started/30.license-activation","/getting-started/license-activation/",{"title":56,"path":57,"stem":58,"tags":6,"slug":59,"sourcePath":57},"接続アドレスの確認（ローカル/内部ネットワーク）","/getting-started/access-url","00.getting-started/35.access-url","/getting-started/access-url/",{"title":61,"path":62,"stem":63,"tags":64,"slug":65,"sourcePath":62},"外部接続方式の選択","/getting-started/access-domain","00.getting-started/40.access-domain",[25],"/getting-started/access-domain/",false,{"title":68,"tags":6,"slug":6,"path":69,"stem":70,"children":71,"page":66,"sourcePath":69},"スペースを管理する","/admin","10.admin",[72,92,162,197,249,274,289,299,339],{"title":73,"tags":6,"slug":6,"path":74,"stem":75,"children":76,"page":66,"sourcePath":74},"管理者ホーム","/admin/home","10.admin/00.home",[77,82,87],{"title":78,"path":79,"stem":80,"tags":6,"slug":81,"sourcePath":79},"管理者ページにアクセスする","/admin/home/admin-page-access","10.admin/00.home/00.admin-page-access","/admin/home/admin-page-access/",{"title":83,"path":69,"stem":84,"tags":6,"slug":85,"sourcePath":86},"管理者メニューを確認する","10.admin/00.home/00.overview","/admin/","/admin/home/overview",{"title":88,"path":89,"stem":90,"tags":6,"slug":91,"sourcePath":89},"ライセンス管理","/admin/home/license","10.admin/00.home/20.license","/admin/home/license/",{"title":93,"tags":6,"slug":6,"path":94,"stem":95,"children":96,"page":66,"sourcePath":94},"ユーザー管理","/admin/user-management","10.admin/10.user-management",[97,102,107,112,117,122,127,132,137,142,147,152,157],{"title":98,"path":99,"stem":100,"tags":6,"slug":101,"sourcePath":99},"登録ポリシーと既定の権限を設定する","/admin/user-management/signup-policy","10.admin/10.user-management/02.signup-policy","/admin/user-management/signup-policy/",{"title":103,"path":104,"stem":105,"tags":6,"slug":106,"sourcePath":104},"登録時の規約を登録する","/admin/user-management/signup-terms","10.admin/10.user-management/04.signup-terms","/admin/user-management/signup-terms/",{"title":108,"path":109,"stem":110,"tags":6,"slug":111,"sourcePath":109},"ユーザーアカウントの作成","/admin/user-management/invite-new-member","10.admin/10.user-management/10.invite-new-member","/admin/user-management/invite-new-member/",{"title":113,"path":114,"stem":115,"tags":6,"slug":116,"sourcePath":114},"ユーザーアカウントを編集する","/admin/user-management/edit-member","10.admin/10.user-management/11.edit-member","/admin/user-management/edit-member/",{"title":118,"path":119,"stem":120,"tags":6,"slug":121,"sourcePath":119},"管理者を追加する","/admin/user-management/add-new-admin","10.admin/10.user-management/12.add-new-admin","/admin/user-management/add-new-admin/",{"title":123,"path":124,"stem":125,"tags":6,"slug":126,"sourcePath":124},"チーム管理","/admin/user-management/team","10.admin/10.user-management/22.team","/admin/user-management/team/",{"title":128,"path":129,"stem":130,"tags":6,"slug":131,"sourcePath":129},"レベル管理","/admin/user-management/level","10.admin/10.user-management/24.level","/admin/user-management/level/",{"title":133,"path":134,"stem":135,"tags":6,"slug":136,"sourcePath":134},"接続記録を確認する","/admin/user-management/access-log","10.admin/10.user-management/30.access-log","/admin/user-management/access-log/",{"title":138,"path":139,"stem":140,"tags":6,"slug":141,"sourcePath":139},"アクティブなデバイスを管理する","/admin/user-management/active-devices","10.admin/10.user-management/31.active-devices","/admin/user-management/active-devices/",{"title":143,"path":144,"stem":145,"tags":6,"slug":146,"sourcePath":144},"アカウント・セキュリティのポリシーを設定する","/admin/user-management/account-security","10.admin/10.user-management/32.account-security","/admin/user-management/account-security/",{"title":148,"path":149,"stem":150,"tags":6,"slug":151,"sourcePath":149},"ロボット確認（CAPTCHA）を設定する","/admin/user-management/captcha","10.admin/10.user-management/33.captcha","/admin/user-management/captcha/",{"title":153,"path":154,"stem":155,"tags":6,"slug":156,"sourcePath":154},"案内送信を設定する","/admin/user-management/notice-settings","10.admin/10.user-management/34.notice-settings","/admin/user-management/notice-settings/",{"title":158,"path":159,"stem":160,"tags":6,"slug":161,"sourcePath":159},"会員へ一斉案内メールを送信する","/admin/user-management/bulk-mail","10.admin/10.user-management/36.bulk-mail","/admin/user-management/bulk-mail/",{"title":163,"tags":6,"slug":6,"path":164,"stem":165,"children":166,"page":66,"sourcePath":164},"サービス構成","/admin/service-config","10.admin/20.service-config",[167,172,177,182,187,192],{"title":168,"path":169,"stem":170,"tags":6,"slug":171,"sourcePath":169},"ファイルエリアの設定","/admin/service-config/file-area","10.admin/20.service-config/10.file-area","/admin/service-config/file-area/",{"title":173,"path":174,"stem":175,"tags":6,"slug":176,"sourcePath":174},"Webhookの設定","/admin/service-config/webhook-settings","10.admin/20.service-config/16.webhook-settings","/admin/service-config/webhook-settings/",{"title":178,"path":179,"stem":180,"tags":6,"slug":181,"sourcePath":179},"コミュニティ設定","/admin/service-config/community-space","10.admin/20.service-config/22.community-space","/admin/service-config/community-space/",{"title":183,"path":184,"stem":185,"tags":6,"slug":186,"sourcePath":184},"AIチャットボットポリシー設定","/admin/service-config/community-ai-chatbot","10.admin/20.service-config/24.community-ai-chatbot","/admin/service-config/community-ai-chatbot/",{"title":188,"path":189,"stem":190,"tags":6,"slug":191,"sourcePath":189},"メール設定","/admin/service-config/email-settings","10.admin/20.service-config/30.email-settings","/admin/service-config/email-settings/",{"title":193,"path":194,"stem":195,"tags":6,"slug":196,"sourcePath":194},"ブランディング設定","/admin/service-config/brand","10.admin/20.service-config/40.brand","/admin/service-config/brand/",{"title":198,"tags":6,"slug":6,"path":199,"stem":200,"children":201,"page":66,"sourcePath":199},"ナレッジサービス","/admin/knowledge","10.admin/30.knowledge",[202,207,214,219,224,229,234,239,244],{"title":203,"path":199,"stem":204,"tags":6,"slug":205,"sourcePath":206},"ナレッジサービスの概要","10.admin/30.knowledge/00.overview","/admin/knowledge/","/admin/knowledge/overview",{"title":208,"path":209,"stem":210,"children":211,"tags":6,"slug":213,"sourcePath":209},"収集・インデックス作成","/admin/knowledge/indexing","10.admin/30.knowledge/10.indexing",[212],{"title":208,"path":209,"stem":210,"tags":6,"slug":213,"sourcePath":209},"/admin/knowledge/indexing/",{"title":215,"path":216,"stem":217,"tags":6,"slug":218,"sourcePath":216},"検索品質・言語","/admin/knowledge/search","10.admin/30.knowledge/20.search","/admin/knowledge/search/",{"title":220,"path":221,"stem":222,"tags":6,"slug":223,"sourcePath":221},"ナレッジストレージ","/admin/knowledge/storage","10.admin/30.knowledge/30.storage","/admin/knowledge/storage/",{"title":225,"path":226,"stem":227,"tags":6,"slug":228,"sourcePath":226},"ナレッジストレージを運用する","/admin/knowledge/storage-operations","10.admin/30.knowledge/32.storage-operations","/admin/knowledge/storage-operations/",{"title":230,"path":231,"stem":232,"tags":6,"slug":233,"sourcePath":231},"Qdrantを接続する","/admin/knowledge/qdrant","10.admin/30.knowledge/34.qdrant","/admin/knowledge/qdrant/",{"title":235,"path":236,"stem":237,"tags":6,"slug":238,"sourcePath":236},"Qdrantサーバーを準備する","/admin/knowledge/qdrant-server-setup","10.admin/30.knowledge/35.qdrant-server-setup","/admin/knowledge/qdrant-server-setup/",{"title":240,"path":241,"stem":242,"tags":6,"slug":243,"sourcePath":241},"Milvusを接続する","/admin/knowledge/milvus","10.admin/30.knowledge/36.milvus","/admin/knowledge/milvus/",{"title":245,"path":246,"stem":247,"tags":6,"slug":248,"sourcePath":246},"外部検索・根拠","/admin/knowledge/web-search","10.admin/30.knowledge/40.web-search","/admin/knowledge/web-search/",{"title":250,"tags":6,"slug":6,"path":251,"stem":252,"children":253,"page":66,"sourcePath":251},"AIサービス","/admin/ai","10.admin/35.ai",[254,259,264,269],{"title":255,"path":251,"stem":256,"tags":6,"slug":257,"sourcePath":258},"AIサービスを管理する","10.admin/35.ai/00.overview","/admin/ai/","/admin/ai/overview",{"title":260,"path":261,"stem":262,"tags":6,"slug":263,"sourcePath":261},"モデル・ランタイムを設定する","/admin/ai/models","10.admin/35.ai/10.models","/admin/ai/models/",{"title":265,"path":266,"stem":267,"tags":6,"slug":268,"sourcePath":266},"ツール・連携を設定する","/admin/ai/integrations","10.admin/35.ai/20.integrations","/admin/ai/integrations/",{"title":270,"path":271,"stem":272,"tags":6,"slug":273,"sourcePath":271},"MCPサーバーを管理する","/admin/ai/mcp","10.admin/35.ai/30.mcp","/admin/ai/mcp/",{"title":275,"tags":6,"slug":6,"path":276,"stem":277,"children":278,"page":66,"sourcePath":276},"プラグイン","/admin/plugin","10.admin/40.plugin",[279,284],{"title":280,"path":281,"stem":282,"tags":6,"slug":283,"sourcePath":281},"プラグインを管理する","/admin/plugin/overview","10.admin/40.plugin/00.overview","/admin/plugin/overview/",{"title":285,"path":286,"stem":287,"tags":6,"slug":288,"sourcePath":286},"拡張プラグインの設定","/admin/plugin/settings","10.admin/40.plugin/10.settings","/admin/plugin/settings/",{"title":290,"path":291,"stem":292,"children":293,"page":66,"sourcePath":291},"Operations","/admin/operations","10.admin/45.operations",[294],{"title":295,"path":291,"stem":296,"tags":6,"slug":297,"sourcePath":298},"運用・監査の記録を確認する","10.admin/45.operations/00.overview","/admin/operations/","/admin/operations/overview",{"title":300,"tags":6,"slug":6,"path":301,"stem":302,"children":303,"page":66,"sourcePath":301},"セキュリティ管理","/admin/security","10.admin/50.security",[304,309,314,319,324,329,334],{"title":305,"path":306,"stem":307,"tags":6,"slug":308,"sourcePath":306},"セキュリティの概要","/admin/security/overview","10.admin/50.security/00.overview","/admin/security/overview/",{"title":310,"path":311,"stem":312,"tags":6,"slug":313,"sourcePath":311},"監査ログを確認する","/admin/security/audit-log","10.admin/50.security/05.audit-log","/admin/security/audit-log/",{"title":315,"path":316,"stem":317,"tags":6,"slug":318,"sourcePath":316},"ブロック管理","/admin/security/block-management","10.admin/50.security/10.block-management","/admin/security/block-management/",{"title":320,"path":321,"stem":322,"tags":6,"slug":323,"sourcePath":321},"セキュリティ設定","/admin/security/security-setting","10.admin/50.security/12.security-setting","/admin/security/security-setting/",{"title":325,"path":326,"stem":327,"tags":6,"slug":328,"sourcePath":326},"承認待ちの端末を処理する","/admin/security/device-approvals","10.admin/50.security/14.device-approvals","/admin/security/device-approvals/",{"title":330,"path":331,"stem":332,"tags":6,"slug":333,"sourcePath":331},"IPアクセス制限","/admin/security/ip-restriction","10.admin/50.security/16.ip-restriction","/admin/security/ip-restriction/",{"title":335,"path":336,"stem":337,"tags":6,"slug":338,"sourcePath":336},"管理者の2段階認証を設定する","/admin/security/two-factor-auth","10.admin/50.security/18.two-factor-auth","/admin/security/two-factor-auth/",{"title":340,"tags":6,"slug":6,"path":341,"stem":342,"children":343,"page":66,"sourcePath":341},"システム管理","/admin/system-admin","10.admin/60.system-admin",[344,349,354,359,364,369],{"title":345,"path":346,"stem":347,"tags":6,"slug":348,"sourcePath":346},"デバイス情報","/admin/system-admin/device-info","10.admin/60.system-admin/10.device-info","/admin/system-admin/device-info/",{"title":350,"path":351,"stem":352,"tags":6,"slug":353,"sourcePath":351},"サーバーの再起動とシステムメンテナンス","/admin/system-admin/server-restart","10.admin/60.system-admin/12.server-restart","/admin/system-admin/server-restart/",{"title":355,"path":356,"stem":357,"tags":6,"slug":358,"sourcePath":356},"バックグラウンドサービス","/admin/system-admin/background-service","10.admin/60.system-admin/14.background-service","/admin/system-admin/background-service/",{"title":360,"path":361,"stem":362,"tags":6,"slug":363,"sourcePath":361},"SpaceBuilderをアップデートする","/admin/system-admin/update","10.admin/60.system-admin/16.update","/admin/system-admin/update/",{"title":365,"path":366,"stem":367,"tags":6,"slug":368,"sourcePath":366},"SpaceBuilderをアンインストールする","/admin/system-admin/uninstall","10.admin/60.system-admin/18.uninstall","/admin/system-admin/uninstall/",{"title":370,"path":371,"stem":372,"tags":6,"slug":373,"sourcePath":371},"サーバーを移行する","/admin/system-admin/server-migration","10.admin/60.system-admin/20.server-migration","/admin/system-admin/server-migration/",{"title":375,"tags":6,"slug":6,"path":376,"stem":377,"children":378,"page":66,"sourcePath":376},"ワークスペースを使用する","/workspace","20.workspace",[379,419,439,523,662,718,754],{"title":380,"tags":6,"slug":6,"path":381,"stem":382,"children":383,"page":66,"sourcePath":381},"メニュー","/workspace/menu","20.workspace/05.menu",[384,389,394,399,404,409,414],{"title":385,"path":386,"stem":387,"tags":6,"slug":388,"sourcePath":386},"ワークスペースの紹介","/workspace/menu/overview","20.workspace/05.menu/00.overview","/workspace/menu/overview/",{"title":390,"path":391,"stem":392,"tags":6,"slug":393,"sourcePath":391},"チームスペース","/workspace/menu/team-space","20.workspace/05.menu/05.team-space","/workspace/menu/team-space/",{"title":395,"path":396,"stem":397,"tags":6,"slug":398,"sourcePath":396},"クライアントスペース","/workspace/menu/client-space","20.workspace/05.menu/06.client-space","/workspace/menu/client-space/",{"title":400,"path":401,"stem":402,"tags":6,"slug":403,"sourcePath":401},"お気に入り","/workspace/menu/favorites","20.workspace/05.menu/10.favorites","/workspace/menu/favorites/",{"title":405,"path":406,"stem":407,"tags":6,"slug":408,"sourcePath":406},"最近のドキュメント","/workspace/menu/recent","20.workspace/05.menu/20.recent","/workspace/menu/recent/",{"title":410,"path":411,"stem":412,"tags":6,"slug":413,"sourcePath":411},"外部共有","/workspace/menu/external-share","20.workspace/05.menu/30.external-share","/workspace/menu/external-share/",{"title":415,"path":416,"stem":417,"tags":6,"slug":418,"sourcePath":416},"ゴミ箱","/workspace/menu/trash","20.workspace/05.menu/40.trash","/workspace/menu/trash/",{"title":420,"tags":6,"slug":6,"path":421,"stem":422,"children":423,"page":66,"sourcePath":421},"アカウント","/workspace/account","20.workspace/10.account",[424,429,434],{"title":425,"path":426,"stem":427,"tags":6,"slug":428,"sourcePath":426},"新規登録とログイン","/workspace/account/signup","20.workspace/10.account/10.signup","/workspace/account/signup/",{"title":430,"path":431,"stem":432,"tags":6,"slug":433,"sourcePath":431},"パスワードの再設定","/workspace/account/reset-password","20.workspace/10.account/20.reset-password","/workspace/account/reset-password/",{"title":435,"path":436,"stem":437,"tags":6,"slug":438,"sourcePath":436},"アカウント設定","/workspace/account/account-settings","20.workspace/10.account/30.account-settings","/workspace/account/account-settings/",{"title":440,"tags":6,"slug":6,"path":441,"stem":442,"children":443,"page":66,"sourcePath":441},"フォルダ","/workspace/folder","20.workspace/20.folder",[444,449,454,459,464,471,476,481,486,491,496,501,506,511,518],{"title":445,"path":446,"stem":447,"tags":6,"slug":448,"sourcePath":446},"フォルダの基本機能","/workspace/folder/basic","20.workspace/20.folder/10.basic","/workspace/folder/basic/",{"title":450,"path":451,"stem":452,"tags":6,"slug":453,"sourcePath":451},"複数のフォルダを一度に作成する","/workspace/folder/bulk-folder-creation","20.workspace/20.folder/12.bulk-folder-creation","/workspace/folder/bulk-folder-creation/",{"title":455,"path":456,"stem":457,"tags":6,"slug":458,"sourcePath":456},"フィルター","/workspace/folder/filter","20.workspace/20.folder/13.filter","/workspace/folder/filter/",{"title":460,"path":461,"stem":462,"tags":6,"slug":463,"sourcePath":461},"フォルダの表示オプション設定","/workspace/folder/folder-view-options","20.workspace/20.folder/14.folder-view-options","/workspace/folder/folder-view-options/",{"title":465,"path":466,"stem":467,"tags":468,"slug":470,"sourcePath":466},"フォルダを掲示板として使う","/workspace/folder/board-view","20.workspace/20.folder/15.board-view",[469],"hot","/workspace/folder/board-view/",{"title":472,"path":473,"stem":474,"tags":6,"slug":475,"sourcePath":473},"フォルダWebビュー","/workspace/folder/folder-web-view","20.workspace/20.folder/16.folder-web-view","/workspace/folder/folder-web-view/",{"title":477,"path":478,"stem":479,"tags":6,"slug":480,"sourcePath":478},"フォルダ整理","/workspace/folder/folder-organize","20.workspace/20.folder/17.folder-organize","/workspace/folder/folder-organize/",{"title":482,"path":483,"stem":484,"tags":6,"slug":485,"sourcePath":483},"フォルダのお知らせ (README)","/workspace/folder/folder-readme","20.workspace/20.folder/18.folder-readme","/workspace/folder/folder-readme/",{"title":487,"path":488,"stem":489,"tags":6,"slug":490,"sourcePath":488},"フォルダ/ファイルリストのエクスポート","/workspace/folder/folder-export","20.workspace/20.folder/20.folder-export","/workspace/folder/folder-export/",{"title":492,"path":493,"stem":494,"tags":6,"slug":495,"sourcePath":493},"レベル別のアクセス権限設定","/workspace/folder/level-access-permissions","20.workspace/20.folder/24.level-access-permissions","/workspace/folder/level-access-permissions/",{"title":497,"path":498,"stem":499,"tags":6,"slug":500,"sourcePath":498},"チーム別のアクセス権限設定","/workspace/folder/team-access-permissions","20.workspace/20.folder/26.team-access-permissions","/workspace/folder/team-access-permissions/",{"title":502,"path":503,"stem":504,"tags":6,"slug":505,"sourcePath":503},"ファイルルールを設定する","/workspace/folder/file-rules","20.workspace/20.folder/28.file-rules","/workspace/folder/file-rules/",{"title":507,"path":508,"stem":509,"tags":6,"slug":510,"sourcePath":508},"フォルダWebhook","/workspace/folder/webhook","20.workspace/20.folder/30.webhook","/workspace/folder/webhook/",{"title":512,"path":513,"stem":514,"children":515,"tags":6,"slug":517,"sourcePath":513},"フォルダのナレッジインデックスを設定する","/workspace/folder/knowledge-index","20.workspace/20.folder/32.knowledge-index",[516],{"title":512,"path":513,"stem":514,"tags":6,"slug":517,"sourcePath":513},"/workspace/folder/knowledge-index/",{"title":519,"path":520,"stem":521,"tags":6,"slug":522,"sourcePath":520},"業務自動化フォルダ","/workspace/folder/automation","20.workspace/20.folder/40.automation","/workspace/folder/automation/",{"title":524,"tags":6,"slug":6,"path":525,"stem":526,"children":527,"page":66,"sourcePath":525},"ファイル","/workspace/file","20.workspace/30.file",[528,533,538,543,548,553,558,563,568,573,578,583,588,593,598,603,608,613,618,623,628,633,637,642,647,652,657],{"title":529,"path":530,"stem":531,"tags":6,"slug":532,"sourcePath":530},"ファイル管理の基本機能","/workspace/file/overview","20.workspace/30.file/00.overview","/workspace/file/overview/",{"title":534,"path":535,"stem":536,"tags":6,"slug":537,"sourcePath":535},"ファイルを見ながら一覧を確認する","/workspace/file/list-in-file","20.workspace/30.file/05.list-in-file","/workspace/file/list-in-file/",{"title":539,"path":540,"stem":541,"tags":6,"slug":542,"sourcePath":540},"マークダウン、テキストファイルの表示と編集","/workspace/file/text-file-viewer","20.workspace/30.file/10.text-file-viewer","/workspace/file/text-file-viewer/",{"title":544,"path":545,"stem":546,"tags":6,"slug":547,"sourcePath":545},"HTMLファイルの表示","/workspace/file/html-viewer","20.workspace/30.file/11.html-viewer","/workspace/file/html-viewer/",{"title":549,"path":550,"stem":551,"tags":6,"slug":552,"sourcePath":550},"CSVファイルの表示と編集","/workspace/file/csv-viewer","20.workspace/30.file/12.csv-viewer","/workspace/file/csv-viewer/",{"title":554,"path":555,"stem":556,"tags":6,"slug":557,"sourcePath":555},"画像/動画ファイルの表示","/workspace/file/image-file-viewer","20.workspace/30.file/13.image-file-viewer","/workspace/file/image-file-viewer/",{"title":559,"path":560,"stem":561,"tags":6,"slug":562,"sourcePath":560},"Office/PDFファイルの表示","/workspace/file/office-viewer","20.workspace/30.file/14.office-viewer","/workspace/file/office-viewer/",{"title":564,"path":565,"stem":566,"tags":6,"slug":567,"sourcePath":565},"Webページの貼り付け(HTML)","/workspace/file/paste-html","20.workspace/30.file/20.paste-html","/workspace/file/paste-html/",{"title":569,"path":570,"stem":571,"tags":6,"slug":572,"sourcePath":570},"スクリーンショットを貼り付ける","/workspace/file/paste-screenshot","20.workspace/30.file/21.paste-screenshot","/workspace/file/paste-screenshot/",{"title":574,"path":575,"stem":576,"tags":6,"slug":577,"sourcePath":575},"Markdown(MD)を貼り付ける","/workspace/file/paste-md","20.workspace/30.file/22.paste-md","/workspace/file/paste-md/",{"title":579,"path":580,"stem":581,"tags":6,"slug":582,"sourcePath":580},"スクリーン録画","/workspace/file/screen-recording","20.workspace/30.file/23.screen-recording","/workspace/file/screen-recording/",{"title":584,"path":585,"stem":586,"tags":6,"slug":587,"sourcePath":585},"クイックノート","/workspace/file/quick-note","20.workspace/30.file/24.quick-note","/workspace/file/quick-note/",{"title":589,"path":590,"stem":591,"tags":6,"slug":592,"sourcePath":590},"ファイルタグ","/workspace/file/file-tag","20.workspace/30.file/33.file-tag","/workspace/file/file-tag/",{"title":594,"path":595,"stem":596,"tags":6,"slug":597,"sourcePath":595},"ファイル名を一括変更する","/workspace/file/bulk-name-revise","20.workspace/30.file/34.bulk-name-revise","/workspace/file/bulk-name-revise/",{"title":599,"path":600,"stem":601,"tags":6,"slug":602,"sourcePath":600},"ファイル変換","/workspace/file/file-convert-overview","20.workspace/30.file/40.file-convert-overview","/workspace/file/file-convert-overview/",{"title":604,"path":605,"stem":606,"tags":6,"slug":607,"sourcePath":605},"テンプレートファイル","/workspace/file/templates","20.workspace/30.file/41.templates","/workspace/file/templates/",{"title":609,"path":610,"stem":611,"tags":6,"slug":612,"sourcePath":610},"ToDoリスト","/workspace/file/template-todo","20.workspace/30.file/42.template-todo","/workspace/file/template-todo/",{"title":614,"path":615,"stem":616,"tags":6,"slug":617,"sourcePath":615},"決裁書式","/workspace/file/template-approval","20.workspace/30.file/43.template-approval","/workspace/file/template-approval/",{"title":619,"path":620,"stem":621,"tags":6,"slug":622,"sourcePath":620},"カンバンボード","/workspace/file/template-kanban","20.workspace/30.file/44.template-kanban","/workspace/file/template-kanban/",{"title":624,"path":625,"stem":626,"tags":6,"slug":627,"sourcePath":625},"タイムライン","/workspace/file/template-timeline","20.workspace/30.file/45.template-timeline","/workspace/file/template-timeline/",{"title":629,"path":630,"stem":631,"tags":6,"slug":632,"sourcePath":630},"メモ帳","/workspace/file/template-memo","20.workspace/30.file/46.template-memo","/workspace/file/template-memo/",{"title":634,"path":635,"stem":636,"tags":6,"slug":635,"sourcePath":635},"AIチャットファイル","/workspace/file/ai-chat-file","20.workspace/30.file/47.ai-chat-file",{"title":638,"path":639,"stem":640,"tags":6,"slug":641,"sourcePath":639},"ファイル変更記録の確認","/workspace/file/audit-trail","20.workspace/30.file/50.audit-trail","/workspace/file/audit-trail/",{"title":643,"path":644,"stem":645,"tags":6,"slug":646,"sourcePath":644},"ファイルバージョン管理","/workspace/file/version-trail","20.workspace/30.file/51.version-trail","/workspace/file/version-trail/",{"title":648,"path":649,"stem":650,"tags":6,"slug":651,"sourcePath":649},"編集ロック","/workspace/file/file-lock","20.workspace/30.file/52.file-lock","/workspace/file/file-lock/",{"title":653,"path":654,"stem":655,"tags":6,"slug":656,"sourcePath":654},"ファイル暗号化","/workspace/file/file-encrypt","20.workspace/30.file/53.file-encrypt","/workspace/file/file-encrypt/",{"title":658,"path":659,"stem":660,"tags":6,"slug":661,"sourcePath":659},"ディスク上のファイルを登録","/workspace/file/disk-file-registration","20.workspace/30.file/60.disk-file-registration","/workspace/file/disk-file-registration/",{"title":663,"tags":6,"slug":6,"path":664,"stem":665,"children":666,"page":66,"sourcePath":664},"コラボレーション","/workspace/cooperation","20.workspace/35.cooperation",[667,672,677,682,687,692,697,702,707,713],{"title":668,"path":669,"stem":670,"tags":6,"slug":671,"sourcePath":669},"ファイル/フォルダコメント","/workspace/cooperation/file-comments","20.workspace/35.cooperation/00.file-comments","/workspace/cooperation/file-comments/",{"title":673,"path":674,"stem":675,"tags":6,"slug":676,"sourcePath":674},"チャット","/workspace/cooperation/chat","20.workspace/35.cooperation/10.chat","/workspace/cooperation/chat/",{"title":678,"path":679,"stem":680,"tags":6,"slug":681,"sourcePath":679},"コラボレーションチャットと編集ロック","/workspace/cooperation/collaboration-chat","20.workspace/35.cooperation/11.collaboration-chat","/workspace/cooperation/collaboration-chat/",{"title":683,"path":684,"stem":685,"tags":6,"slug":686,"sourcePath":684},"チームメンバーの作業位置を追う","/workspace/cooperation/follow-team-location","20.workspace/35.cooperation/12.follow-team-location","/workspace/cooperation/follow-team-location/",{"title":688,"path":689,"stem":690,"tags":6,"slug":691,"sourcePath":689},"メンション","/workspace/cooperation/mention","20.workspace/35.cooperation/14.mention","/workspace/cooperation/mention/",{"title":693,"path":694,"stem":695,"tags":6,"slug":696,"sourcePath":694},"DM","/workspace/cooperation/dm","20.workspace/35.cooperation/16.dm","/workspace/cooperation/dm/",{"title":698,"path":699,"stem":700,"tags":6,"slug":701,"sourcePath":699},"通知アーカイブ","/workspace/cooperation/notification-inbox","20.workspace/35.cooperation/18.notification-inbox","/workspace/cooperation/notification-inbox/",{"title":703,"path":704,"stem":705,"tags":6,"slug":706,"sourcePath":704},"チーム活動を確認する","/workspace/cooperation/file-activity","20.workspace/35.cooperation/30.file-activity","/workspace/cooperation/file-activity/",{"title":708,"path":709,"stem":710,"tags":711,"slug":712,"sourcePath":709},"外部共有リンクの作成","/workspace/cooperation/share-link-creation","20.workspace/35.cooperation/40.share-link-creation",[469],"/workspace/cooperation/share-link-creation/",{"title":714,"path":715,"stem":716,"tags":6,"slug":717,"sourcePath":715},"外部共有のメール送信","/workspace/cooperation/share-link-email","20.workspace/35.cooperation/42.share-link-email","/workspace/cooperation/share-link-email/",{"title":719,"tags":6,"slug":6,"path":720,"stem":721,"children":722,"page":66,"sourcePath":720},"検索","/workspace/search","20.workspace/40.search",[723,728,734,739,744,749],{"title":724,"path":725,"stem":726,"tags":6,"slug":727,"sourcePath":725},"ファイル検索","/workspace/search/search","20.workspace/40.search/00.search","/workspace/search/search/",{"title":729,"path":730,"stem":731,"tags":732,"slug":733,"sourcePath":730},"文脈検索（AI検索）","/workspace/search/context-search","20.workspace/40.search/10.context-search",[469],"/workspace/search/context-search/",{"title":735,"path":736,"stem":737,"tags":6,"slug":738,"sourcePath":736},"画像検索","/workspace/search/image-search","20.workspace/40.search/20.image-search","/workspace/search/image-search/",{"title":740,"path":741,"stem":742,"tags":6,"slug":743,"sourcePath":741},"チャット検索","/workspace/search/chat-search","20.workspace/40.search/30.chat-search","/workspace/search/chat-search/",{"title":745,"path":746,"stem":747,"tags":6,"slug":748,"sourcePath":746},"コメント検索","/workspace/search/comment-search","20.workspace/40.search/40.comment-search","/workspace/search/comment-search/",{"title":750,"path":751,"stem":752,"tags":6,"slug":753,"sourcePath":751},"類義語検索","/workspace/search/synonym-search","20.workspace/40.search/50.synonym-search","/workspace/search/synonym-search/",{"title":755,"tags":6,"slug":6,"path":756,"stem":757,"children":758,"page":66,"sourcePath":756},"AI","/workspace/ai","20.workspace/50.ai",[759,764,770],{"title":760,"path":761,"stem":762,"tags":6,"slug":763,"sourcePath":761},"AI機能のまとめ","/workspace/ai/overview","20.workspace/50.ai/00.overview","/workspace/ai/overview/",{"title":765,"path":766,"stem":767,"tags":768,"slug":769,"sourcePath":766},"ローカルAIに作業を依頼する","/workspace/ai/ai-work","20.workspace/50.ai/10.ai-work",[469],"/workspace/ai/ai-work/",{"title":771,"path":772,"stem":773,"tags":6,"slug":774,"sourcePath":772},"外部AIの利用","/workspace/ai/external-ai","20.workspace/50.ai/20.external-ai","/workspace/ai/external-ai/",{"title":776,"tags":6,"slug":6,"path":777,"stem":778,"children":779,"page":66,"sourcePath":777},"Webspace","/webspace","40.webspace",[780,785,790,795,800,805,811,816,821,826,831,866],{"title":781,"path":782,"stem":783,"tags":6,"slug":784,"sourcePath":782},"WebSpaceとは","/webspace/overview","40.webspace/00.overview","/webspace/overview/",{"title":786,"path":787,"stem":788,"tags":6,"slug":789,"sourcePath":787},"Webサイトをデプロイする","/webspace/website-release","40.webspace/10.website-release","/webspace/website-release/",{"title":791,"path":792,"stem":793,"tags":6,"slug":794,"sourcePath":792},"スキーマファイル（.sfn）を作成する","/webspace/create-database","40.webspace/20.create-database","/webspace/create-database/",{"title":796,"path":797,"stem":798,"tags":6,"slug":799,"sourcePath":797},"APIをビルドしてデータベースをデプロイする","/webspace/api-overview","40.webspace/24.api-overview","/webspace/api-overview/",{"title":801,"path":802,"stem":803,"tags":6,"slug":804,"sourcePath":802},"フロントエンドのサンプルを確認する","/webspace/frontend-example","40.webspace/26.frontend-example","/webspace/frontend-example/",{"title":806,"path":807,"stem":808,"tags":809,"slug":810,"sourcePath":807},"チーム内向けWebサービスを作る","/webspace/internal-webservice","40.webspace/32.internal-webservice",[469],"/webspace/internal-webservice/",{"title":812,"path":813,"stem":814,"tags":6,"slug":815,"sourcePath":813},"外部公開用Webサービスを作る","/webspace/external-webservice","40.webspace/34.external-webservice","/webspace/external-webservice/",{"title":817,"path":818,"stem":819,"tags":6,"slug":820,"sourcePath":818},"SQLをインポート・エクスポートする","/webspace/sql-converter","40.webspace/42.sql-converter","/webspace/sql-converter/",{"title":822,"path":823,"stem":824,"tags":6,"slug":825,"sourcePath":823},"スキーマをコードに変換する","/webspace/code-converter","40.webspace/44.code-converter","/webspace/code-converter/",{"title":827,"path":828,"stem":829,"tags":6,"slug":830,"sourcePath":828},"パフォーマンスとスケーリング","/webspace/performance","40.webspace/48.performance","/webspace/performance/",{"title":832,"tags":6,"slug":6,"path":833,"stem":834,"children":835,"page":66,"sourcePath":833},"Webspace管理","/webspace/admin","40.webspace/50.admin",[836,841,846,851,856,861],{"title":837,"path":838,"stem":839,"tags":6,"slug":840,"sourcePath":838},"WebSpace管理を始める","/webspace/admin/overview","40.webspace/50.admin/00.overview","/webspace/admin/overview/",{"title":842,"path":843,"stem":844,"tags":6,"slug":845,"sourcePath":843},"運用状況","/webspace/admin/operations","40.webspace/50.admin/10.operations","/webspace/admin/operations/",{"title":847,"path":848,"stem":849,"tags":6,"slug":850,"sourcePath":848},"ワークスペースアクセス","/webspace/admin/workspace-access","40.webspace/50.admin/20.workspace-access","/webspace/admin/workspace-access/",{"title":852,"path":853,"stem":854,"tags":6,"slug":855,"sourcePath":853},"API・サイトセキュリティ","/webspace/admin/api-site-security","40.webspace/50.admin/30.api-site-security","/webspace/admin/api-site-security/",{"title":857,"path":858,"stem":859,"tags":6,"slug":860,"sourcePath":858},"サービスと容量","/webspace/admin/service-capacity","40.webspace/50.admin/40.service-capacity","/webspace/admin/service-capacity/",{"title":862,"path":863,"stem":864,"tags":6,"slug":865,"sourcePath":863},"デプロイ管理とフロントエンドリリース","/webspace/admin/deployments","40.webspace/50.admin/50.deployments","/webspace/admin/deployments/",{"title":867,"tags":868,"slug":6,"path":869,"stem":870,"children":871,"page":66,"sourcePath":869},"Webspaceを試してみる",[469],"/webspace/examples","40.webspace/60.examples",[872,877,882,888,893,898],{"title":873,"path":869,"stem":874,"tags":6,"slug":875,"sourcePath":876},"WebSpace応用編","40.webspace/60.examples/00.overview","/webspace/examples/","/webspace/examples/overview",{"title":878,"path":879,"stem":880,"tags":6,"slug":881,"sourcePath":879},"自分だけの業務システムを作る","/webspace/examples/my-own-system","40.webspace/60.examples/10.my-own-system","/webspace/examples/my-own-system/",{"title":883,"path":884,"stem":885,"tags":886,"slug":887,"sourcePath":884},"リアルタイム五目並べゲームを作る","/webspace/examples/realtime-gomoku","40.webspace/60.examples/20.realtime-gomoku",[469],"/webspace/examples/realtime-gomoku/",{"title":889,"path":890,"stem":891,"tags":6,"slug":892,"sourcePath":890},"フォルダ内のファイルで資料掲示板を作成する","/webspace/examples/folder-board","40.webspace/60.examples/30.folder-board","/webspace/examples/folder-board/",{"title":894,"path":895,"stem":896,"tags":6,"slug":897,"sourcePath":895},"共同モンスターレイドを作成する","/webspace/examples/monster-raid","40.webspace/60.examples/40.monster-raid","/webspace/examples/monster-raid/",{"title":899,"path":900,"stem":901,"tags":6,"slug":902,"sourcePath":900},"AI相談チャットのサンプルをデプロイする","/webspace/examples/ai-support-chat","40.webspace/60.examples/50.ai-support-chat","/webspace/examples/ai-support-chat/",{"title":904,"tags":6,"slug":6,"path":905,"stem":906,"children":907,"page":66,"sourcePath":905},"プラグインを使用する","/plugin","50.plugin",[908,913,933,993,1014,1049],{"title":909,"path":910,"stem":911,"tags":6,"slug":912,"sourcePath":910},"プラグインの概要","/plugin/overview","50.plugin/00.overview","/plugin/overview/",{"title":914,"tags":6,"slug":6,"path":915,"stem":916,"children":917,"page":66,"sourcePath":915},"カレンダー","/plugin/calendar","50.plugin/10.calendar",[918,923,928],{"title":919,"path":920,"stem":921,"tags":6,"slug":922,"sourcePath":920},"カレンダーの紹介","/plugin/calendar/overview","50.plugin/10.calendar/00.overview","/plugin/calendar/overview/",{"title":924,"path":925,"stem":926,"tags":6,"slug":927,"sourcePath":925},"イベントの作成・編集・削除","/plugin/calendar/create-event","50.plugin/10.calendar/10.create-event","/plugin/calendar/create-event/",{"title":929,"path":930,"stem":931,"tags":6,"slug":932,"sourcePath":930},"アクティビティ履歴の確認","/plugin/calendar/file-activity","50.plugin/10.calendar/40.file-activity","/plugin/calendar/file-activity/",{"title":934,"tags":6,"slug":6,"path":935,"stem":936,"children":937,"page":66,"sourcePath":935},"メール","/plugin/email","50.plugin/20.email",[938,943,947,952,957,963,968,973,978,983,988],{"title":939,"path":940,"stem":941,"tags":6,"slug":942,"sourcePath":940},"メールの紹介","/plugin/email/overview","50.plugin/20.email/00.overview","/plugin/email/overview/",{"title":188,"path":944,"stem":945,"tags":6,"slug":946,"sourcePath":944},"/plugin/email/setfn-email-setting","50.plugin/20.email/05.setfn-email-setting","/plugin/email/setfn-email-setting/",{"title":948,"path":949,"stem":950,"tags":6,"slug":951,"sourcePath":949},"外部メールの接続","/plugin/email/external-email","50.plugin/20.email/07.external-email","/plugin/email/external-email/",{"title":953,"path":954,"stem":955,"tags":6,"slug":956,"sourcePath":954},"メールの基本機能","/plugin/email/email-basic","50.plugin/20.email/10.email-basic","/plugin/email/email-basic/",{"title":958,"path":959,"stem":960,"tags":6,"slug":961,"sourcePath":962},"メールAIアシスタントを使用する","/plugin/email/ai-assistant","50.plugin/20.email/15.email-ai-assistant","/plugin/email/ai-assistant/","/plugin/email/email-ai-assistant",{"title":964,"path":965,"stem":966,"tags":6,"slug":967,"sourcePath":965},"メールの作成と送信","/plugin/email/email-compose","50.plugin/20.email/20.email-compose","/plugin/email/email-compose/",{"title":969,"path":970,"stem":971,"tags":6,"slug":972,"sourcePath":970},"ファイルを添付する","/plugin/email/email-attachment","50.plugin/20.email/30.email-attachment","/plugin/email/email-attachment/",{"title":974,"path":975,"stem":976,"tags":6,"slug":977,"sourcePath":975},"メールフォルダ管理","/plugin/email/email-folders","50.plugin/20.email/40.email-folders","/plugin/email/email-folders/",{"title":979,"path":980,"stem":981,"tags":6,"slug":982,"sourcePath":980},"メールを自動分類する","/plugin/email/email-auto-classify","50.plugin/20.email/50.email-auto-classify","/plugin/email/email-auto-classify/",{"title":984,"path":985,"stem":986,"tags":6,"slug":987,"sourcePath":985},"メールファイルの保管と共有","/plugin/email/email-open-in-space","50.plugin/20.email/60.email-open-in-space","/plugin/email/email-open-in-space/",{"title":989,"path":990,"stem":991,"tags":6,"slug":992,"sourcePath":990},"メールセキュリティ","/plugin/email/email-security","50.plugin/20.email/70.email-security","/plugin/email/email-security/",{"title":994,"tags":6,"slug":6,"path":995,"stem":996,"children":997,"page":66,"sourcePath":995},"ワークフロー (業務自動化)","/plugin/workflow","50.plugin/30.workflow",[998,1003,1009],{"title":999,"path":1000,"stem":1001,"tags":6,"slug":1002,"sourcePath":1000},"ワークフローの紹介","/plugin/workflow/overview","50.plugin/30.workflow/00.overview","/plugin/workflow/overview/",{"title":1004,"path":1005,"stem":1006,"tags":1007,"slug":1008,"sourcePath":1005},"新規ワークフローの作成","/plugin/workflow/new-workflow","50.plugin/30.workflow/10.new-workflow",[469],"/plugin/workflow/new-workflow/",{"title":1010,"path":1011,"stem":1012,"tags":6,"slug":1013,"sourcePath":1011},"実行履歴を確認する","/plugin/workflow/execution-history","50.plugin/30.workflow/20.execution-history","/plugin/workflow/execution-history/",{"title":1015,"tags":6,"slug":6,"path":1016,"stem":1017,"children":1018,"page":66,"sourcePath":1016},"ファインチューニング (AI学習)","/plugin/fine-tuning","50.plugin/40.fine-tuning",[1019,1024,1029,1034,1039,1044],{"title":1020,"path":1021,"stem":1022,"tags":6,"slug":1023,"sourcePath":1021},"ファインチューニングの紹介","/plugin/fine-tuning/overview","50.plugin/40.fine-tuning/00.overview","/plugin/fine-tuning/overview/",{"title":1025,"path":1026,"stem":1027,"tags":6,"slug":1028,"sourcePath":1026},"トレーニングデータの前処理","/plugin/fine-tuning/pre-processing","50.plugin/40.fine-tuning/10.pre-processing","/plugin/fine-tuning/pre-processing/",{"title":1030,"path":1031,"stem":1032,"tags":6,"slug":1033,"sourcePath":1031},"トレーニング","/plugin/fine-tuning/training","50.plugin/40.fine-tuning/20.training","/plugin/fine-tuning/training/",{"title":1035,"path":1036,"stem":1037,"tags":6,"slug":1038,"sourcePath":1036},"評価","/plugin/fine-tuning/evaluation","50.plugin/40.fine-tuning/30.evaluation","/plugin/fine-tuning/evaluation/",{"title":1040,"path":1041,"stem":1042,"tags":6,"slug":1043,"sourcePath":1041},"チャットテスト","/plugin/fine-tuning/chat-test","50.plugin/40.fine-tuning/40.chat-test","/plugin/fine-tuning/chat-test/",{"title":1045,"path":1046,"stem":1047,"tags":6,"slug":1048,"sourcePath":1046},"エクスポート","/plugin/fine-tuning/export","50.plugin/40.fine-tuning/50.export","/plugin/fine-tuning/export/",{"title":1050,"tags":6,"slug":6,"path":1051,"stem":1052,"children":1053,"page":66,"sourcePath":1051},"EDC (データ収集)","/plugin/edc","50.plugin/50.edc",[1054,1059,1064,1069],{"title":1055,"path":1056,"stem":1057,"tags":6,"slug":1058,"sourcePath":1056},"EDCの紹介","/plugin/edc/overview","50.plugin/50.edc/00.overview","/plugin/edc/overview/",{"title":1060,"path":1061,"stem":1062,"tags":6,"slug":1063,"sourcePath":1061},"データ入力、Audit Trail","/plugin/edc/data-entry","50.plugin/50.edc/10.data-entry","/plugin/edc/data-entry/",{"title":1065,"path":1066,"stem":1067,"tags":6,"slug":1068,"sourcePath":1066},"ビルダー","/plugin/edc/builder","50.plugin/50.edc/20.builder","/plugin/edc/builder/",{"title":1070,"path":1071,"stem":1072,"tags":6,"slug":1073,"sourcePath":1071},"ユーザー/サイトの設定","/plugin/edc/account","50.plugin/50.edc/30.account","/plugin/edc/account/",{"title":1075,"tags":6,"slug":6,"path":1076,"stem":1077,"children":1078,"page":66,"sourcePath":1076},"コマンドラインツール","/cli","90.cli",[1079],{"title":1080,"path":1081,"stem":1082,"tags":6,"slug":1083,"sourcePath":1081},"コマンドでサーバーを管理する","/cli/commands","90.cli/10.commands","/cli/commands/",{"title":1085,"tags":6,"slug":6,"path":1086,"stem":1087,"children":1088,"page":66,"sourcePath":1086},"セキュリティアップデート","/security-updates","95.security-updates",[1089,1094,1099,1104],{"title":1090,"path":1091,"stem":1092,"tags":6,"slug":1093,"sourcePath":1091},"セキュリティ点検とアップデートの仕組みを知る","/security-updates/overview","95.security-updates/00.overview","/security-updates/overview/",{"title":1095,"path":1096,"stem":1097,"tags":6,"slug":1098,"sourcePath":1096},"セキュリティ点検記録","/security-updates/review-log","95.security-updates/10.review-log","/security-updates/review-log/",{"title":1100,"path":1101,"stem":1102,"tags":6,"slug":1103,"sourcePath":1101},"主要な脆弱性の点検状況","/security-updates/vulnerability-status","95.security-updates/20.vulnerability-status","/security-updates/vulnerability-status/",{"title":1105,"path":1106,"stem":1107,"tags":6,"slug":1108,"sourcePath":1106},"サーバーのセキュリティアップデートを点検する","/security-updates/server-checklist","95.security-updates/30.server-checklist","/security-updates/server-checklist/",{"title":1110,"tags":6,"slug":6,"path":1111,"stem":1112,"children":1113,"page":66,"sourcePath":1111},"FAQ","/faq","99.FAQ",[1114,1120,1126,1132,1138,1144,1150],{"title":1115,"path":1116,"stem":1117,"tags":6,"slug":1118,"sourcePath":1119},"SetFNとクラウドサービスの比較","/FAQ/comparison-cloud","99.FAQ/10.comparison-cloud","/FAQ/comparison-cloud/","/faq/comparison-cloud",{"title":1121,"path":1122,"stem":1123,"tags":6,"slug":1124,"sourcePath":1125},"SetFNとNASの比較","/FAQ/comparison-nas","99.FAQ/20.comparison-nas","/FAQ/comparison-nas/","/faq/comparison-nas",{"title":1127,"path":1128,"stem":1129,"tags":6,"slug":1130,"sourcePath":1131},"セキュリティポリシー","/FAQ/security-policy","99.FAQ/30.security-policy","/FAQ/security-policy/","/faq/security-policy",{"title":1133,"path":1134,"stem":1135,"tags":6,"slug":1136,"sourcePath":1137},"SetFNはなぜ速いのか","/FAQ/why-fast","99.FAQ/40.why-fast","/FAQ/why-fast/","/faq/why-fast",{"title":1139,"path":1140,"stem":1141,"tags":6,"slug":1142,"sourcePath":1143},"ライセンスFAQ","/FAQ/license-faq","99.FAQ/50.license-faq","/FAQ/license-faq/","/faq/license-faq",{"title":1145,"path":1146,"stem":1147,"tags":6,"slug":1148,"sourcePath":1149},"AI機能FAQ","/FAQ/ai-faq","99.FAQ/60.ai-faq","/FAQ/ai-faq/","/faq/ai-faq",{"title":1151,"path":1152,"stem":1153,"tags":6,"slug":1154,"sourcePath":1155},"トラブルシューティングガイド","/FAQ/troubleshooting","99.FAQ/70.troubleshooting","/FAQ/troubleshooting/","/faq/troubleshooting",{"id":1157,"title":883,"body":1158,"cover":6,"description":1812,"extension":1813,"image":6,"meta":1814,"navigation":1815,"path":884,"reviewSummary":6,"reviewedAt":6,"seo":1816,"slug":887,"stem":885,"tags":1828,"thumbnail":1177,"thumbnailPosition":1829,"thumbnailScale":1830,"__hash__":1831},"docs_ja/40.webspace/60.examples/20.realtime-gomoku.md",{"type":1159,"value":1160,"toc":1796},"minimal",[1161,1164,1168,1171,1178,1181,1186,1194,1225,1228,1245,1248,1251,1254,1322,1325,1329,1332,1342,1349,1393,1396,1400,1407,1456,1459,1463,1470,1476,1479,1485,1492,1496,1506,1516,1529,1533,1563,1566,1572,1575,1578,1584,1591,1594,1599,1695,1698,1701,1704,1770,1773,1776,1779],[1162,1163,883],"h1",{"id":883},[1165,1166,1167],"p",{},"ファイルをアップロードしてスキーマをデプロイしたら、ブラウザーを2つ開いてみてください。一方で作成したルームに友人が参加し、石を置いた瞬間に、もう一方の画面にも同じ手が表示されます。勝敗とランキングは、サーバーが自動的に記録します。",[1165,1169,1170],{},"別途フロントエンドのビルドツールは必要ありません。完成済みのサンプルでまず1局実行してから、データ構造、リアルタイム機能、ゲームのルールを1つずつ変更してみることができます。",[1165,1172,1173],{},[1174,1175],"img",{"alt":1176,"src":1177},"19×19の碁盤と、リアルタイム中継、プレイヤーランキング","/img/docs/webspace/gomoku/realtime-gomoku-board.png",[1179,1180],"hr",{},[1182,1183,1185],"h2",{"id":1184},"_1-まず1局実行してみる","1. まず1局実行してみる",[1165,1187,1188,1189,1193],{},"最初は、",[1190,1191,1192],"strong",{},"サンプル一式のZIP","から始めるのが最も早い方法です。スキーマと画面のファイルを同じフォルダにアップロードしてスキーマをデプロイすれば、すぐに対局を開くことができます。",[1195,1196,1197,1218],"ul",{},[1198,1199,1200,1205,1206,1210,1211,1210,1214,1217],"li",{},[1201,1202,1204],"a",{"href":1203},"/examples/webspace/gomoku/setfn-realtime-gomoku-sample.zip","リアルタイム五目並べのサンプル一式のZIPをダウンロード","：スキーマ、",[1207,1208,1209],"code",{},"index.html","、",[1207,1212,1213],{},"style.css",[1207,1215,1216],{},"app.js","、READMEを含む",[1198,1219,1220,1224],{},[1201,1221,1223],{"href":1222},"/examples/webspace/gomoku/gomoku-realtime.sfn","五目並べのスキーマファイル（.sfn）をダウンロード","：バックエンドの構造だけを確認したい場合や、自分で作成した画面と接続する場合",[1165,1226,1227],{},"サンプルを実行すると、次の場面を実際に確認できます。",[1195,1229,1230,1233,1236,1239,1242],{},[1198,1231,1232],{},"ルームコードを使った2人のユーザーの対局",[1198,1234,1235],{},"最後の手、自分の石、現在の手番の表示",[1198,1237,1238],{},"1手ごとに計り直される3分の制限時間",[1198,1240,1241],{},"進行状況を知らせるリアルタイムの対局中継",[1198,1243,1244],{},"勝ち・負けの表示と、最近の対局、プレイヤーランキングの自動更新",[1165,1246,1247],{},"スキーマには、19×19の盤面、石を5つ並べると勝ち、勝ち3点・引き分け1点・負け0点というルールがあらかじめ入っています。ユーザー1人につき最大3つの待機ルームを作成でき、30分間参加者がいない待機ルームは整理の対象になります。",[1182,1249,1250],{"id":1250},"ゲームの中で動作する機能",[1165,1252,1253],{},"五目並べの1局には、WebSpaceの主な機能が自然に組み込まれています。",[1255,1256,1257,1270],"table",{},[1258,1259,1260],"thead",{},[1261,1262,1263,1267],"tr",{},[1264,1265,1266],"th",{},"機能",[1264,1268,1269],{},"五目並べでの役割",[1271,1272,1273,1282,1290,1298,1306,1314],"tbody",{},[1261,1274,1275,1279],{},[1276,1277,1278],"td",{},"スキーマファイル",[1276,1280,1281],{},"対局、着手の記録、ユーザーの戦績の構造を定義",[1261,1283,1284,1287],{},[1276,1285,1286],{},"REST API",[1276,1288,1289],{},"最近の対局とプレイヤーランキングを照会",[1261,1291,1292,1295],{},[1276,1293,1294],{},"WebSocket",[1276,1296,1297],{},"ルームの作成・参加と着手の結果をリアルタイムで伝達",[1261,1299,1300,1303],{},[1276,1301,1302],{},"イベントプロセッサー",[1276,1304,1305],{},"手番、座標、勝利条件、制限時間をサーバーで判定",[1261,1307,1308,1311],{},[1276,1309,1310],{},"メンバー権限",[1276,1312,1313],{},"ログインしたユーザーだけが対局に参加",[1261,1315,1316,1319],{},[1276,1317,1318],{},"コラボレーション機能",[1276,1320,1321],{},"同じ画面で参加者と会話",[1165,1323,1324],{},"重要なのは、ブラウザーが勝利を宣言したり、スコアを直接書き込んだりしないという点です。サーバーが現在の盤面と手番を確認し、正常な着手だけを保存してから、2人のユーザーに同じ結果を送ります。",[1182,1326,1328],{"id":1327},"_2-ワークスペースにアップロードする","2. ワークスペースにアップロードする",[1165,1330,1331],{},"スキーマファイルだけをダウンロードした場合は、チームまたは個人のワークスペースのプロジェクトフォルダにアップロードします。サンプル一式のZIPをダウンロードした場合は、フォルダのアップロードまたは圧縮ファイルのアップロードで、5つのファイルを同じフォルダに置きます。",[1333,1334,1340],"pre",{"className":1335,"code":1337,"language":1338,"meta":1339},[1336],"language-text","五目並べ対局場/\n├── gomoku-realtime.sfn\n├── index.html\n├── style.css\n├── app.js\n└── README.md\n","text","",[1207,1341,1337],{"__ignoreMap":1339},[1165,1343,1344,1345,1348],{},"スキーマファイルを開き、",[1207,1346,1347],{},"DB構造","で3つのテーブルを確認します。",[1255,1350,1351,1361],{},[1258,1352,1353],{},[1261,1354,1355,1358],{},[1264,1356,1357],{},"テーブル",[1264,1359,1360],{},"保存内容",[1271,1362,1363,1373,1383],{},[1261,1364,1365,1370],{},[1276,1366,1367],{},[1207,1368,1369],{},"gomoku_games",[1276,1371,1372],{},"ルームコード、参加者、現在の手番、制限時間、最終結果",[1261,1374,1375,1380],{},[1276,1376,1377],{},[1207,1378,1379],{},"gomoku_moves",[1276,1381,1382],{},"何手目か、石の色、座標、ユーザー",[1261,1384,1385,1390],{},[1276,1386,1387],{},[1207,1388,1389],{},"gomoku_players",[1276,1391,1392],{},"ユーザーごとの勝ち・負け・引き分け、累積スコア、最近の対局",[1165,1394,1395],{},"対局と戦績を分けて保存しているため、画面を開き直しても、最近の記録とランキングをもう一度読み込めます。",[1182,1397,1399],{"id":1398},"_3-apiとリアルタイム機能を確認する","3. APIとリアルタイム機能を確認する",[1165,1401,1402,1403,1406],{},"上部の",[1207,1404,1405],{},"APIビルド","を開き、次の項目を確認します。",[1408,1409,1410,1417,1427,1440,1453],"ol",{},[1198,1411,1412,1413,1416],{},"データベース名が",[1207,1414,1415],{},"gomoku","であることを確認します。",[1198,1418,1419,1422,1423,1426],{},[1207,1420,1421],{},"リアルタイムソケット","が",[1207,1424,1425],{},"使用する","になっていることを確認します。",[1198,1428,1429,1422,1432,1435,1436,1439],{},[1207,1430,1431],{},"サーバー提供機能",[1207,1433,1434],{},"ターン制ボードゲーム","（",[1207,1437,1438],{},"turn-based-board","）であることを確認します。",[1198,1441,1442,1445,1446,1449,1450,1416],{},[1207,1443,1444],{},"送信","と",[1207,1447,1448],{},"受信","の権限が",[1207,1451,1452],{},"会員のみ",[1198,1454,1455],{},"3つのテーブルの登録APIと修正APIが無効になっていることを確認します。",[1165,1457,1458],{},"登録APIと修正APIをオフにするのには理由があります。参加者がREST APIで勝利回数や着手の記録を直接変更できないようにし、ゲームの状態の変更をすべてサーバーのイベントプロセッサーに通すためです。",[1182,1460,1462],{"id":1461},"_4-sqlite3でデプロイする","4. SQLite3でデプロイする",[1165,1464,1465,1466,1469],{},"初めて実行するときは、",[1207,1467,1468],{},"ストレージ","でSQLite3を選択します。別途データベースのアドレスやアカウントを用意する必要がないため、例を確認するには最も簡単です。",[1165,1471,1472,1475],{},[1207,1473,1474],{},"配布する","を押す前に、画面に表示される変更内容と権限の要約を確認します。すでに同じ名前のデータベースに記録がある場合は、サーバーの上書きポリシーに応じて、管理者またはデプロイ担当者の承認が必要になることがあります。",[1165,1477,1478],{},"デプロイが終わると、次のアドレス形式のREST APIとWebSocketが準備されます。",[1333,1480,1483],{"className":1481,"code":1482,"language":1338,"meta":1339},[1336],"GET /api/web/gomoku/gomoku_games/list\nGET /api/web/gomoku/gomoku_players/list\nWS  /api/web/gomoku/realtime-ws\n",[1207,1484,1482],{"__ignoreMap":1339},[1165,1486,1487,1488,1491],{},"本番サーバーがHTTPSの場合、ブラウザーは同じドメインの安全な",[1207,1489,1490],{},"wss://","接続を使用する必要があります。アドレスを特定の開発用ドメインとしてコードに固定せず、現在のページのホストをもとに組み立てることをおすすめします。",[1182,1493,1495],{"id":1494},"_5-五目並べの画面を開く","5. 五目並べの画面を開く",[1165,1497,1498,1499,1210,1501,1210,1503,1505],{},"スキーマファイルはゲームのデータベースとバックエンドを作成し、",[1207,1500,1209],{},[1207,1502,1213],{},[1207,1504,1216],{},"は碁盤とユーザー体験を担当します。この2つを分けておくと、対局の記録を維持したまま、画面だけを新しく作り変えることができます。",[1165,1507,1508,1509,1511,1512,1515],{},"サンプル一式をアップロードした場合は、",[1207,1510,1209],{},"を選択して",[1207,1513,1514],{},"プレビュー","を開きます。スキーマファイルだけを使用する場合は、自分で作成したHTMLから、上記のREST APIとWebSocketに接続します。",[1165,1517,1518,1519,1210,1522,1210,1525,1528],{},"クライアントは、",[1207,1520,1521],{},"board-game.create",[1207,1523,1524],{},"board-game.join",[1207,1526,1527],{},"board-game.move","のような動作をWebSocketで送信します。石とスコアは、サーバーから返ってきた確定イベントをもとに表示します。",[1182,1530,1532],{"id":1531},"_6-2人で実際に対局する","6. 2人で実際に対局する",[1408,1534,1535,1541,1548,1551,1557,1560],{},[1198,1536,1537,1538,1540],{},"異なるメンバーアカウントで、同じ",[1207,1539,1209],{},"を開きます。",[1198,1542,1543,1544,1547],{},"1つ目のアカウントで",[1207,1545,1546],{},"新しい対局を作成","を押します。",[1198,1549,1550],{},"作成されたルームコードを、2つ目のアカウントに伝えます。",[1198,1552,1553,1554,1547],{},"2つ目のアカウントでコードを入力し、",[1207,1555,1556],{},"参加",[1198,1558,1559],{},"交互に石を置き、2つの画面に同じ手が表示されることを確認します。",[1198,1561,1562],{},"石が5つ並んだ後、勝利の表示、最近の対局、ランキングが更新されることを確認します。",[1165,1564,1565],{},"通常のウィンドウとシークレットウィンドウのように、ログインセッションが分かれたブラウザーを使用すると、1台のコンピューターでもテストしやすくなります。",[1165,1567,1568],{},[1174,1569],{"alt":1570,"src":1571},"コラボレーションチャットを一緒に開いたリアルタイム五目並べの画面","/img/docs/webspace/gomoku/realtime-gomoku-collaboration.png",[1182,1573,1574],{"id":1574},"結果はサーバーが記録します",[1165,1576,1577],{},"横、縦、または斜めに石が5つ並ぶと、サーバーが対局を終了し、勝者とスコアを保存します。1手の制限時間を過ぎた場合も、サーバーの時刻を基準に時間切れ負けが決まります。",[1165,1579,1580],{},[1174,1581],{"alt":1582,"src":1583},"五目並べの勝利結果と、自動集計されたプレイヤーランキング","/img/docs/webspace/gomoku/realtime-gomoku-result.png",[1165,1585,1586,1587,1590],{},"最近の対局とランキングがすぐに変わらない場合は、ボタンを押し直すのではなく、WebSocketの終了イベントを受け取った後に一覧を照会し直す流れになっているかを確認してください。画面の",[1207,1588,1589],{},"開発情報","を展開すると、送受信したJSONとサーバーの処理時間も確認できます。",[1182,1592,1593],{"id":1593},"ここから自分のゲームを作る",[1165,1595,1596,1598],{},[1207,1597,1438],{},"は、五目並べという名前に固定されたプロセッサーではありません。スキーマファイルのプロセッサー設定で次の値を変更すれば、別のターン制ゲームの出発点として使用できます。",[1255,1600,1601,1615],{},[1258,1602,1603],{},[1261,1604,1605,1608,1612],{},[1264,1606,1607],{},"設定",[1264,1609,1611],{"align":1610},"right","現在の値",[1264,1613,1614],{},"意味",[1271,1616,1617,1630,1643,1656,1669,1682],{},[1261,1618,1619,1624,1627],{},[1276,1620,1621],{},[1207,1622,1623],{},"boardSize",[1276,1625,1626],{"align":1610},"19",[1276,1628,1629],{},"盤面の一辺のマス数",[1261,1631,1632,1637,1640],{},[1276,1633,1634],{},[1207,1635,1636],{},"winLength",[1276,1638,1639],{"align":1610},"5",[1276,1641,1642],{},"勝利に必要な連続した石の数",[1261,1644,1645,1650,1653],{},[1276,1646,1647],{},[1207,1648,1649],{},"turnTimeSeconds",[1276,1651,1652],{"align":1610},"180",[1276,1654,1655],{},"1手の制限時間",[1261,1657,1658,1663,1666],{},[1276,1659,1660],{},[1207,1661,1662],{},"winScore",[1276,1664,1665],{"align":1610},"3",[1276,1667,1668],{},"勝ちのスコア",[1261,1670,1671,1676,1679],{},[1276,1672,1673],{},[1207,1674,1675],{},"drawScore",[1276,1677,1678],{"align":1610},"1",[1276,1680,1681],{},"引き分けのスコア",[1261,1683,1684,1689,1692],{},[1276,1685,1686],{},[1207,1687,1688],{},"lossScore",[1276,1690,1691],{"align":1610},"0",[1276,1693,1694],{},"負けのスコア",[1165,1696,1697],{},"小さな盤面の短いゲームに変えたり、スコアのルールを組織のイベントに合わせて調整したりしてみてください。同じリアルタイムの基盤の上に、観戦画面、シーズンランキング、チーム対戦を追加することもできます。",[1165,1699,1700],{},"五目並べは、完成した例であると同時に、新しいゲームの出発点でもあります。石の代わりにモンスターとアイテムを表示すればターン制のバトルになり、マスの代わりに問題と選択肢を表示すればリアルタイムクイズになります。データとルールはスキーマに置き、画面には作りたいゲームの面白さを加えてみてください。",[1182,1702,1703],{"id":1703},"問題が起きたときは",[1255,1705,1706,1716],{},[1258,1707,1708],{},[1261,1709,1710,1713],{},[1264,1711,1712],{},"症状",[1264,1714,1715],{},"確認する項目",[1271,1717,1718,1729,1737,1747,1762],{},[1261,1719,1720,1723],{},[1276,1721,1722],{},"リアルタイムのイベントプロセッサーを使用できない",[1276,1724,1725,1726,1728],{},"サーバーが、現在のスキーマの",[1207,1727,1438],{},"プロセッサーに対応しているバージョンかどうかを確認",[1261,1730,1731,1734],{},[1276,1732,1733],{},"新しい対局や参加のボタンが動作しない",[1276,1735,1736],{},"DBのデプロイ状態、リアルタイム機能、ログイン、送受信の権限を確認",[1261,1738,1739,1744],{},[1276,1740,1741],{},[1207,1742,1743],{},"401 Unauthorized",[1276,1745,1746],{},"ログインセッションが有効かどうか、URLのクエリにトークンを直接入れていないかを確認",[1261,1748,1749,1752],{},[1276,1750,1751],{},"本番サーバーでWebSocketがブロックされる",[1276,1753,1754,1755,1757,1758,1761],{},"HTTPSのページが",[1207,1756,1490],{},"を使用し、CSPの",[1207,1759,1760],{},"connect-src","で許可されているかを確認",[1261,1763,1764,1767],{},[1276,1765,1766],{},"修正した画面が以前の状態で表示される",[1276,1768,1769],{},"プレビューを開き直し、静的ファイルの最新バージョンが応答されているかを確認",[1182,1771,1772],{"id":1772},"おわりに",[1165,1774,1775],{},"五目並べの例では、スキーマファイルから作成したデータベースとREST API、ログインしたメンバーだけが参加できる権限、サーバーが直接判定するリアルタイムのゲーム状態を、1つのサービスにまとめました。応用編のほかの例では、AIで作る業務システム、フォルダのファイルを使った資料掲示板、共同モンスターレイド、AI相談チャットを扱います。必要な機能に応じてこのうちのいくつかを組み合わせれば、ほとんどの社内向け・顧客向けのツールをWebSpaceだけで作ることができます。",[1182,1777,1778],{"id":1778},"次に試すこと",[1195,1780,1781,1786,1791],{},[1198,1782,1783],{},[1201,1784,796],{"href":1785},"../api-overview",[1198,1787,1788],{},[1201,1789,827],{"href":1790},"../performance",[1198,1792,1793],{},[1201,1794,857],{"href":1795},"../admin/service-capacity",{"title":1339,"searchDepth":1797,"depth":1798,"links":1799},2,3,[1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811],{"id":1184,"depth":1797,"text":1185},{"id":1250,"depth":1797,"text":1250},{"id":1327,"depth":1797,"text":1328},{"id":1398,"depth":1797,"text":1399},{"id":1461,"depth":1797,"text":1462},{"id":1494,"depth":1797,"text":1495},{"id":1531,"depth":1797,"text":1532},{"id":1574,"depth":1797,"text":1574},{"id":1593,"depth":1797,"text":1593},{"id":1703,"depth":1797,"text":1703},{"id":1772,"depth":1797,"text":1772},{"id":1778,"depth":1797,"text":1778},"五目並べのスキーマファイル（.sfn）をダウンロードし、SQLite3データベース、REST API、WebSocketのゲームバックエンドとしてデプロイします。","md",{},true,{"title":1817,"description":1818,"ogType":1819,"twitterCard":1820,"keywords":1821},"リアルタイム五目並べゲームを作る | WebSocketゲームサーバーの例","SetFN WebSpaceで五目並べのスキーマファイルをデプロイし、ルームへの参加、リアルタイムの着手、勝敗の判定、ランキングの保存までを確認します。","article","summary_large_image",[883,1822,1823,1824,1825,1826,1827],"WebSocketゲームサーバー","WebSocketの例","SQLiteゲーム","ノーコードバックエンド","スキーマファイルのダウンロード","SetFN WebSpace",[469],"8% 28%",2.1,"473ODjpuahrQSzk0oswUBHSd1I9fKGG08Yy-8XDDZjk",[1833,1834],{"title":878,"path":879,"stem":880,"slug":881,"children":-1},{"title":889,"path":890,"stem":891,"slug":892,"children":-1},{"title":883,"filename":1836,"content":1837},"realtime-gomoku","# リアルタイム五目並べゲームを作る\n\nファイルをアップロードしてスキーマをデプロイしたら、ブラウザーを2つ開いてみてください。一方で作成したルームに友人が参加し、石を置いた瞬間に、もう一方の画面にも同じ手が表示されます。勝敗とランキングは、サーバーが自動的に記録します。\n\n別途フロントエンドのビルドツールは必要ありません。完成済みのサンプルでまず1局実行してから、データ構造、リアルタイム機能、ゲームのルールを1つずつ変更してみることができます。\n\n![19×19の碁盤と、リアルタイム中継、プレイヤーランキング](/img/docs/webspace/gomoku/realtime-gomoku-board.png)\n\n---\n\n## 1. まず1局実行してみる\n\n最初は、**サンプル一式のZIP**から始めるのが最も早い方法です。スキーマと画面のファイルを同じフォルダにアップロードしてスキーマをデプロイすれば、すぐに対局を開くことができます。\n\n- [リアルタイム五目並べのサンプル一式のZIPをダウンロード](/examples/webspace/gomoku/setfn-realtime-gomoku-sample.zip)：スキーマ、`index.html`、`style.css`、`app.js`、READMEを含む\n- [五目並べのスキーマファイル（.sfn）をダウンロード](/examples/webspace/gomoku/gomoku-realtime.sfn)：バックエンドの構造だけを確認したい場合や、自分で作成した画面と接続する場合\n\nサンプルを実行すると、次の場面を実際に確認できます。\n\n- ルームコードを使った2人のユーザーの対局\n- 最後の手、自分の石、現在の手番の表示\n- 1手ごとに計り直される3分の制限時間\n- 進行状況を知らせるリアルタイムの対局中継\n- 勝ち・負けの表示と、最近の対局、プレイヤーランキングの自動更新\n\nスキーマには、19×19の盤面、石を5つ並べると勝ち、勝ち3点・引き分け1点・負け0点というルールがあらかじめ入っています。ユーザー1人につき最大3つの待機ルームを作成でき、30分間参加者がいない待機ルームは整理の対象になります。\n\n## ゲームの中で動作する機能\n\n五目並べの1局には、WebSpaceの主な機能が自然に組み込まれています。\n\n| 機能                 | 五目並べでの役割                                   |\n| -------------------- | -------------------------------------------------- |\n| スキーマファイル     | 対局、着手の記録、ユーザーの戦績の構造を定義       |\n| REST API             | 最近の対局とプレイヤーランキングを照会             |\n| WebSocket            | ルームの作成・参加と着手の結果をリアルタイムで伝達 |\n| イベントプロセッサー | 手番、座標、勝利条件、制限時間をサーバーで判定     |\n| メンバー権限         | ログインしたユーザーだけが対局に参加               |\n| コラボレーション機能 | 同じ画面で参加者と会話                             |\n\n重要なのは、ブラウザーが勝利を宣言したり、スコアを直接書き込んだりしないという点です。サーバーが現在の盤面と手番を確認し、正常な着手だけを保存してから、2人のユーザーに同じ結果を送ります。\n\n## 2. ワークスペースにアップロードする\n\nスキーマファイルだけをダウンロードした場合は、チームまたは個人のワークスペースのプロジェクトフォルダにアップロードします。サンプル一式のZIPをダウンロードした場合は、フォルダのアップロードまたは圧縮ファイルのアップロードで、5つのファイルを同じフォルダに置きます。\n\n```text\n五目並べ対局場/\n├── gomoku-realtime.sfn\n├── index.html\n├── style.css\n├── app.js\n└── README.md\n```\n\nスキーマファイルを開き、`DB構造`で3つのテーブルを確認します。\n\n| テーブル         | 保存内容                                                   |\n| ---------------- | ---------------------------------------------------------- |\n| `gomoku_games`   | ルームコード、参加者、現在の手番、制限時間、最終結果       |\n| `gomoku_moves`   | 何手目か、石の色、座標、ユーザー                           |\n| `gomoku_players` | ユーザーごとの勝ち・負け・引き分け、累積スコア、最近の対局 |\n\n対局と戦績を分けて保存しているため、画面を開き直しても、最近の記録とランキングをもう一度読み込めます。\n\n## 3. APIとリアルタイム機能を確認する\n\n上部の`APIビルド`を開き、次の項目を確認します。\n\n1. データベース名が`gomoku`であることを確認します。\n2. `リアルタイムソケット`が`使用する`になっていることを確認します。\n3. `サーバー提供機能`が`ターン制ボードゲーム`（`turn-based-board`）であることを確認します。\n4. `送信`と`受信`の権限が`会員のみ`であることを確認します。\n5. 3つのテーブルの登録APIと修正APIが無効になっていることを確認します。\n\n登録APIと修正APIをオフにするのには理由があります。参加者がREST APIで勝利回数や着手の記録を直接変更できないようにし、ゲームの状態の変更をすべてサーバーのイベントプロセッサーに通すためです。\n\n## 4. SQLite3でデプロイする\n\n初めて実行するときは、`ストレージ`でSQLite3を選択します。別途データベースのアドレスやアカウントを用意する必要がないため、例を確認するには最も簡単です。\n\n`配布する`を押す前に、画面に表示される変更内容と権限の要約を確認します。すでに同じ名前のデータベースに記録がある場合は、サーバーの上書きポリシーに応じて、管理者またはデプロイ担当者の承認が必要になることがあります。\n\nデプロイが終わると、次のアドレス形式のREST APIとWebSocketが準備されます。\n\n```text\nGET /api/web/gomoku/gomoku_games/list\nGET /api/web/gomoku/gomoku_players/list\nWS  /api/web/gomoku/realtime-ws\n```\n\n本番サーバーがHTTPSの場合、ブラウザーは同じドメインの安全な`wss://`接続を使用する必要があります。アドレスを特定の開発用ドメインとしてコードに固定せず、現在のページのホストをもとに組み立てることをおすすめします。\n\n## 5. 五目並べの画面を開く\n\nスキーマファイルはゲームのデータベースとバックエンドを作成し、`index.html`、`style.css`、`app.js`は碁盤とユーザー体験を担当します。この2つを分けておくと、対局の記録を維持したまま、画面だけを新しく作り変えることができます。\n\nサンプル一式をアップロードした場合は、`index.html`を選択して`プレビュー`を開きます。スキーマファイルだけを使用する場合は、自分で作成したHTMLから、上記のREST APIとWebSocketに接続します。\n\nクライアントは、`board-game.create`、`board-game.join`、`board-game.move`のような動作をWebSocketで送信します。石とスコアは、サーバーから返ってきた確定イベントをもとに表示します。\n\n## 6. 2人で実際に対局する\n\n1. 異なるメンバーアカウントで、同じ`index.html`を開きます。\n2. 1つ目のアカウントで`新しい対局を作成`を押します。\n3. 作成されたルームコードを、2つ目のアカウントに伝えます。\n4. 2つ目のアカウントでコードを入力し、`参加`を押します。\n5. 交互に石を置き、2つの画面に同じ手が表示されることを確認します。\n6. 石が5つ並んだ後、勝利の表示、最近の対局、ランキングが更新されることを確認します。\n\n通常のウィンドウとシークレットウィンドウのように、ログインセッションが分かれたブラウザーを使用すると、1台のコンピューターでもテストしやすくなります。\n\n![コラボレーションチャットを一緒に開いたリアルタイム五目並べの画面](/img/docs/webspace/gomoku/realtime-gomoku-collaboration.png)\n\n## 結果はサーバーが記録します\n\n横、縦、または斜めに石が5つ並ぶと、サーバーが対局を終了し、勝者とスコアを保存します。1手の制限時間を過ぎた場合も、サーバーの時刻を基準に時間切れ負けが決まります。\n\n![五目並べの勝利結果と、自動集計されたプレイヤーランキング](/img/docs/webspace/gomoku/realtime-gomoku-result.png)\n\n最近の対局とランキングがすぐに変わらない場合は、ボタンを押し直すのではなく、WebSocketの終了イベントを受け取った後に一覧を照会し直す流れになっているかを確認してください。画面の`開発情報`を展開すると、送受信したJSONとサーバーの処理時間も確認できます。\n\n## ここから自分のゲームを作る\n\n`turn-based-board`は、五目並べという名前に固定されたプロセッサーではありません。スキーマファイルのプロセッサー設定で次の値を変更すれば、別のターン制ゲームの出発点として使用できます。\n\n| 設定              | 現在の値 | 意味                       |\n| ----------------- | -------: | -------------------------- |\n| `boardSize`       |       19 | 盤面の一辺のマス数         |\n| `winLength`       |        5 | 勝利に必要な連続した石の数 |\n| `turnTimeSeconds` |      180 | 1手の制限時間              |\n| `winScore`        |        3 | 勝ちのスコア               |\n| `drawScore`       |        1 | 引き分けのスコア           |\n| `lossScore`       |        0 | 負けのスコア               |\n\n小さな盤面の短いゲームに変えたり、スコアのルールを組織のイベントに合わせて調整したりしてみてください。同じリアルタイムの基盤の上に、観戦画面、シーズンランキング、チーム対戦を追加することもできます。\n\n五目並べは、完成した例であると同時に、新しいゲームの出発点でもあります。石の代わりにモンスターとアイテムを表示すればターン制のバトルになり、マスの代わりに問題と選択肢を表示すればリアルタイムクイズになります。データとルールはスキーマに置き、画面には作りたいゲームの面白さを加えてみてください。\n\n## 問題が起きたときは\n\n| 症状                                             | 確認する項目                                                                                     |\n| ------------------------------------------------ | ------------------------------------------------------------------------------------------------ |\n| リアルタイムのイベントプロセッサーを使用できない | サーバーが、現在のスキーマの`turn-based-board`プロセッサーに対応しているバージョンかどうかを確認 |\n| 新しい対局や参加のボタンが動作しない             | DBのデプロイ状態、リアルタイム機能、ログイン、送受信の権限を確認                                 |\n| `401 Unauthorized`                               | ログインセッションが有効かどうか、URLのクエリにトークンを直接入れていないかを確認                |\n| 本番サーバーでWebSocketがブロックされる          | HTTPSのページが`wss://`を使用し、CSPの`connect-src`で許可されているかを確認                      |\n| 修正した画面が以前の状態で表示される             | プレビューを開き直し、静的ファイルの最新バージョンが応答されているかを確認                       |\n\n## おわりに\n\n五目並べの例では、スキーマファイルから作成したデータベースとREST API、ログインしたメンバーだけが参加できる権限、サーバーが直接判定するリアルタイムのゲーム状態を、1つのサービスにまとめました。応用編のほかの例では、AIで作る業務システム、フォルダのファイルを使った資料掲示板、共同モンスターレイド、AI相談チャットを扱います。必要な機能に応じてこのうちのいくつかを組み合わせれば、ほとんどの社内向け・顧客向けのツールをWebSpaceだけで作ることができます。\n\n## 次に試すこと\n\n- [APIをビルドしてデータベースをデプロイする](../24.api-overview.md)\n- [パフォーマンスとスケーリング](../48.performance.md)\n- [サービスと容量](../50.admin/40.service-capacity.md)\n",1793056612369]