{"id":25440817,"url":"https://github.com/akira-saneyoshi/grpc-tabecolla","last_synced_at":"2026-05-04T00:32:57.647Z","repository":{"id":242716813,"uuid":"810361581","full_name":"akira-saneyoshi/grpc-tabecolla","owner":"akira-saneyoshi","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-07T13:59:23.000Z","size":177,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-10-27T02:40:30.167Z","etag":null,"topics":["app-router","docker","golang","grpc","nextjs"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akira-saneyoshi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-04T14:44:04.000Z","updated_at":"2024-06-23T15:12:22.000Z","dependencies_parsed_at":"2024-06-23T16:30:54.476Z","dependency_job_id":"272fd864-7467-46ad-a10a-e529cc7d798d","html_url":"https://github.com/akira-saneyoshi/grpc-tabecolla","commit_stats":null,"previous_names":["akira-saneyoshi/grpc-tabecolla"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akira-saneyoshi/grpc-tabecolla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akira-saneyoshi%2Fgrpc-tabecolla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akira-saneyoshi%2Fgrpc-tabecolla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akira-saneyoshi%2Fgrpc-tabecolla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akira-saneyoshi%2Fgrpc-tabecolla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akira-saneyoshi","download_url":"https://codeload.github.com/akira-saneyoshi/grpc-tabecolla/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akira-saneyoshi%2Fgrpc-tabecolla/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32590274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-router","docker","golang","grpc","nextjs"],"created_at":"2025-02-17T12:18:24.277Z","updated_at":"2026-05-04T00:32:57.615Z","avatar_url":"https://github.com/akira-saneyoshi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grpc-tabecolla\n\n## 使用技術\n\n- フロントエンド構成\n\n| 種別 | 技術 | バージョン |\n| --- | --- | --- |\n| 言語 | TypeScript | - |\n| ランタイム | Node.js | - |\n| フレームワーク | Next.js | - |\n| ライブラリ | React | - |\n\n- バックエンド構成(gRPC API)\n\n| 種別 | 技術 | バージョン |\n| --- | --- | --- |\n| 言語 | Golang | 1.22.3 |\n| 言語 | Protobuf | 5.27.0 |\n| ライブラリ/パッケージ | go.mod参照 | - |\n\n- infra構成\n\n| 種別 | 技術 | バージョン |\n| --- | --- | --- |\n| 基盤 | Docker | - |\n| 基盤 | Docker for Desktop | 4.30.0 |\n| データベース | MySQL | 8.0.32 |\n\n\n## フロントエンド コーディング規約\n- https://kinsta.com/jp/blog/react-best-practices/\n- https://typescript-jp.gitbook.io/deep-dive/styleguide\n\n## ローカル環境構築　Docker環境を利用する場合\n\n1. まずは docker が必要です。以下よりダウンロードしてDocker for Desktopのセットアップを完了させてください。もし、 Ubuntu のインストールが要求された場合はあわせて Microsoft Storeより インストールします。\n\n[Docker for Desktop](https://www.docker.com/)　インストーラ\n\n2. Docker Containerを起動する。プロジェクトのルートディレクトリにて実行してください。\n```bash\nsaneyoshi@LAPTOP-IOE8NK0E MINGW64 ~/workspace/lab-coding/grpc-tabecolla (develop)\n$ make up\n```\n\n### 環境構築時に使用したコマンド集\n1. protocセットアップ時\n\n```\ngo get -u google.golang.org/grpc\ngo install google.golang.org/protobuf/cmd/protoc-gen-go@latest\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\n```\n\n2. protocを利用したGoコードの生成(protoコンテナで実行)\n\n```\nprotoc --go_out=./ --go-grpc_out=./ go_proto/*.proto\n```\n\n3. Model層におけるGoコードの生成(commandコンテナで実行)\n\n```\nsqlboiler mysql -c config/database.toml -o models -p models --no-tests --wipe\n```\n\n### protocの共通項目の定義\n\n```\nsyntax = \"proto3\"; // ライセンスヘッダ\noption go_package = \"/api/v1/go_pb\"; // 生成コードの格納先パッケージを指定\npackage go_protoc; // パッケージの宣言\n```\n\n### Ginkgo V2を使用したビヘイビア駆動開発用テストフレームワークの実行手順\n\n1. テストコードの実行コマンド\n\n下記は、飲食店モデル\n\n```\n/opt/command_service/domain/models/stores/tests # ginkgo -v\n```\n\n\u003cdetails\u003e\u003csummary\u003eコンソールの実行ログ例\u003c/summary\u003e\n\n```\n/opt/command_service/domain/models/stores/tests # ginkgo -v\nRunning Suite: domain/models/storesパッケージのテスト - /opt/command_service/domain/models/stores/tests\n================================================================================================================\nRandom Seed: 1717514749\n\nWill run 4 of 4 specs\n------------------------------\nStoreエンティティを構成する値オブジェクト 文字数の検証 空文字列の場合、errs.DomainErrorが返る [StoreId構造体の生成, 文字数]\n/opt/command_service/domain/models/stores/tests/value_test.go:29\n• [0.000 seconds]\n------------------------------\nStoreエンティティを構成する値オブジェクト 文字数の検証 36文字より大きい文字列の場合、errs.DomainErrorが返る [StoreId構造体の生成, 文字数]\n/opt/command_service/domain/models/stores/tests/value_test.go:32\n• [0.000 seconds]\n------------------------------\nStoreエンティティを構成する値オブジェクト UUID形式の検証 uuid以外の文字列の場合、errs.DomainErrorが返る [StoreId構造体の生成, UUID形式]\n/opt/command_service/domain/models/stores/tests/value_test.go:38\n• [0.000 seconds]\n------------------------------\nStoreエンティティを構成する値オブジェクト UUID形式の検証 36文字のuuid文字列の場合、StoreIdが返る [StoreId構造体の生成, UUID形式]\n/opt/command_service/domain/models/stores/tests/value_test.go:41\n• [0.000 seconds]\n------------------------------\n\nRan 4 of 4 Specs in 0.002 seconds\nSUCCESS! -- 4 Passed | 0 Failed | 0 Pending | 0 Skipped\nPASS\n\nGinkgo ran 1 suite in 936.73792ms\nTest Suite Passed\n```\n\n\u003c/details\u003e\n\n### MySQLコンテナのmy.cnfをマウントするときの備忘録\n\n- 概要\n\nコンテナログにて下記のWarningが出ているとき、my.cnfが反映されない問題が起きる。\n\n```\n[Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.\n```\n\n- 解決策\n\nwindowsで環境構築している場合、/etc/mysql/conf.d/my.cnfにマウントしたファイルは読み取り専用にしとかなければならない\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakira-saneyoshi%2Fgrpc-tabecolla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakira-saneyoshi%2Fgrpc-tabecolla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakira-saneyoshi%2Fgrpc-tabecolla/lists"}