Giter Club home page Giter Club logo

gacha-ja's Introduction

ガチャを作ろう

解説資料

ハンズオンのやりかた

skeletonディレクトリ以下に問題があり、10個のセクションに分けられています。さらにセクションはステップごとに分けられており、それぞれのステップを進めていくことで、GoでWebアプリが作れるようになっています。

各セクションの各ステップにはREADMEが用意されていますので、まずはREADMEを読みます。 READMEには、そのステップを理解するための解説が書かれています。

READMEを読んだら、ソースコードを開きTODOコメントが書かれている箇所をコメントに従って修正して行きます。 TODOコメントをすべて修正し終わったら、READMEに書かれた実行例に従ってプログラムをコンパイルして実行します。

途中でわからなくなった場合は、solutionディレクトリ以下に解答例を用意していますので、そちらをご覧ください。

macOSの動作結果をもとに解説しています。 Windowsの方は、パスの区切り文字やコマンド等を適宜読み替えてください。

目次

学ぶこと:標準パッケージ、変数、制御構文(ifswitchfor

  • STEP01: Hello, 世界
  • STEP02: 変数を使ってみよう
  • STEP03: ランダムな数字の表示
  • STEP04: アタリとハズレを作ろう
  • STEP05: レア度を作ってみよう
  • STEP06: レア度ごとに出る確率を変えてみよう
  • STEP07: 11連ガチャを作ってみよう
  • STEP08: ガチャを選べるようにしよう

学ぶこと:コンポジット型(配列、スライス、マップ)、構造体、ユーザ定義型

  • STEP01: 11連ガチャの結果を記録しよう
  • STEP02: 任意の回数のガチャの結果を記録しよう
  • STEP03: レア度ごとに集計しよう
  • STEP04: キャラクタを表す型を定義しよう(構造体)
  • STEP05: キャラクタを表す型を定義しよう(ユーザ定義型)

学ぶこと:関数、ポインタ、メソッド

  • STEP01: ガチャを行う関数を定義しよう
  • STEP02: ガチャを行う回数を入力する関数を定義しよう
  • STEP03: ガチャを複数回行う関数を定義しよう
  • STEP04: ガチャの結果とレア度毎の集計結果を返す関数を定義しよう
  • STEP05: ガチャチケットを導入しよう(ポインタ)
  • STEP06: ガチャチケットを導入しよう(メソッド)

学ぶこと:パッケージ、GOPATH、Go Modules

  • STEP01: ファイルを分けよう
  • STEP02: gachaパッケージを作ろう
  • STEP03: gachaパッケージ公開しよう
  • STEP04: gachaパッケージにバージョンを付けよう

学ぶこと:ファイル操作、標準エラー出力、プログラムの終了、コマンドライン引数

  • STEP01: ガチャの結果をファイルに保存しよう
  • STEP02: エラーを出力しよう
  • STEP03: プログラムを終了させよう
  • STEP04: 初期コインの枚数をプログラム引数で渡そう
  • STEP05: 初期ガチャチケットの枚数をフラグで渡そう

学ぶこと:エラー処理の基礎、エラー処理の応用、パニックとリカバー

  • STEP01: ガチャチケットが足りない場合にエラーを発生させよう
  • STEP02: エラーをラップして情報を追加しよう
  • STEP03: エラー処理をまとめよう
  • STEP04: エラーとパニックの違いを知ろう

学ぶこと:HTTPクライアント、HTTPサーバ、テンプレートエンジン、データベース

  • STEP01: ガチャAPIを使ってみよう
  • STEP02: HTTPサーバを作ってガチャの結果をブラウザで表示しよう
  • STEP03: ガチャを行うWebアプリを作ろう
  • STEP04: ガチャの結果をデータベースに保存しよう

学ぶこと:Google App Engine、デプロイ、Google Cloud Datastore

  • STEP01: Google App EngineでガチャWebアプリを公開してみよう
  • STEP02: Google Cloud Datastoreにガチャ結果を保存してみよう
  • STEP03: バージョンアップをしてみよう

学ぶこと:インタフェース、単体テスト、テスタビリティ

  • STEP01: ガチャAPIのクライアントを抽象化しよう
  • STEP02: gachaパッケージをテストしよう
  • STEP03: モックを使ったテストをしよう
  • STEP04: 非公開な機能をテストをしよう

学ぶこと:トレース、ゴールーチン、チャネル、コンテキスト

  • STEP01: ボトルネックを見つけよう
  • STEP02: ゴールーチンを使って処理を早くしてみよう
  • STEP03: ゴールーチンでエラー処理をしてみよう
  • STEP04: ガチャAPIに繋がらない時の対策をしよう

ソースコードの取得

$ go env GOPATH
$ cd ↑のディレクトリに移動
$ mkdir -p src/github.com/gohandson/
$ cd src/github.com/gohandson
$ git clone https://github.com/gohandson/gacha-ja
$ cd gacha-ja

ソースコードの編集

skeletonディレクトリ以下のソースコードを編集する際にはセクションごとにブランチを作って作業するとよいでしょう。 以下の例は、Section 01を編集するためのfix-section01ブランチを作成しています。

$ git checkout -b fix-section01

作業にひと区切りがついたら以下のように作業内容をコミットしてください。

$ git add 編集したファイル
$ git commit -m "変更の概要"

ソースコードのアップデート

ハンズオン資料が更新された場合は以下のように更新してください。 なお、編集中のものがある場合はコミットしておきましょう。

$ git fetch -p
$ git merge origin/main 

アップデートの内容によっては編集中の内容とコンフリクトを起こす可能性があります。

ライセンス

gacha-ja's People

Contributors

mineric avatar nerdaces avatar tenntenn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.