プログラミング

群像シミュレーター開発記 その1

大きな仕事がやっと落ち着いて、少し余裕が出てきた。 相変わらずGoを学んでいるけれど、ちまちまと作っているサービスでは、言語として踏み込んだ使い方が中々出てこない。 そこで、ずっと作りたかったものを題材として、Goの学習を進めることにした。 群像…

Golang の中国での盛り上がりと『Go Webプログラミング』

Goへの注目は国によって偏りがありますが、Google Trends で見る限り、圧倒的に中国が高いです。 もちろん人口の影響は大きいでしょうし、同じ10億人超えのインドに比べて、プログラミングに関心のある層が分厚いのも関係していると思います。 しかし他の国…

Windowsでの Go 1.3 & Google App Engine SDK for GO 1.9.6 のセットアップ

これまで手元の環境では、結構前になんとなく入れてみた1.2系のものを使っていました。 しかし先日 1.3 がリリースされ、速度の向上や色々な変更も加わっているようです。 プログラミング言語Go 1.3リリース | マイナビニュース Go 1.3 is released - The Go…

Go Kyoto(Go勉強会 そうだ京都、行こう) の資料で ひとりハンズオン

A Tour of Goをひとまず終えて、どこから手をつけようか迷っていたところ、次の資料を見つけました。 Go Kyoto(Go勉強会 そうだ京都、行こう) のハンズオン資料 これは @Jxck さんが京都で行ったハンズ・オンの資料を gist で公開してくれているもの。 そう…

ゼロから学ぶGo言語プログラミング(16) A Tour of Go 71~72

A Tour of Goの続き。 ツアーもこれで最後。 71.Exercise: Web Crawler 最後の課題らしく、コードは多め、解説は少なめ。 まず、初期のコード。 今までのサンプルコードよりボリュームがあるので、まずはしっかり読んでみる。 package main import ( "fmt" …

ゼロから学ぶGo言語プログラミング(15) A Tour of Go 67~70

A Tour of Goの続き。 67.Selcet selectは、switchのようで違う、goroutine用の制御構造。 select は、それの case の条件で、いずれかを実行できるようになるまでブロックし、 こうあるので、selectのcaseにはchannelが必須ということでしょうか。 複数のc…

ゼロから学ぶGo言語プログラミング(14) A Tour of Go 62~66

A Tour of Goの続き。 62.Concurrency やっとGoのうりのひとつ、並行性。 63.Goroutines goroutine (ゴルーチン)は、Goのランタイムに管理される軽量なスレッドです。 Goはgoroutineという軽量なスレッドを簡単に生成できて、任意の関数を go f() とするだ…

ゼロから学ぶGo言語プログラミング(13) A Tour of Go 61

A Tour of Goの続き。 今回は長くなったので、io.Readerの課題のみ。 61.Exercise: Rot13 Reader 画像に引き続き、組み込みのインターフェースを元に、独自の実装を行う課題、かな? 課題そのものはio.Reader型を元にして、ストリームにROT13の複合を施す独…

ゼロから学ぶGo言語プログラミング(12) A Tour of Go 55~60

A Tour of Goの続き。 メソッドから。 55.Errors なんとなく見てきたコードでも登場していましたが、Goではエラーの通知に複数の戻り値を活用しているようです。 こんな感じのコードでしょうか。 f, err := foo() if err != nil { fmt.Println(err) } これ…

ゼロから学ぶGo言語プログラミング(11) A Tour of Go 49~54

A Tour of Goの続き。 メソッドから。 49.Methods and Interfaces オブジェクト指向というのでなく、「メソッドとインターフェース」となっている。 クラスベースではないということ? 50.Methods いきなり答えが。 Goには、クラス( class )のしくみはあり…

ゼロから学ぶGo言語プログラミング(10) A Tour of Go 40~48

A Tour of Goの続き。 mapの途中から。 40.Mutating Maps m := make(map[string]int) という風に、mをstringがキーでintが値のmapとして初期化したとして、 m["foo"] = 100 //挿入・更新 v := m["foo"] //取得 delete(m, "foo") //削除 という操作が出来る…

ゼロから学ぶGo言語プログラミング(9) A Tour of Go 34~39

A Tour of Goの続き。 rangeとmap。 34.Range これもpythonっぽいrange機能。 mapはまだツアーに登場してないけど、辞書みたいなものかな。 for i, v := range foo { } これでfooが持つインデックスがiに、値がvに渡される。 ただ、"range フォーム"という…

ゼロから学ぶGo言語プログラミング(8) A Tour of Go 25~33

A Tour of Goの続き。 データ型や構造あたりから。 25.Structs (また、 type 宣言は皆さんが知っているものです。) struct というのが、構造を持ったデータのようです。 内容は名前と型を並べたシンプルなものですが、もっと複雑な入れ子なども可能なのでし…

ゼロから学ぶGo言語プログラミング(7) A Tour of Go 17~24

A Tour of Goの続き。 制御構造からです。 17.For Golangの繰り返しはwhileなしのforのみ 初期化や条件に()なし {}は必須 18.For continued for ; sum < 1000; { セミコロンありで処理なしってのは分かりにくいような。 19.For is Go's "while" というこ…

ゼロから学ぶGo言語プログラミング(6) A Tour of Go 1~17まで

実践的な言語ガイドを見ながら制御構造の確認をしようと思っていましたが、ちょっと心変わりして、公式チュートリアルの「A Tour of Go」をひと通り進めることにしました。 A Tour of Go A Tour of Go これは、ブラウザで動作するインタラクティブなGoの簡易…

ゼロから学ぶGo言語プログラミング(5) 命名とセミコロン

引き続き、各種命名とセミコロンについて。 前回同様以下のドキュメントを参照していきます。 実践Go言語 - golang.jp 名前 パッケージ名の付け方 冒頭、パッケージのエクスポートが名前で制御されていることへの言及が。 たとえば名前の頭文字が大文字かど…

ゼロから学ぶGo言語プログラミング(4) コードフォーマット, コメント

一旦まっさらな所からGoを学びなおしている記事、4回目はコードフォーマットやコメントについて。 今回からは、以下のドキュメントを参照していきます。 実践Go言語 - golang.jp このドキュメント、言語仕様やチュートリアルを読んでからと案内されています…

ゼロから学ぶGo言語プログラミング(3) Hello World

プログラミング言語Goをのんびり一から学ぶ続き。 appengineのVMにGoで書かれたDockerが採用されたりで、モチベーションさらに上がりました。 今回はようやくHello World。 Go Playground きっちりGoの開発環境を用意するのは後回しにして、まずはコードに触…

ゼロから学ぶGo言語プログラミング(2) Goの簡単な全体像

とりあえず、今の自分が気になった、キャッチーなところだけ。 Goはどんな言語? Goは、Googleが開発し2009年に発表したプログラミング言語です。 Googleの述べた特徴の訳がGo言語とは - golang.jpに掲載されているので、引用します。 シンプルな言語である …

ゼロから学ぶGo言語プログラミング(1) はじめに

本職ではありませんが、プログラミングが好きです。 でも週末自分の趣味に関係して、その時々興味のあるものを触るばかりで、何かに集中してしっかり学んできませんでした。 知人のプログラマと話す内に、そろそろ「これはしっかり把握したぞ」と言えるもの…

大きく値下げしたGoogle App Engineを更に低コストで使う工夫(1) Small Opsの活用

アマチュアですがプログラミングが好きで、特にGoogle App Engineであれこれ試しています。 登場時こそ大きな注目を集めたGoogle App Engineですが、癖が強く、価格改定などの紆余曲折もあって、EC2などAWSと比べると、最近まで随分下火になっていました。 …