# Tech.SummerCamp 2024 by ECC このドキュメントは、Tech.SummerCamp 2024の参加者全員が遵守すべき注意事項とガイドラインをまとめたものです。プロジェクトの成功と個人の成長のため、これらの指針に従ってください。 ## 全体ガイドライン ### 1. コミュニケーションと情報共有 1.1 日報の提出 - 全メンバーは学習期間中、毎日の活動を日報として提出すること - 日報には、学んだこと、疑問点、次のアクションを含めること - 日報はSlackの専用チャンネルに投稿すること 1.2 チーム内コミュニケーション - Slackを主要なコミュニケーションツールとして活用すること - チーム内での進捗を常に共有し、互いの状況を把握すること - 疑問点や障害が発生した場合は、すぐにSlackで共有すること 1.3 ミーティング参加 - 全メンバーが定期ミーティングに必ず参加し、適切に準備をすること - Codaを使用して、重要な決定事項や行動項目を記録すること ### 2. プロジェクト管理 2.1 タスク管理 - Linearを使用してタスクを管理し、進捗状況を常に更新すること - 各タスクに担当者と期限を設定し、Linearに反映させること - 定期的に進捗を確認し、必要に応じてタスクの再割り当てや優先順位の調整を行うこと 2.2 時間管理 - ミーティングや作業セッションは、定められた時間内で終了するよう心がけること - タイムボックス技法を活用し、効率的に作業を進めること 2.3 問題解決 - 困難に直面した場合は早めにチーム内で共有すること - 必要に応じて外部サポートを求めること - 問題解決のプロセスと結果をドキュメント化し、チームで共有すること ### 3. 役割と責任 3.1 役割の柔軟性 - ハッカソンの性質上、メンバーは必要に応じて複数の役割を担当する可能性があることを理解すること - プロジェクトの進行に応じて、役割や責任が変化する可能性があることを認識しておくこと 3.2 スキルの相互補完 - チームメンバー間でスキルを共有し、互いにサポートすること - 自身の専門外の領域でも積極的に学び、貢献する姿勢を持つこと 3.3 責任の遂行 - 割り当てられた役割と責任を確実に遂行すること - 自身の作業が遅延する可能性がある場合は、早めにチームに報告すること ### 4. ツールの活用 4.1 プロジェクト管理ツール - Linear:タスク管理と進捗tracking - Slack:日常的なコミュニケーションと情報共有 - GitHub:ソースコード管理 - Figma:デザイン作業 4.2 ドキュメント管理 - Coda:プロジェクトのナレッジベース - Eraser:図表やフローチャートの作成 - Google Drive:共有ドキュメントの管理 4.3 ツールの連携 - 可能な限りツール間の連携を活用し、作業の効率化を図ること - 各ツールの通知設定を適切に行い、情報過多を防ぐこと ### 5. セキュリティとコンプライアンス 5.1 情報セキュリティ - 機密情報の取り扱いに注意し、不用意な外部共有を避けること - 強力なパスワードを使用し、二要素認証を有効にすること 5.2 コードの品質 - コーディング規約を遵守し、可読性の高いコードを書くこと - 定期的にコードレビューを実施し、品質を維持すること 5.3 知的財産権 - オープンソースライセンスの遵守を徹底すること - 第三者の著作物を使用する場合は、適切な許諾を得ること ### 6. 健康管理とワークライフバランス 6.1 休憩と睡眠 - 適切な休憩を取り、十分な睡眠時間を確保すること - 長時間の連続作業を避け、定期的に体を動かすこと 6.2 ストレス管理 - 過度のストレスを感じた場合は、チームメンバーや運営に相談すること - チーム内でのサポートを大切にし、互いの健康状態に気を配ること ### 7. 継続的改善 7.1 振り返りの実施 - 定期的にチーム内で振り返りセッションを行い、改善点を特定すること - 個人の成長と学びを記録し、次のプロジェクトに活かすこと 7.2 フィードバックの活用 - 建設的なフィードバックを積極的に行い、受け入れること - フィードバックを基に具体的な改善アクションを設定し、実行すること ## 事前学習期間ガイドライン ### 概要 事前学習期間は、Tech.SummerCamp 2024の本番に向けて必要なスキルと知識を習得し、チームとしての基盤を構築する重要な時間です。 ### スケジュール 毎週火曜日と木曜日に学習セッションを実施 #### 第1週 - 火曜日:チームとしての振る舞い、アイデア・企画の決め方 - 木曜日:GitとGithubの使い方、コーディングについて #### 第2週 - 火曜日:プロトタイプの重要性について - 木曜日:エンジニアの勉強方法について(インプット・アウトプット) ### 各セッションの詳細 #### 1. チームとしての振る舞い、アイデア・企画の決め方(9/3 火曜日) - 時間:18:00 - 20:00 (120分) - 内容: 1. オープニング (10分) - 本日の目標と流れの説明 2. チームビルディング演習 (30分) - アイスブレイク活動 - チーム内での自己紹介 3. 効果的なチームワークについてのミニレクチャー (20分) - 良いチームの特徴 - コミュニケーションの重要性 4. アイデア発想法ワークショップ (40分) - ブレインストーミング技法の紹介 - グループでのアイデア出し演習 5. 企画立案フレームワーク紹介 (15分) - リーンキャンバスの概要説明 6. Q&Aセッション (10分) 7. クロージング (5分) - 次回の予告と事前準備の案内 - 資料:[チームとしての振る舞い、アイデア・企画の決め方について](https://pitch.com/) - [ ] 全員:日報提出 #### 2. GitとGithubの使い方、コーディングについて(9/5 木曜日) - 時間:18:00 - 20:00 (120分) - 内容: 1. オープニング (5分) - 本日の目標と流れの説明 2. Git基礎講座 (30分) - Gitの概念と基本コマンド - ブランチの概念と使い方 3. Github使用法 (25分) - リポジトリの作成とクローン - プルリクエストの作成方法 4. ハンズオンセッション (40分) - サンプルプロジェクトを使用したGit/Github演習 5. コーディング規約とベストプラクティス (15分) - 一般的なコーディング規約の紹介 - チームでのコード管理のコツ 6. Q&Aセッション (10分) 7. クロージング (5分) - 次回の予告と事前準備の案内 - 資料:[GitとGithubの使い方、コーディングについて](https://pitch.com/) - [ ] 全員:日報提出 #### 3. プロトタイプの重要性について(9/10 火曜日) - 時間:18:00 - 20:00 (120分) - 内容: 1. オープニング (5分) - 本日の目標と流れの説明 2. プロトタイピングの意義と種類 (20分) - ローファイ vs ハイファイプロトタイプ - プロトタイピングの利点 3. UI/UXプロトタイピングツール紹介 (25分) - Figmaのデモンストレーション 4. バックエンドモックアップ手法 (20分) - API設計とモックサーバーの作成方法 5. プロトタイプ作成ワークショップ (40分) - グループでの簡易プロトタイプ作成演習 6. フィードバック収集と改善プロセス (15分) - ユーザーテストの方法 - フィードバックの分析と反映方法 7. Q&Aセッション (10分) 8. クロージング (5分) - 次回の予告と事前準備の案内 - 資料:[プロトタイプの重要性について](https://pitch.com/) - [ ] 全員:日報提出 #### 4. エンジニアの勉強方法について(9/12 木曜日) - 時間:18:00 - 20:00 (120分) - 内容: 1. オープニング (5分) - 本日の目標と流れの説明 2. 効果的な学習方法論 (25分) - インプットとアウトプットのバランス - 学習サイクルの作り方 3. テクニカルスキル向上のためのリソース紹介 (20分) - オンライン学習プラットフォーム - 技術書や技術ブログの活用法 4. アウトプットの重要性と方法 (25分) - 技術ブログ執筆のコツ - 勉強会での登壇準備 5. 個人学習計画作成ワークショップ (30分) - 短期・中期・長期の学習目標設定 - 具体的な学習スケジュール立案 6. チーム内での知識共有方法 (10分) - 定期的な技術共有会の運営方法 - ペアプログラミングの活用 7. Q&Aセッション (10分) 8. クロージング (5分) - 次回の予告と事前準備の案内 - 資料:[エンジニアの勉強方法について](https://pitch.com/) - [ ] 全員:日報提出 #### 5. キックオフミーティング(9/12 木曜日) - 時間:21:00 - 23:00 (120分) - 内容: 1. オープニング (5分) - 本日の目標と流れの説明 2. キックオフ (100分) - チーム編成の最終確認 - プロジェクトアイデアの共有と議論 - 役割分担の決定 - メンバーA:フロントエンドエンジニア & UI/UXデザイナー 主な責任: - ユーザーインターフェースの設計と実装 - ユーザー体験の最適化 - フロントエンド技術の選定と実装 - メンバーB:バックエンドエンジニア & セキュリティエンジニア 主な責任: - サーバーサイドロジックの設計と実装 - データベース連携 - APIの設計と実装 - セキュリティ設計と実装 - 認証・認可システムの設計 - セキュアなコーディング実践の推進 - 脆弱性評価と対策の実施 - セキュリティベストプラクティスの適用 - メンバーC:データベースエンジニア & インフラエンジニア 主な責任: - データベース設計と最適化 - インフラストラクチャのセットアップと管理 - パフォーマンスチューニング - メンバーD:QAエンジニア & プロジェクトマネージャー 主な責任: - テスト計画の立案と実行 - 品質保証プロセスの管理 - プロジェクト全体の進行管理とコミュニケーション調整 - 事前準備タスクの割り当て: - プロジェクト計画書の作成 担当:全員(リードはメンバーD) - [ ] プロジェクトの目標と範囲の定義 - [ ] 主要なマイルストーンの設定 - [ ] リスク分析と対策の検討 - [ ] 役割と責任の明確化 - 開発環境のセットアップ手順書作成 担当:全員(リードはメンバーB & C) - [ ] 必要なソフトウェアとツールのリスト作成 - [ ] インストールと設定手順の文書化 - [ ] 環境変数やAPIキーの管理方法の決定 - [ ] ローカル開発環境とステージング環境のセットアップ手順の作成 - [ ] 事前に必要なアカウント([GitHub](https://github.com/)、[AWS](https://aws.com/)など)の作成 - 詳細タスクリストの作成 担当:全員(リードはメンバーD) - [ ] プロジェクトをサブタスクに分解 - [ ] 各タスクの見積もり時間の設定 - [ ] タスクの優先順位付け - [ ] 依存関係の特定 - [Linear](https://linear.com/)(進捗管理ツール)のセットアップ 担当:メンバーD - [ ] プロジェクトの作成 - [ ] チームメンバーの招待 - [ ] 基本的なワークフロー(To Do, In Progress, Review, Done)の設定 - [ ] タスクのインポートまたは手動入力 - [ ] ラベルやマイルストーンの設定 - [ ] 初期スプリントの作成 - その他のツールのセットアップと統合 担当:全員(各ツールに詳しいメンバーがリード) - [ ] [Slack](https://slack.com/)ワークスペースの作成とチャンネル設定 - [ ] [GitHub](https://github.com/)リポジトリの作成と基本設定 - [ ] [Figma](https://figma.com/)プロジェクトの作成とチーム招待 - [ ] [Eraser](https://eraser.io/)図表やフローチャートの作成とチーム招待 - [ ] [Coda](https://coda.com/)ドキュメントの作成と共有設定 - [ ] Google Calendarの共有カレンダー作成 - [ ] 各ツール間の必要な連携設定(例:Slack-GitHub連携) - 初期設計ドキュメントの作成 担当:各担当領域のメンバー - [ ] UI/UXの基本デザインコンセプト(メンバーA) - [ ] システムアーキテクチャの概要図(メンバーB) - [ ] セキュリティ設計の基本方針(メンバーB) - [ ] データベーススキーマの初期設計(メンバーC) - 技術スタックの最終決定 - 開発方針の確認(アジャイル/スクラム等) 3. Q&Aセッション (10分) 4. クロージング (5分) - Tech.SummerCamp本番に向けての最終アドバイス - 次回の予告と事前準備の案内 - 資料: - [キックオフミーティング](https://coda.com/) - [UI/UXの基本デザインコンセプトについて](https://coda.com/) - [システムアーキテクチャの概要図について](https://coda.com/) - [セキュリティ設計の基本方針について](https://coda.com/) - [データベーススキーマの初期設計について](https://coda.com/) - [ ] 全員:日報提出 ### 参加者の準備事項 1. 各セッションの前に、関連する基本的な知識を予習しておくこと 2. 必要なソフトウェア(Git, 開発環境など)を事前にインストールしておくこと 3. 質問や疑問点をメモしておき、セッション中のQ&Aで積極的に質問すること ### 期待される成果 1. チームとしての連携力の向上 2. 基本的な開発ツールと手法の習得 3. プロジェクトのアイデアと方向性の決定 4. 個人の学習計画の策定 5. ハッカソン本番に向けての準備完了 ### 注意事項 - 全セッションに参加すること。欠席する場合は事前に連絡し、内容をキャッチアップすること - 各セッション後は学んだ内容を復習し、実践してみること - 日報を通じて学びや疑問点を共有し、チーム全体でのスキルアップを図ること - 技術的な問題や疑問点は、Slackで共有し互いにサポートし合うこと ## Tech.SummerCamp 2024 本番ガイドライン ### 概要 Tech.SummerCamp 2024の本番は、3日間にわたる集中的な開発とプレゼンテーションの期間です。チームの協力と個人のスキルを最大限に活かし、革新的なプロジェクトを完成させることが目標です。 ### 日程 2024年9月14日(土)〜9月16日(月)の3日間 ### 会場 KITTE 大阪 | JP Tower 22階 株式会社 MonotaRO オフィス ### 主要マイルストーン 1. プロジェクト基本設計の完了 (1日目終了時) 2. コア機能の実装 (2日目終了時) 3. 完全な機能統合とテスト (3日目午前中) 4. プレゼンテーションとデモの準備 (3日目午後) ### 詳細スケジュール #### 1日目 (9/14 土曜日) ##### 朝の部 (10:30 - 13:00) - [ ] 全員:開会式参加 (10:30 - 11:30) - [ ] 全員:チームミーティング (11:30 - 12:00) - 目的:チーム内の役割を明確にし、プロジェクトの方向性を全員で確認する。 - アジェンダ: 1. オープニング (2分) - ミーティングの目的と流れの説明 2. チーム目標の再確認 (5分) - プロジェクトの目的と期待される成果を全員で共有 3. 役割の最終確認 (15分) - 各メンバーの主要な責任領域の確認 - スキルセットに基づいた補助的な役割の割り当て - チーム内でのコミュニケーション方法の確認 4. 懸念事項の共有 (5分) - 各メンバーが抱える不安や疑問点を共有 - 必要なサポートの確認 5. クロージング (3分) - 決定事項の最終確認 - 次のステップの確認 - 直後の作業内容の確認 - 短期的な目標設定 - [ ] 全員:開発環境セットアップと動作確認 (12:00 - 13:00) - 目的:全メンバーが同じ開発環境で作業できるようにし、初期の技術的問題を解決する。 - アジェンダ: 1. オープニング (2分) - ミーティングの目的と流れの説明 2. 必要なソフトウェアのインストール (20分) - 開発言語やフレームワーク - データベース - バージョン管理システム (Git) - 開発ツール (IDEなど) 3. プロジェクトリポジトリのクローンと初期設定 (7分) - GitHubからのクローン - 必要な環境変数の設定 4. ローカル環境での動作確認 (20分) - サーバーの起動 - データベース接続の確認 - サンプルコードの実行 5. トラブルシューティング (10分) - 発生した問題の共有と解決 6. クロージング (1分) - 次のアクションの確認 ##### 午後の部 (14:00 - 18:00) - [ ] 全員:プロジェクトキックオフミーティング (14:00 - 14:30) - 目的:プロジェクトの具体的な作業計画と目標を明確にする。 - アジェンダ: 1. オープニング (2分) - ミーティングの目的と流れの説明 2. プロジェクト概要の確認 (5分) - プロジェクトの目的と期待される成果の再確認 - 主要な機能やユーザーストーリーの確認 3. チーム構成と役割の最終確認 (5分) - 各メンバーの主要な責任領域の確認 - スキルセットに基づいた補助的な役割の割り当て 4. 技術スタックの確認 (3分) - 使用する言語、フレームワーク、ツールの最終確認 5. 初日の目標設定 (10分) - 具体的なタスクの洗い出しと優先順位付け - 各メンバーへのタスク割り当て 6. リスクと課題の特定 (3分) - 予想される障害や課題の共有 - 対策案の簡単な討議 7. クロージング (2分) - 決定事項の最終確認 - 次のアクションの確認 - [ ] メンバーA:UI/UXデザインの基本設計 (14:30 - 16:30) - 目的:ユーザーにとって使いやすく、直感的なインターフェースを設計すること。 - 主な作業: 1. ユーザーペルソナの作成 - ターゲットユーザーの特徴、ニーズ、行動パターンを定義 2. ユーザーフロー図の作成 - アプリケーション内でのユーザーの行動パスを視覚化 3. ワイヤーフレームの作成 - 主要画面のレイアウトと構造を簡単なスケッチで表現 4. デザインシステムの基本方針決定 - 色彩計画、タイポグラフィ、アイコンスタイルなどの基本ルールを設定 5. プロトタイプの作成 - Figmaを利用して、プロトタイプを作成 - 成果物: - [ ] ユーザーペルソナ文書 - [ ] ユーザーフロー図 - [ ] 主要画面のワイヤーフレーム - [ ] デザインシステムの基本ガイドライン - [ ] メンバーB:バックエンドアーキテクチャの設計 (14:30 - 16:30) - 目的:スケーラブルで保守性の高いバックエンドシステムの構造を決定すること。 - 主な作業: 1. システム要件の分析 - 機能要件と非機能要件(パフォーマンス、セキュリティ、拡張性)の整理 2. アーキテクチャパターンの選択 - モノリシック、マイクロサービス、サーバーレスなどから適切な構造を選定 3. テクノロジースタックの決定 - プログラミング言語、フレームワーク、データベース、インフラ(クラウド/オンプレミス)の選択 4. API設計の基本方針策定 - RESTful APIやGraphQLなどの採用決定、エンドポイントの命名規則の策定 5. セキュリティ対策の計画 - 認証・認可方式、データ暗号化、CSRF対策などの方針決定 - 成果物: - [ ] システムアーキテクチャ図 - [ ] テクノロジースタック一覧 - [ ] API設計ガイドライン - [ ] セキュリティ対策計画書 - [ ] メンバーC:データベーススキーマの設計 (14:30 - 16:30) - 目的:効率的でスケーラブルなデータ構造を設計すること。 - 主な作業: 1. エンティティ関連図(ER図)の作成 - 主要なデータエンティティとその関係性を視覚化 2. テーブル構造の定義 - 各テーブルのカラム、データ型、制約を決定 3. インデックス戦略の策定 - クエリパフォーマンス向上のための適切なインデックス設計 4. データの正規化レベルの決定 - パフォーマンスとデータ整合性のバランスを考慮 5. マイグレーション戦略の検討 - スキーマ変更時の対応方針を決定 - 成果物: - [ ] ER図 - [ ] テーブル定義書 - [ ] インデックス設計書 - [ ] データマイグレーション計画 - [ ] メンバーD:テスト計画の立案 (14:30 - 16:30) - 目的:品質を担保するための包括的なテスト戦略を策定すること。 - 主な作業: 1. テストの種類と範囲の決定 - 単体テスト、統合テスト、E2Eテスト、負荷テストなどの実施範囲を決定 2. テスト環境の設計 - 開発、ステージング、本番環境の構成を計画 3. テストケースの洗い出し - 主要機能、エッジケース、負荷条件などのテストシナリオを列挙 4. 自動化戦略の策定 - CI/CDパイプラインへの統合を含むテスト自動化の方針を決定 5. テストデータの準備計画 - テストに必要なダミーデータの生成方法を検討 - 成果物: - [ ] テスト計画書 - [ ] テスト環境構成図 - [ ] テストケース一覧 - [ ] 自動化テスト実装計画 - [ ] テストデータ準備手順書 - [ ] 全員:進捗共有と調整ミーティング (16:30 - 17:00) - 目的:プロジェクトの半分の時点での進捗を確認し、目標達成に向けた調整を行う。 - アジェンダ: 1. オープニング (2分) - ミーティングの目的と流れの説明 2. 各メンバーの進捗報告 (12分、各3分) - 完了したタスク - 進行中のタスク - 直面している課題や障害 3. 全体進捗の評価 (5分) - 当初の目標に対する現在の状況 - 遅れているタスクや領域の特定 4. 課題解決のためのブレインストーミング (7分) - 報告された問題に対する解決策の検討 - チーム内でのサポート体制の確認 5. タスクの再調整 (3分) - 必要に応じたタスクの再割り当てや優先順位の変更 6. クロージング (1分) - 決定事項の最終確認 - 次のアクションの確認 - [ ] 全員:個別タスクの続行と問題点の洗い出し (17:00 - 18:00) ##### 夜の部 (22:00 - 24:00) - [ ] 全員:1日の振り返りミーティング (22:00 - 22:30) - 目的:1日の進捗を確認し、成果と課題を共有することで、チームの状況認識を統一し、次の日の活動をより効果的に計画する。 - アジェンダ: 1. チェックイン (5分) - 各メンバーの簡単な状態確認 2. 進捗報告 (15分) - 各メンバーが以下を簡潔に報告: - 今日完了したタスク - 直面した課題や障害 - 学んだこと、気づいた点 3. 課題の共有と解決策の検討 (10分) - 報告された課題について簡単なブレインストーミング - 必要に応じて、翌日のタスクに解決のためのアクションを追加 - [ ] 全員:翌日の詳細計画立案 (22:30 - 23:00) - 目的:振り返りで得た情報を基に、翌日の具体的な行動計画を立て、チームの焦点と優先順位を明確にする。 - アジェンダ: 1. 目標の確認 (5分) - プロジェクトの全体目標を再確認 - 現在のスプリントやマイルストーンの目標を確認 2. タスクの優先順位付けと割り当て (15分) - Linearのタスクボードを確認 - 未完了のタスクの状況を更新 - 新たなタスクの追加と優先順位付け - タスクの担当者と推定所要時間の決定 3. リスクと課題の予測 (5分) - 翌日予想されるリスクや課題の特定 - 必要な対策の検討 3. サポート要請の確認 (5分) - 各メンバーが必要とするサポートや資源の確認 - チーム内でのサポート方法の決定 - [ ] 全員:個別タスクの続行 (23:00 - 24:00) #### 2日目 (9/15 日曜日) ##### 朝の部 (10:30 - 13:00) - [ ] 全員:朝のスタンドアップミーティング (10:30 - 11:00) - 目的:日々の進捗を確認し、問題点を早期に発見・解決する。 - アジェンダ: 1. チェックイン (5分) - プロジェクトの全体目標を再確認 - 現在のスプリントやマイルストーンの目標を確認 - 各メンバーの簡単な状態確認 2. 進捗報告 (15分) 各メンバーが以下を簡潔に報告: - 昨日完了したタスク - 今日の予定タスク - 直面している障害や問題点 3. 問題解決のための議論 (7分) - 報告された問題に対する簡単なブレインストーミング - 必要に応じて、詳細な議論の時間を設定 3. 本日の目標確認 (3分) - チーム全体としての本日の主要目標を確認 - 準備すべきこと: - [ ] 全員:Linearの自身のタスクを更新し、報告内容を事前に整理 - [ ] メンバーD (またはファシリテーター):タイムキーピングの準備 - [ ] メンバーA:フロントエンド - コンポーネント設計 (11:00 - 13:00) - 目的:再利用可能で保守性の高いUIコンポーネントを設計し、効率的なフロントエンド開発を実現する。 - 主な作業: 1. 必要なUIコンポーネントの洗い出し - ボタン、フォーム、カード、モーダルなど共通要素の特定 2. コンポーネント階層の設計 - 親子関係や依存関係の整理 3. 各コンポーネントの仕様定義 - プロパティ、状態、イベントの定義 4. デザインシステムとの整合性確認 - 色、タイポグラフィ、スペーシングなどの統一 5. コンポーネントのモック作成 - 基本的な機能とスタイルの実装 6. コンポーネントドキュメントの作成 - 使用方法や注意点の文書化 - 成果物: - [ ] コンポーネント設計書 - [ ] コンポーネントモック - [ ] コンポーネントドキュメント - [ ] メンバーB:バックエンド - API設計とルーティング (11:00 - 13:00) - 目的:フロントエンドとバックエンドの効率的な連携を実現するAPI構造を設計し、適切なルーティングを実装する。 - 主な作業: 1. 必要なAPIエンドポイントの洗い出し - CRUD操作や特殊機能に対応するエンドポイントの特定 2. RESTful APIの設計 - リソース名、HTTPメソッド、URLパターンの決定 3. リクエスト/レスポンスの形式定義 - JSONスキーマの作成、必須パラメータの決定 4. エラーハンドリングの設計 - エラーコードとメッセージの標準化 5. 認証・認可の方式決定 - JWT、OAuth等の選択と実装方針の決定 6. APIドキュメントの作成 - Swagger/OpenAPIを使用したドキュメント化 7. ルーティングの実装 - 選択したバックエンドフレームワークでのルート設定 - 成果物: - [ ] API設計書 - [ ] APIドキュメント - [ ] ルーティング実装コード - [ ] メンバーC:データベース - テーブル作成とサンプルデータ挿入 (11:00 - 13:00) - 目的:プロジェクトに必要なデータベース構造を実装し、開発とテストに使用するサンプルデータを準備する。 - 主な作業: 1. データベーススキーマの最終確認 - テーブル構造、リレーションシップの確認 2. テーブル作成スクリプトの作成 - CREATE TABLE文の作成 - インデックス、制約の設定 3. マイグレーションファイルの作成(必要な場合) - スキーマ変更を管理するマイグレーションの実装 4. テーブルの作成 - スクリプトまたはORMを使用したテーブル作成の実行 5. サンプルデータの設計 - 各テーブルに必要なダミーデータの計画 6. データ挿入スクリプトの作成 - INSERT文またはシーダーの実装 7. サンプルデータの挿入 - スクリプトの実行によるデータ投入 - 成果物: - [ ] テーブル作成スクリプト - [ ] サンプルデータ挿入スクリプト - [ ] populated データベース - [ ] メンバーD:単体テストの作成開始 (11:00 - 13:00) - 目的:コードの品質と信頼性を確保するため、各機能の単体テストを設計し実装を開始する。 - 主な作業: 1. テスト対象の特定 - 重要な関数、メソッド、コンポーネントのリストアップ 2. テストケースの設計 - 正常系、異常系、エッジケースの洗い出し 3. テストフレームワークの選択と設定 - Jest、Mocha等のセットアップ 4. モックとスタブの準備 - 外部依存を持つ部分のモック作成 5. テストコードの実装 - 各テストケースに対応するコードの作成 6. テスト実行と結果の確認 - 初期テストの実行とバグの特定 7. CI/CDパイプラインへのテスト組み込み(可能であれば) - 自動テスト実行の設定 - 成果物: - [ ] テスト計画書 - [ ] 単体テストコード - [ ] テスト実行結果レポート ##### 午後の部 (14:00 - 18:00) - [ ] メンバーA:フロントエンド - 主要ページの実装 (14:00 - 16:00) - 目的:ユーザーインターフェースの中核となる主要ページを実装し、基本的な機能とデザインを実現する。 - 主な作業: 1. 優先度の高いページの特定 - ホームページ、ユーザー認証ページ、主要機能ページなど 2. レイアウトの実装 - 事前に設計したコンポーネントを使用してページ構造を構築 3. ルーティングの設定 - React RouterやVue Routerなどを使用してページ遷移を実装 4. データフェッチングロジックの実装 - APIとの連携、状態管理(Redux, Vuex等)の実装 5. ユーザーインタラクションの実装 - フォーム処理、ボタンアクション、動的コンテンツの表示など 6. レスポンシブデザインの適用 - 異なる画面サイズに対応するスタイリングの実装 7. パフォーマンス最適化 - 遅延ローディング、メモ化などの技術を適用 - 成果物: - [ ] 実装された主要ページのコード - [ ] ページ間のナビゲーション機能 - [ ] APIと連携したデータ表示機能 - [ ] メンバーB:バックエンド - 主要APIの実装 (14:00 - 16:00) - 目的:フロントエンドとデータベースを繋ぐ主要なAPIエンドポイントを実装し、データの受け渡しを可能にする。 - 主な作業: 1. CRUD操作の実装 - 作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)の各エンドポイント実装 2. ビジネスロジックの実装 - データ処理、計算、変換などのサーバーサイドロジックの実装 3. バリデーションの実装 - 入力データの検証ロジックの追加 4. エラーハンドリングの実装 - 適切なエラーメッセージとステータスコードの設定 5. 認証・認可の実装 - JWTやOAuth等を使用したセキュリティ機能の実装 6. ミドルウェアの設定 - ロギング、CORS設定、レート制限などの実装 7. データベース連携の実装 - ORMやクエリビルダーを使用したデータベース操作の実装 - 成果物: - [ ] 実装された主要APIエンドポイント - [ ] APIのテストスクリプト - [ ] APIドキュメントの更新 - [ ] メンバーC:データベース - クエリの最適化 (14:00 - 16:00) - 目的:データベースクエリのパフォーマンスを向上させ、アプリケーションの応答性を改善する。 - 主な作業: 1. クエリの分析 - 実行計画の確認、ボトルネックの特定 2. インデックスの最適化 - 適切なインデックスの作成と不要なインデックスの削除 3. クエリの書き直し - サブクエリの最適化、JOINの効率化 4. データベース設定の調整 - キャッシュサイズ、接続プールなどの設定最適化 5. データの非正規化(必要に応じて) - 読み取りパフォーマンス向上のためのデータ構造の調整 6. クエリキャッシュの実装 - 頻繁に使用されるクエリ結果のキャッシュ戦略の実装 7. パフォーマンステストの実施 - 最適化前後のベンチマーク比較 - 成果物: - [ ] 最適化されたSQLクエリ - [ ] 新しいインデックス定義 - [ ] パフォーマンス改善レポート - [ ] メンバーD:統合テストの設計 (14:00 - 16:00) - 目的:システム全体の機能性と信頼性を確保するため、複数のコンポーネントやサービスを跨ぐ統合テストを設計する。 - 主な作業: 1. テストシナリオの特定 - エンドツーエンドの主要ユースケースの洗い出し 2. テスト環境の準備 - テスト用データベース、モックサービスの設定 3. テストケースの設計 - 正常系、異常系、境界値のテストケース作成 4. テストデータの準備 - 各シナリオに必要なテストデータの用意 5. 自動化テストスクリプトの作成 - Selenium, Cypress等を使用したE2Eテストの実装 6. API統合テストの設計 - Postman, RestAssured等を使用したAPIテストの実装 7. 継続的インテグレーション(CI)への組み込み - テスト自動実行のためのCI設定 - 成果物: - [ ] 統合テスト計画書 - [ ] テストケース一覧 - [ ] 自動化テストスクリプト - [ ] CI設定ファイル - [ ] 全員:中間進捗報告会 (16:00 - 16:30) - 目的:プロジェクトの半分の時点での進捗を確認し、目標達成に向けた調整を行う。 - アジェンダ: 1. オープニング (2分) - ミーティングの目的と流れの説明 2. 各担当領域の進捗報告 (20分、各5分) - 完了したタスク - 進行中のタスク - 予定より遅れているタスク - 直面している課題や障害 3. 全体進捗の評価 (5分) - 当初の目標に対する現在の状況 - 予定通りに進んでいる部分と遅れている部分の特定 4. クロージング (3分) - 次のステップの確認 - 残りの時間で優先すべきタスクの確認 - 必要な調整や変更点の特定 - 決定事項の最終確認 - [ ] 全員:課題解決ミーティング (16:30 - 17:00) - 目的:中間進捗報告会で特定された課題に対する解決策を検討し、実行計画を立てる。 - アジェンダ: 1. 課題の列挙と優先順位付け (5分) - 中間進捗報告会で挙がった課題の確認 - 影響度と緊急度に基づく優先順位付け 2. 主要課題の深掘りと解決策の検討 (20分) - 各課題について: - 問題の根本原因の分析 - 可能な解決策のブレインストーミング - 最適な解決策の選択 3. アクションプランの作成 (5分) - 選択された解決策の実行計画 - 担当者と期限の設定 - [ ] 全員:個別タスクの続行 (17:00 - 18:00) ##### 夜の部 (22:00 - 24:00) - [ ] 全員:1日の振り返りミーティング (22:00 - 22:30) - 目的:1日の進捗を確認し、成果と課題を共有することで、チームの状況認識を統一し、次の日の活動をより効果的に計画する。 - アジェンダ: 1. チェックイン (5分) - 各メンバーの簡単な状態確認 2. 進捗報告 (15分) - 各メンバーが以下を簡潔に報告: - 今日完了したタスク - 直面した課題や障害 - 学んだこと、気づいた点 3. 課題の共有と解決策の検討 (10分) - 報告された課題について簡単なブレインストーミング - 必要に応じて、翌日のタスクに解決のためのアクションを追加 - [ ] 全員:翌日の詳細計画立案 (22:30 - 23:00) - 目的:振り返りで得た情報を基に、翌日の具体的な行動計画を立て、チームの焦点と優先順位を明確にする。 - アジェンダ: 1. 目標の確認 (5分) - プロジェクトの全体目標を再確認 - 現在のスプリントやマイルストーンの目標を確認 2. タスクの優先順位付けと割り当て (15分) - Linearのタスクボードを確認 - 未完了のタスクの状況を更新 - 新たなタスクの追加と優先順位付け - タスクの担当者と推定所要時間の決定 3. リスクと課題の予測 (5分) - 翌日予想されるリスクや課題の特定 - 必要な対策の検討 3. サポート要請の確認 (5分) - 各メンバーが必要とするサポートや資源の確認 - チーム内でのサポート方法の決定 - [ ] 全員:個別タスクの続行と調整 (23:00 - 24:00) #### 3日目 (9/16 月曜日) ##### 朝の部 (10:30 - 13:00) - [ ] 全員:最終日スタンドアップミーティング (10:30 - 11:00) - 目的:プロジェクトの最終状況を確認し、残りの時間で達成すべき目標を明確にし、最後の追い込みに向けてモチベーションを高める。 - アジェンダ: 1. 個人の状況報告 (12分、各メンバー3分) 各メンバーが以下を報告: - 現在の作業状況 - 残っている重要タスク - 予想される課題や懸念事項 2. プロジェクト全体の状況確認 (5分) - 完了した主要機能の確認 - 未完了の重要タスクの特定 - 予定との差異の把握 3. 最終目標の設定と優先順位付け (5分) - 残り時間で達成すべき具体的な目標の設定 - タスクの優先順位付けと担当者の決定 4. 成果発表の準備状況確認 (4分) - プレゼンテーション資料の進捗確認 - デモンストレーションの準備状況確認 - 発表者と役割分担の最終確認 5. クロージングとモチベーションアップ (4分) - 最終的な励ましの言葉 - チーム全体での決意表明 - 準備すべきこと: - [ ] 全員:担当部分の完了に必要な時間の見積もり - [ ] メンバーD (またはファシリテーター):最終日の暫定スケジュール案の作成 - [ ] メンバーA&B:フロントエンドとバックエンドの統合 (11:00 - 13:00) - 目的:フロントエンドとバックエンドを接続し、エンドツーエンドで機能するアプリケーションを完成させる。 - 主な作業: 1. API エンドポイントの最終確認 - フロントエンドからのリクエストとバックエンドのエンドポイントの整合性確認 2. データ形式の調整 - リクエスト/レスポンスのデータ構造の最終調整 3. 認証・認可の統合 - ログイン機能、トークンベースの認証の実装と検証 4. エラーハンドリングの統合 - フロントエンドでのエラーメッセージ表示の実装 5. 非同期処理の最適化 - ローディング状態の管理、エラー時の再試行ロジックの実装 6. CORS設定の最終確認 - クロスオリジンリクエストの正常動作確認 7. 環境変数の設定 - 開発、本番環境の切り替えに必要な設定の実装 - 成果物: - [ ] 完全に統合されたフロントエンドとバックエンドのコード - [ ] 環境別の設定ファイル - [ ] 統合テストの結果レポート - [ ] メンバーC:最終的なデータベース調整 (11:00 - 12:00) - 目的:データベースの最終的な調整を行い、アプリケーションの要件を完全に満たす状態にする。 - 主な作業: 1. スキーマの最終確認 - テーブル構造、リレーションシップの最終チェック 2. インデックスの最終調整 - クエリパフォーマンスに基づくインデックスの追加/削除 3. ストアドプロシージャやトリガーの最適化(使用している場合) - 複雑な処理ロジックの効率化 4. データ整合性のチェック - 制約、カスケード処理等の動作確認 5. バックアップ戦略の確認 - データ損失防止のための最終チェック 6. パフォーマンステストの実施 - 大量データ時の動作確認、ボトルネックの最終チェック 7. セキュリティ設定の最終確認 - ユーザー権限、暗号化設定等の確認 - 成果物: - [ ] 最終調整されたデータベーススキーマ - [ ] 最適化されたクエリとインデックス - [ ] パフォーマンステストレポート - [ ] メンバーC:デモ用データの準備 (12:00 - 13:00) - 目的:プレゼンテーションやデモンストレーションで使用する、現実的かつ印象的なサンプルデータを準備する。 - 主な作業: 1. シナリオの設定 - デモで見せたい機能や流れの特定 2. データセットの設計 - 各シナリオに必要なデータの種類と量の決定 3. テストデータの生成 - ダミーデータ生成ツールの使用や手動でのデータ作成 4. データの品質確認 - 生成されたデータの整合性とリアリティのチェック 5. データ投入スクリプトの作成 - 効率的にデータを挿入・更新するスクリプトの実装 6. 複数のデータセットの準備 - 異なるシナリオや状況に対応できるよう複数のデータセットを用意 7. デモ環境へのデータ投入 - 準備したデータの実際の環境への適用 - 成果物: - [ ] デモ用データセット - [ ] データ投入スクリプト - [ ] データセットのドキュメント(各データの意味や使用シナリオの説明) - [ ] メンバーD:最終テスト実行と不具合修正 (11:00 - 13:00) - 目的:アプリケーション全体の品質を最終確認し、発見された問題を修正して、安定した動作を確保する。 - 主な作業: 1. テストシナリオの最終確認 - すべての主要機能と エッジケースのカバー確認 2. 回帰テストの実行 - これまでの修正による新たな問題の発生がないか確認 3. パフォーマンステストの実行 - 負荷時の動作、レスポンス時間の確認 4. セキュリティテストの実行 - 脆弱性スキャンツールの使用、ペネトレーションテストの実施 5. クロスブラウザ/デバイステスト - 異なるブラウザやデバイスでの動作確認 6. ユーザビリティテスト - 実際のユーザー動線に沿った操作性の確認 7. バグ修正とホットフィックス - 発見された問題の迅速な修正と再テスト - 成果物: - [ ] 最終テスト結果レポート - [ ] バグ修正ログ - [ ] 最終版アプリケーションコード ##### 午後の部 (13:00 - 18:00) - [ ] メンバーA&B:プレゼン資料作成 (13:00 - 13:30) - スライドの構成決定 - キーメッセージの抽出 - デザイン調整 - [ ] メンバーC&D:デモ準備 (13:00 - 13:30) - デモシナリオの作成 - テストランの実行 - [ ] 全員:発表リハーサル (13:30 - 13:45) - [ ] 全員:最終調整 (13:45 - 14:00) - [ ] 全員:成果発表 (14:00 - 15:30) - [ ] 全員:結果発表参加 (15:30 - 16:30) - [ ] 全員:懇親会参加 (16:30 - 18:00) - [ ] 全員:チーム内振り返りセッション (適宜) - 目的: - プロジェクト全体を振り返り、成功点と改善点を特定する - チームメンバー間で学びと気づきを共有する - 今後のプロジェクトや個人の成長に活かせる教訓を抽出する - チームの結束力を高め、達成感を共有する - アジェンダ: 1. オープニング (5分) - セッションの目的と進行方法の説明 - グランドルールの設定(例:批判を控える、建設的な意見を心がける) 2. プロジェクト概要の振り返り (10分) - プロジェクトの目標と実際の成果の比較 - 主要なマイルストーンの達成状況の確認 3. 成功点の共有 (15-20分) - 各メンバーが感じた成功体験や良かった点を共有 - キーワードや短文でボードに記録 4. 課題点の特定 (15-20分) - 直面した困難や改善が必要だと感じた点を共有 - 批判ではなく、事実と感情を分けて共有することを心がける 5. 学びと気づきの抽出 (15-20分) - プロジェクトを通じて得られた個人的な学びや気づきを共有 - 技術的スキル、ソフトスキル両面での成長点を挙げる 6. 改善アイデアのブレインストーミング (15-20分) - 特定された課題に対する改善案をディスカッション - 次のプロジェクトで試してみたいアイデアを出し合う 7. アクションアイテムの設定 (10分) - 議論の中から具体的なアクションアイテムを3-5個選定 - 各アイテムの担当者と期限を決める(可能な場合) 8. 個人の振り返りと共有 (10-15分) - 各メンバーが1-2分で個人の振り返りを共有 - プロジェクトへの貢献、成長、今後の抱負などを述べる 9. クロージング (5分) - ファシリテーターによるセッションのまとめ - チーム全体への感謝と励ましの言葉 - 準備すべきこと: - [ ] 全員:必要に応じて軽食や飲み物を用意し、リラックスした雰囲気を作る - [ ] メンバーD (またはファシリテーター):ホワイトボードやオンラインツール(例:Miro, Trello)を用意する - 注意事項: - 個人を非難したり、責任を追及したりしないよう注意する - 過去の問題にこだわりすぎず、未来志向の議論を心がける - チームの成果を祝福し、ポジティブな気持ちで終われるよう配慮する ### 期待される成果 1. 機能するプロトタイプまたはMVP(Minimum Viable Product) 2. プロジェクトの説明とデモを含むプレゼンテーション 3. ソースコードとドキュメンテーション 4. チーム内での技術的および個人的な成長 ### 注意事項 1. 時間管理:限られた時間を最大限に活用するため、計画的に作業を進めてください。 2. チームワーク:常にコミュニケーションを取り、互いにサポートし合ってください。 3. 健康管理:適度な休憩と睡眠を取り、無理のない範囲で作業を行ってください。 4. 問題解決:技術的な問題に直面した場合は、早めにチーム内で共有し、必要に応じて外部サポートを求めてください。 5. バージョン管理:こまめにコードをコミットし、バージョン管理を適切に行ってください。 6. セキュリティ:セキュリティを考慮したコーディングを心がけ、機密情報の取り扱いに注意してください。 7. プレゼンテーション準備:成果発表は重要です。十分な時間を確保して準備を行ってください。 ## 再配布ポリシー ### 概要 本文書は、Tech.SummerCamp 2024のECCチームに関連する全てのドキュメント、ガイドライン、および成果物の再配布に関するポリシーを定めるものです。 ### 再配布の許可 ECCチームに関連する全ての文書、ガイドライン、および参加者が作成した成果物について、以下の条件のもとで再配布を許可します。 ## 再配布の条件 1. 非営利目的での使用 - 再配布は非営利目的に限ります。商業利用を目的とした再配布は禁止します。 2. 出典の明記 - 再配布する際は、必ず "Tech.SummerCamp 2024 by ECC Team" を出典として明記してください。 3. 改変の許可 - 再配布者は、必要に応じて内容を改変することができます。ただし、改変した場合はその旨を明記してください。 4. 免責事項の添付 - 再配布する際は、以下の免責事項を添付してください: "本文書は Tech.SummerCamp 2024 by ECC Team の成果物を基に作成されています。内容の正確性や適用結果について、Tech.SummerCamp 2024 by ECC Team の原作者は一切の責任を負いません。" 5. 参加者の権利尊重 - 個人が特定できる情報や、参加者の知的財産権を侵害する内容は削除または匿名化してください。 6. ライセンスの継承 - 再配布される文書は、本ポリシーと同等以上の自由な利用を許可するライセンスのもとで公開してください。 ## 推奨ライセンス 再配布の際は、以下のいずれかのライセンスの採用を推奨します。 - クリエイティブ・コモンズ 表示 4.0 国際 (CC BY 4.0) - MIT License (ソフトウェアコードの場合) ## 問い合わせ 再配布に関して質問がある場合は、Tech.SummerCamp 2024 by ECC Team([info-proken@ecc.ac.jp](info-proken@ecc.ac.jp))にお問い合わせください。 本ポリシーは、Tech.SummerCamp 2024 の精神である知識の共有と技術コミュニティの発展を促進することを目的としています。ポリシーに従って適切に再配布を行い、イベントの成果が広く活用されることを期待します。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up