Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
skeleton Update README.md Oct 16, 2017
solution リンク切れを修正 Oct 29, 2016
README.md Update README.md Oct 16, 2017

README.md

コマンドラインツールを作ろう

はじめに

このハンズオンでは、画像変換を行うコマンドラインツールを作ります。 基本的な文法などは、このハンズオンでは扱いません。 そのため、ハンズオンを始める前に、必ず A Tour of Goを終わらせてください。 また、文法や周辺ツール、GOPATHなどの詳しい説明は公式ドキュメントの「Learning Go」の項目を読んでください。 特に他のオブジェクト指向言語などを学習されている方は、「FAQ」に目を通すとよいでしょう。

英語が辛い方は、有志によって翻訳されたドキュメントの「Goを学ぶ」を読んで下さい。 すべてが翻訳されているわけではありませんが、役に立つでしょう。 また、はじめてのGoも日本語で書かれていて分かりやすいのでぜひ読んで下さい。

標準パッケージについては、パッケージドキュメントを見ると、使い方が説明されています。

学べることと学べないこと

このハンズオンを行うと以下のことが学べます。

  • go getGOPATHについて
  • コマンドライン引数の取り方
  • ファイルの扱い方
  • 画像ファイルの扱い方
  • flagパッケージの使い方
  • 埋込み
  • 画像処理の仕方
  • golang.org/x/以下のパッケージについて
  • テンプレートエンジンの使い方
  • ディレクトリを再帰的に処理する方法

一方、学べないことは以下のとおりです。

  • Goの開発環境のインストール方法
  • IDEやエディタの設定
  • 基本的な文法
  • ゴールーチンとチャネル
  • net/httpパッケージ

ハンズオンのやりかた

skeletonディレクトリ以下に問題があり、8つのステップに分けられています。 STEP 1からSTEP 8まで進んでいき、最終的には画像変換を行うコマンドラインツールが出来上がります。

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

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

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

このハンズオンを行うには、GOPATHをこのREADMEがあるディレクトリ以下のskeletonディレクトリに設定してください。

MacやLinuxの場合:

$ export GOPATH=`pwd`/skeleton

Windowsの場合:

SET GOPATH=%CD%\skeleton

なお、ハンズオン中に、treeコマンドを実行している部分がありますが、 分かりやすさのためなので、特に実行する必要はありません。

MacWindowsで動作確認をしていますが、解説はMacの動作結果をもとに解説しています。 Windowsの方は、パスの区切り文字等を適宜読み替えてください。

skeleton/tools以下には、ハンズオン中で使うツールが入っています。 skeletonGOPATHが通っていれば、go installでビルドできます。 特に中身を読む必要はありませんが、読んでみても面白いでしょう。 余談ですが、ここで用意しているツールは、MacWindowsの環境の違いを吸収するために用意しています。 まさしくGoの使いドコロでしょう。

目次

ハンズオンの開催や資料の扱いについて

この資料を元にハンズオンを開催するために@tenntennの許可などはいりません。 好きに開催してください。 @tenntennの行ける範囲であれば、開催するから解説して欲しいという依頼もウェルカムです。

なお、forkして変更してもらっても構いませんが、できればPRをいただけると嬉しいです。 資料に間違えを発見した方もissueやPRを頂ければ対応します。

きっといつか英語にも翻訳します。