2014年8月31日日曜日

Golang Cafe #44

8/24(日)に開催された「Golang Cafe #44」に参加してきました。

参加者は主催の +Takashi Yokoyama さん、+Takanobu Hagino さん、私の3名でした。

今回は8/9(土)に東京で開催された「Go lang勉強会」の資料の中から「インタフェースの実装パターン」を読み進めました。

当日はスライドを読み進めたのですが、後半に進むと理解できない部分が多く出てきたので、後日、Qiitaの「インタフェースの実装パターン #golang」と合わせて読み直しました。

構造体やインターフェースについては、一通り理解していたつもりでしたが、本資料を読み進めた結果、それは基礎の部分だったことを再確認できました。

今回、新たに得ることのできた知識は、以下の通りです。

  • 関数にメソッドを実装できる。
    →関数にインターフェースを実装できる。
    →インターフェース型の引数に関数を引き渡せる。
  • インターフェースを実装した構造体を埋め込んだ構造体は、埋め込み元のインターフェースを実装したことになる。
  • 複数のメソッドを持つインターフェースがあり、そのメソッドを全て実装し切れていない構造体があった場合、埋め込み先の構造体で残りのメソッドを実装すれば、そのインターフェースを実装したことになる。
  • 型名が大文字で始まる型は、小文字で始まる型名で再定義することで、外部からアクセスを防ぐことができる。

仕組みは理解できるのですが、使いどころがわからないのが、正直なとろこです...q@w@p

次回は萩野さんのGoソースをみんなでレビューする予定です。

2014年8月19日火曜日

Golang Cafe #43

8/17(日)に開催された「Golang Cafe #43」に参加してきました。

参加者は主催の +Takashi Yokoyama さん、+Takanobu Hagino さん、私の3名でした。

今回は8/9(土)に東京で開催された「Go lang勉強会」の資料を読み進める予定でしたが、久々のGolang Cafe初期メンバー3人ということで、脱線してトークの回となりました(^^;)

脱線と言えどもやはりその内容はGoに関するものばかり。いつもはスライドやドキュメントを読み合わせたりパッケージやライブラリーをハンズオンをしたりして全員で同じ時間や内容を共有していますが、今回、改めてそれぞれのメンバーの「今」のGoへの期待や想いをじっくりと話し合ったり確認し合ったりできたので、とても有意義な時間となりました!

次回こそは「Go lang勉強会」の資料を読み進めるようです。

2014年8月16日土曜日

Golang Cafe #42

8/10(日)に開催された「Golang Cafe #42」に参加してきました。

参加者は主催の +Takashi Yokoyama さん、+Takanobu Hagino さん、+Hideki Matsuda さん、私の4名でしたが、途中から植木浩次さんが参加されて最終的に5名となりました。

台風11号がちょうど会場を通過する予報だったため、初の「開催中止」となる可能性もありましたが、「晴れの国」らしく(?)台風の進路が少し東にそれたことで、無事に開催されました。

今回は公式サイトの「Effective Go」のIntroductionからCommentaryまでを、その場で英文を読み砕きながら読み進めて行ったので、それなりに時間がかかりました。

自分にとって新たに得られた情報は以下の通りです。

Introduction

 ・本ドキュメントは、Goのコードをわかりやすく慣用に記述するためのコツを紹介。

Formatting

 ・gofmtを実行すると、演算子の優先順位をスペース(半角空白文字)で表現してくれる。

   a*b + x/y a + b/x - y
     足し算・引き算よりも、掛け算・割り算の方が先に計算される。

Commentary

 ・関数の最初の説明文は関数名で始めておくこと。

   関数名を忘れたが、パッケージ名とその機能を表す単語は覚えていた時に、
     godoc パッケージ名 | grep 単語
   を実行すると説明文が得られ、その先頭を見れば関数名がわかるため。

Golang Cafeに参加して得られたモノの一つに「英語」があります。参加者の英語への意識の高さに影響され、自分も英語で読み書きしなければ!と意識して英語に接するようになりました。

次回は、8/9(土)に東京で開催された「Go lang勉強会」の資料を読み進めるようです。

2014年8月10日日曜日

Golang Cafe #41

8/3(日)に開催された「Golang Cafe #41」に参加してきました。

参加者は主催の +Takashi Yokoyama さん、+Takanobu Hagino さん、初参加の植木浩次さん、私の4名でした。

今回はO/Rマッパー「gorp」を叩く回でしたが、私は植木さんのフォローをさせて頂きました。

植木さんはWindowsユーザーということで、都度、WindowsチームのHaginoさんからアドバイスを頂きながら作業を行いました。

植木さんはGo言語は初めてということで、まずはGoのインストールから開始。

  1. 今回はバイナリー版をインストール。
    →ソースからだとMercurialやGCCの別途インストールが必要で時間がかかるため。
  2. 環境変数にGOROOTとGOPATHを設定して、Go ToolsへのPATHを追加。
  3. 「Hello, World!」をコーディングしてgo runにて実行できるところまで確認。

ここから本線のgorp叩きに参加して頂こうとしましたが、go getを使う際にGitクライアントが必要なことが発覚。さらにデータベースも必要で、セットアップが続きそうな状況に...(@o@)

さすがに時間がもったいないので、再び脱線して「How to Write Go Code」の「Your first library」から進めて頂く事にしました。

本線チームの方は、順調に進んで無事gorpでデータベースにアクセスするところまで到達されていました。(後日、本線チームのメンバーのブログを追っかけて補完しますm(__)m)

Golang Cafe #4」にてdatabase/sqlパッケージ + PostgreSQLを触っていたため、より順調に進められたようで、データベースをSQLiteに変更してみたり、参考サイトの内容をPosgreSQLで実行してみたりと、変化をつけて叩かれていました。

私の場合「How to Write Go Code」を使ったハンズオンは、GDGChugokuで1回、Golang Cafeで2回、行ったことになります。この範囲であればフォローできますので「Go言語は初めて」という方がいつGolang Cafeに来られても大丈夫...のハズ?

個人的には、初めての方が参加された時は、今回のように「他のメンバーの方々には随時フォローを頂きつつ、初めての方は主に私が担当して、他のメンバーの方々には本線を進めて頂き、その成果をブログにまとめて頂き、後日、私はそのブログを追って補完する。」というパターンで大丈夫だと思っています。

次回は「今から?」いえいえ「これから!」公式サイトの「Effective Go」を読み進めるようです。が、台風11号が接近中...q@w@p

2014年8月9日土曜日

自分が作成したGopherを公開するには?

ネット上で各自が作成したオリジナルGopherを見かけるようになりました。私の周囲でも「オリジナルGopher君グッズを作ろう!」といった話もちらほらと?嬉しい限りですね!q@w@p

そこで、自分が作成したオリジナルのGopherをネットに公開したりグッズに使うために気をつけること、すなわち、Gopherのライセンスについて調べてみました。

Gopherのライセンスについての記述はどこ?

公式サイトのFAQに「What's the origin of the mascot?」として記載されています。

 [抜粋] The mascot and logo were designed by Renée French.The logo and mascot are covered by the Creative Commons Attribution 3.0 license.

また、公式ブログの「The Go Gopher」の文中にも掲載されています。

 The gopher images are Creative Commons Attributions 3.0 licensed. That means you can play with the images but you must give credit to their creator (Renee French) wherever they are used.

これらにより、Gopherには「Creative Commons Attribution 3.0 Unported日本語版)」のライセンスが付与されていることがわかります。

「Creative Commons Attributions 3.0」とは?

略称は「CC BY 3.0」で、「Criative Commons日本版)」という組織が発行しているライセンスで、バージョンは「3.0」、種類は「表示」であることを表しています。

種類は、CCサイトの「クリエイティブ・コモンズ・ライセンスとは」に記載されており、Gopherの場合は「表示(BY)」です。

 【表示】原作者のクレジット(氏名、作品タイトルなど)を表示することを主な条件とし、改変はもちろん、営利目的での二次利用も許可される最も自由度の高いCCライセンス。

これらにより、Gopherに関する著作物を使用する場合は、原著作者、すなわち公式サイトのFAQにもある「Renée French」氏のクレジット表示が必要になります。

「二次的著作物(derivative work)」とは?

CCサイトのFAQに「二次的著作物とは何でしょうか。」として説明があります。

今回の話題でいえば「自分で作成(描いたり作ったり)したGopher」になります。

「二次的著作物」のライセンス制約

表示ライセンスは、二次的著作物でも原著作者のクレジット表示が条件です。


原則、二次的著作物のライセンスは原著作者のライセンスより緩められません。


これらにより、自分で作成したGopherを公開する場合は、原著作者のクレジットも表示する必要があり、さらにCCライセンスを付与するなら、原則「表示」以上の制約を持つ種類になります。

「二次的著作物」の公開

二次的著作物には、自分のクレジットを付けてもO.K.です。

 CCライセンスで作品を提供する場合に、気をつけることはありますか?

Web上に公開する場合、クレジット表示は二次的著作物と同一のベージが望ましいです。


これらにより、自分で作成したGopherにCCライセンスを付与した場合は、自分のクレジットも表示させることができ、Web上に公開する場合は、自分で作成したGopherと原著作者のクレジット、CCライセンス付きなら自分のクレジットを、なるべく同一ページに配置するようにします。

結局、どうすればよい?

Renée French氏が作成した公式サイトのGopher画像を使ったり、自分が作成したGopherをCCライセンスなしで使う場合は、

 「Gopherの原著作者はRenée Frenchさんです。」

といったクレジットを、自分が作成したGopherをCCライセンス付きで使う場合は、

 「このGopherは○○○○が作成しました。
  Gopherの原著作者はRenée Frenchさんです。」

といったクレジットとCCライセンス情報を一緒に公開するだけでO.K.です。

つまり

このGopherはRyuji Iwataが筆ペンで作成!
Gopherの原著作者はRenée French氏です。

2014.08.09 二次的著作物をCCライセンス付きで公開する場合には、原著作者の種類に関わらずCCライセンス情報を提示するように修正。