coderdojo-japan / coderdojo.jp

☯️ CoderDojo Japan (@coderdojo-japan) official website developed by Ruby on Rails with @YassLab team. 💎
https://coderdojo.jp
Other
62 stars 101 forks source link
coderdojo markdown non-profit podcast rails ruby stats

カバー画像

:yin_yang:️ CoderDojo Japan 公式Webサイトへようこそ!

Build Status

一般社団法人 CoderDojo Japan の公式サイトです。プログラミング言語『Ruby』と、Rubyを活用したフレームワーク『Ruby on Rails』で開発されています。本ページでは、トップページに掲載されている Dojo 情報を更新する方法や、開発環境のセットアップ方法などをまとめています。


## :beginner: Dojo を掲載するには? CoderDojo を立ち上げ、承認されたら、[CoderDojo Kata にある支援プログラム](https://coderdojo.jp/kata#support)をご利用することができます。[coderdojo.jp](https://coderdojo.jp) への掲載方法も載っていますので、詳細は [CoderDojo Kata](https://coderdojo.jp/kata#support) をご確認ください。 [![CoderDojo Kata - 支援](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/public/img/kata_support_ss.png?raw=true)](https://coderdojo.jp/kata#support)

## :wrench: 開発に参加するには? coderdojo.jp の開発には以下のいずれかの方法で参加できます。Dojo 情報の修正やドキュメントの追加・執筆であれば、ブラウザだけで参加できます。 1. Dojo 情報を更新する場合 ([» 詳細を見る](#howto-update-dojo)) - 必要なもの: ブラウザ + GitHub アカウント 2. [CoderDojo Kata](https://coderdojo.jp/kata) を更新する場合 ([» 詳細を見る](#howto-update-kata)) - 必要なもの: ブラウザ + GitHub アカウント 3. 新機能の開発やデザインを改善する場合 ([» 詳細を見る](#howto-develop)) - 必要なもの: Ruby on Rails + PostgreSQL などの各種開発環境 **ちょっとした情報更新や文言修正であればブラウザだけで参加できる**のが特徴で、それぞれの手順は以下の通りです ✨📝💨

## 1. Dojo 情報を更新する Dojo 情報は次の手順で簡単に更新できます。 1. [db/dojos.yaml](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/db/dojos.yaml) を開く 2. 画面右にある ✎ アイコン (Fork this project and edit this file) をクリックする 3. 気になる箇所を修正し、修正内容にタイトルと説明文を付け、Propose file change をクリックする 4. 修正内容を確認し、問題なければ Create pull request をクリックする - :yin_yang: Dojo のロゴ画像を追加/変更したい場合は Pull Request のコメント欄に画像を添付して頂けると助かります :relieved: ([対応例1](https://github.com/coderdojo-japan/coderdojo.jp/pull/1537) / [対応例2](https://github.com/coderdojo-japan/coderdojo.jp/pull/1418) / [対応例3](https://github.com/coderdojo-japan/coderdojo.jp/pull/1417)) 以上で完了です。提案された修正はメンテナーによってチェックされ、問題なければ提案された内容が反映されます。もし問題があってもメンテナー側で気付いて修正できるので、まずはお気軽に提案してみてください :wink: > [!NOTE] > https://coderdojo.jp/docs にあるドキュメントの編集方法も同様です。[db/docs](https://github.com/coderdojo-japan/coderdojo.jp/tree/main/db/docs)ディレクトリをブラウザで開き、修正したいファイルをクリックして、修正内容を提案してください。同ディレクトページの右上にある `Create new file` ボタンをクリックすると、新しいドキュメントの追記を提案することもできます。

## 2. Kata 情報を更新する Kata 情報も、Dojo 情報と同様の方法で更新できます。 1. [kata.html.erb](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/app/views/docs/kata.html.erb) を開く 2. 画面右にある ✎ アイコン (Fork this project and edit this file) をクリックする 3. 気になる箇所を修正し、修正内容にタイトルと説明文を付け、Propose file change をクリックする 4. 修正内容を確認し、問題なければ Create pull request をクリックする ([対応例](https://github.com/coderdojo-japan/coderdojo.jp/pull/1384)) 以上で完了です。提案された修正はメンテナーによってチェックされ、問題なければ提案された内容が反映されます。もし問題があってもメンテナー側で気付いて修正できるので、まずはお気軽に提案してみてください :wink:

## 3. 新機能の開発やデザインを改善する 本サイトでは以下の技術が使われているので、それぞれのツールをセットアップします。 - [Ruby](https://www.ruby-lang.org/ja/) - [Ruby on Rails](http://rubyonrails.org/) - [PostgreSQL](https://www.postgresql.jp/) セットアップ方法の方法は次の通りです。 1. 本リポジトリを fork 後、clone します 1. ターミナルから `$ bin/setup` を実行します 1. `$ rails server` でローカルサーバーを立ち上げます 1. ブラウザから [localhost:3000](http://localhost:3000) にアクセスします 1. [coderdojo.jp](https://coderdojo.jp/) と同様のサイトが表示できれば完了です

### :rocket: CI/Deploy 構成 [coderdojo.jp](https://coderdojo.jp/) は現在、次の構成でテスト・デプロイされています。 - CI: [GitHub Actions](https://github.com/coderdojo-japan/coderdojo.jp/actions) - Deploy: Heroku + [Release Phase](https://devcenter.heroku.com/ja/articles/release-phase) - 関連PR: [:octocat: replace travis with github actions and heroku integration](https://github.com/coderdojo-japan/coderdojo.jp/pull/1315) 各コミットが push される度に CI が動きます。`main` ブランチに新しいコミットが追加され、CI が pass すると、Heroku 側でデプロイ前/デプロイ後の各種スクリプトが実行されます。 - テスト(CI): [.github/workflows/test.yml](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/.github/workflows/test.yml) - デプロイ前: Bundle, Asset Precomiple, Heroku Buildpack など - デプロイ後: [scripts/release.sh](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/scripts/release.sh), [Procfile](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/Procfile) GitHub Actions に `deploy` workflow を入れることもできましたが、次の2つの目的から現在は分離しています。 1. CI フローと Deploy フローの責務を分離し、本番環境のログの機密性を高める - 例: デプロイ関連のログは [Heroku Activity Logs](https://dashboard.heroku.com/apps/coderdojo-japan/activity) に集約させ、誰でもアクセスできる状態にしない 2. [Heroku Release Phase](https://devcenter.heroku.com/ja/articles/release-phase) を使い、本番環境の安定性を高める - 例: Heroku デプロイ後に実行するスクリプトが失敗したとき、デプロイ自体がロールバックするようにし、本番環境が落ちる可能性を小さくする

### :gem: CI で実行される各種 Ruby スクリプト (Rake タスク) 最新版は [scripts/release.sh](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/scripts/release.sh) からご確認いただけます。 ``` # データベースのマイグレーション bundle exec rails db:migrate # 開発用データの流し込み(seeding) bundle exec rails db:seed # db/dojos.yaml の内容をDBに反映するタスク bundle exec rails dojos:update_db_by_yaml # DBの内容を db/dojos.yaml に反映するタスク bundle exec rails dojos:migrate_adding_id_to_yaml # 近日開催の道場を更新するタスク bundle exec rails dojo_event_services:upsert # ポッドキャスト「DojoCast」のデータを反映するタスク bundle exec rails podcasts:upsert ```

## 4. 他、開発に関する資料 開発に関する資料は [/docs](https://github.com/coderdojo-japan/coderdojo.jp/tree/main/docs) や下記サイトにまとめてあります (最新順)。必要に応じて適宜ご参照ください。 - [DojoCast を Jekyll から Rails に移行しました](https://yasslab.jp/ja/posts/migrate-dojocast-from-jekyll-to-rails) - [新規 Dojo の追加方法 - GitHub](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/docs/how_to_add_dojo.md) - [子どものためのプログラミング道場『CoderDojo』の Ruby/Rails 活用事例](https://speakerdeck.com/yasulab/case-study-of-how-coderdojo-japan-uses-ruby) - [CoderDojo を支える Rails CMS の活用事例 - Speaker Deck](https://speakerdeck.com/yasulab/case-study-rails-cms-for-coderdojo) - [2020年 coderdojo.jp 開発ふりかえり](https://note.com/yasslab/n/nb42fb058d4a0?magazine_key=m7ed183f728c3) - [2019年 coderdojo.jp 開発ハイライト](https://note.com/yasslab/n/n572a17f68842?magazine_key=m7ed183f728c3) - [2018年 運用目線で見る coderdojo.jp 開発](https://yasslab.jp/ja/news/coderdojo-japan-2018) - [CoderDojo Japan の各種機能と実装について【2017年版】 - Qiita](https://qiita.com/yasulab/items/1d12e6b295c0a9e577f1) - [CoderDojo Japan のバックエンドを刷新しました【2016年】](https://coderdojo.jp/docs/post-backend-update-history)

### 🤝 API 現在提供中の API 一覧です。利用例のある API は互換性を意識して開発されるため、比較的使いやすいです。ただし予告なく破壊的な変更が行われる可能性もあるため、あらかじめご了承いただけると幸いです 🚧 - **Podcasts API: https://coderdojo.jp/podcasts.rss** - 利用例: [📻 Apple Podcasts - DojoCast](https://podcasts.apple.com/us/podcast/dojocast/id1458122473) (関連PR: [coderdojo.jp#387](https://github.com/coderdojo-japan/coderdojo.jp/pull/387)) - **Dojos API: https://coderdojo.jp/dojos.json** - 利用例: [📰 DojoNews](https://news.coderdojo.jp/category/news/) (関連PR: [coderdojo.jp#1433](https://github.com/coderdojo-japan/coderdojo.jp/pull/1433)) - **Events API: https://coderdojo.jp/events.json** - 利用例: [🗾 DojoMap](https://map.coderdojo.jp/) (関連PR: [map.coderdojo.jp#10](https://github.com/coderdojo-japan/map.coderdojo.jp/pull/10)) - 利用例: [📅 CoderDojo カレンダーを作ってみた](https://qiita.com/takatama/items/60276143e441c1c4f078) (関連PR: [coderdojo.jp#1547](https://github.com/coderdojo-japan/coderdojo.jp/pull/1547)) - **Stats API: https://coderdojo.jp/stats.json** - 利用例: [☯️ DojoCon Japan](https://dojocon.coderdojo.jp/) (関連PR: [dojocon.coderdojo.jp#1](https://github.com/coderdojo-japan/dojocon.coderdojo.jp/pull/1)) - 利用例: [☯️ DecaDojo](https://decadojo.coderdojo.jp/) (関連PR: [dojocon.coderdojo.jp#18](https://github.com/coderdojo-japan/decadojo.coderdojo.jp/pull/19)) - 利用例: [:octocat: CoderDojo Japan](https://github.com/coderdojo-japan) ([関連コミット](https://github.com/coderdojo-japan/.github/compare/f2ef92..231027)) なお本サイト内 DB の各テーブルおよびそのデータ(一般公開部分のみ)は、以下のファイルからご確認いただけます。 - DB テーブル: [`db/schema.rb`](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/db/schema.rb) - Dojo データ: [`db/dojos.yaml`](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/db/dojo_event_services.yaml) - Event データ (の情報取得元): [`db/dojo_event_services.yaml`](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/db/dojo_event_services.yaml) - :memo: 1つの Dojo が複数のイベント管理サービスを使う事例もあるため [`Dojo has_many DojoEventServices`](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/app/models/dojo.rb) となっています。

### :scroll: Development History & Contributors - **2012:** CoderDojo Japan started in [Facebook Group](https://www.facebook.com/groups/coderdojo.jp/about/) - **2014:** coderdojo.jp was launched as ['coderdojo-japan.github.io'](https://github.com/coderdojo-japan/coderdojo-japan.github.io/graphs/contributors) - **2015:** coderdojo.jp was migrated to Parse as ['web'](https://github.com/coderdojo-japan/web/graphs/contributors) - **2016:** [Parse shutdown](https://speakerdeck.com/yasulab/case-study-rails-cms-for-coderdojo?slide=26). [@yasulab](https://github.com/yasulab) migrated ['coderdojo.jp'](https://github.com/coderdojo-japan/coderdojo.jp/graphs/contributors) from Parse to Ruby on Rails - Thanks [@cognitom](https://github.com/cognitom) for helps in design. - Thanks [@YassLab](https://github.com/YassLab) team for helps in development. - cf. [Contributors - coderdojo-japan/coderdojo.jp - GitHub](https://github.com/coderdojo-japan/coderdojo.jp/graphs/contributors) - **2016-now:** [coderdojo.jp](https://coderdojo.jp/) is sustainably maintained and developed by [YassLab Inc.](https://yasslab.jp/) - CoderDojo Japan has been incorporated and approved [@YassLab](https://github.com/YassLab) team as one of official partners for [tons of works](https://github.com/coderdojo-japan/coderdojo.jp/graphs/contributors). - From then on, [YassLab Inc.](https://yasslab.jp/) maintains and develops [coderdojo.jp](https://coderdojo.jp/) with official approval from CDJ board members. See [#References](#他開発に関する資料) and contributions (['coderdojo-japan.github.io'](https://github.com/coderdojo-japan/coderdojo-japan.github.io/graphs/contributors), ['web'](https://github.com/coderdojo-japan/web/graphs/contributors), and ['coderdojo.jp'](https://github.com/coderdojo-japan/coderdojo.jp/graphs/contributors)) for their continuous efforts on development.

[![YassLab Logo](https://yasslab.jp/img/logos/800x200.png)](https://yasslab.jp/)

## 5. License This web application is developed with many other brilliant works! :sparkling_heart: You can check out them and our works with associated licenses from [LICENSE.md](https://github.com/coderdojo-japan/coderdojo.jp/blob/main/LICENSE.md). :wink: Copyright © [一般社団法人 CoderDojo Japan](https://coderdojo.jp/about-coderdojo-japan) ([@coderdojo-japan](https://github.com/coderdojo-japan)).
[![カバー画像](https://raw.githubusercontent.com/coderdojo-japan/coderdojo.jp/main/public/coderdojo-japan_mix-cover.webp)](https://coderdojo.jp/)