2013年10月13日日曜日

第22回GDG中国勉強会を開催しました。

10/12(土)の第22回GDG中国勉強会@岡山を開催しました。
今回は、Google Cloud Platformを使ってみるという会でしたので、参加者の皆さんもいろいろなサービス、APIを使われたことだろうと思っています。
見た限りでは、Google App Engineが多かったようです。
そのうち、Blogを書いてくれる事だろうと思うので待っていることにします。

私はGoogle Cloud SQLと、Google Compute Engineを動かしたので、その手順を書いておきます。

※事前にGoogle Cloud Consoleでプロジェクトを作っていること。

まず、Google Cloud SQLから。

  1. Cloud SDKをダウンロード、展開する。(Go版に萌えましたが、コマンドが少ないのでPython版か、Java版が無難です。もしかしたらPython版だと早い?)
  2. Google Cloud SQLに接続する場合は、
    1. ./gauth
    2. (プロジェクトIDなどを聞かれ、認証URLが出てくるのでブラウザで認証させる)
  3. ./google_sql.sh [インスタンス名]

とすると、Google Cloud SQLに接続できるので、これで、select version();とか実行すれば結果が取れます。
参考:G+の投稿

次に、Google Compute Engineの接続。ほぼ、Getting Startedの通りですが、Webのコンソールも利用しました。方法をメモしておきます。
  1. プロジェクトのメニューからAPIs&auth→APIsを選び、「Google Compute Engine」を探し、ONにする。
  2. メニューのCompute Engineを選択し、NEW INSTANCEボタンを押す。
    1. OSはDebian6、7とCentOS6が選べる。(私はCentOSにしました)。
    2. 以下の画像はDiskを再利用していますが、New Persistent Disk from Imageを選択すれば新規作成できます。
  3. ./gcutil auth --project=[プロジェクト名]
    1. 承認用のURLが表示されるので、ブラウザにコピペして承認する。
    2. 承認キーが表示されたら、コンソールにコピペ
  4. ./gcutil ssh [インスタンス名]
    1. sshで接続してCompute Engineのコンソールを利用する。
    2. 思ったより重たいので注意。
    3. ここからCompute Engine側でコマンド実行となる。
  5. sudo yum install httpdとかする。
    1. Apacheを動かすので。
  6. sudo /etc/rc.d/init.d/httpd startとかする。
    1. Apache起動。(service httpd startも可能ですが、私は上のコマンドを実行しました。)
  7. ここで、一旦Compute Engineからログアウト
  8. firewallを追加。
    1. ./gcutil addfirewall http2 --description="Incoming http allowed." --allowed="tcp:http"
    2. iptablesを書き換えても何も意味はありません。(Google側で管理されているそうです。)
  9. 適当にIPアドレスで接続。
  10. 表示されれば成功!
  11. 最後に、インスタンスを削除して終了。
    1. コンソール上で可能(削除とリブートしか無い)
    2. ./gcutil deleteinstance [インスタンス名]でも可能です。
    3. ちなみに、Compute Engineでshutdown -h nowしたら、削除するしかできなくなります。(REBOOT INSTANCEボタンはエラーになります)
私はスターターパックを使っていじり倒そうと思いましたが、多分プロジェクト名を間違って申し込んだので、$1000が設定されないと思うので、適当に払います…。

2013/10/27追記:
金額が表示されたのをG+に投稿したのですが、こちらにもリンクを張っておきます。
https://plus.google.com/114183076079015753160/posts/88dV7kCuTrL

よくある質問
Q1. お金…?
A. 今のところ、どれくらいかかっているか不明です。が、そこまで課金されない気がする。まだ、Cloud Console上には課金情報は出ていません。
https://cloud.google.com/resources/starterpack/から、$1000のスターターパックに申し込んでおくと吉…?(Promo Code「fuy-in」です)


2013年10月7日月曜日

OSC広島2013に参加してきました。

オープンソースカンファレンスHiroshima 2013に急遽参加してきました。

ここ2、3年はブース出展をしても来る人は皆無という状態が続いていたことと、私のスケジュール調整が難しい事もあって、今年は参加しない方針にしていました。
しかし、スタッフの高田さんから「LT参加」の依頼があったので、LTのみ参加という、久しぶりにバカな事をやってみました。(5分のために新幹線で往復しました)

会場の様子はTwitterの#osc2013hiを追いかけて頂くなどで知っていただけたらと思いますが、大盛況だったようで、当日の参加者も200人ということだったようです。

私が駆けつけた時はすでに撤収準備に入っていたりして、あまり会話ができませんでしたが、ある程度話ができたのでよかったかなと思っています。
(やっぱり、オンラインよりは直接会った方がいいなと思います)

で、LTの時にthinreportsの発表の時にGoogle Closure Toolsというのを目にして、ちょっと感動しました。(Google Closure Toolsは西日本で聞ける人がいるのか?という程度には誰も使ってなかった…)thinreportsは裏でGoogle Closure Toolsを使っているらしく、何か協力ができるかも。ということでした。

島根の方だったので、またOSC島根にも出展を考えてもいいかなー。と思ったりしていますが、今年のようにセッションが15分しかないとかだとちょっと厳しいかな…。という気もしたりしなかったり。
(島根はけっこう遠いからな…)

LT自体は、本来の内容は2分30秒ぐらいで終わってしまったように思いますが、すぐに終わってしまうのはもったいないと思ったので、少しだけフリートークをさせていただきました。が、やっぱりおとなしく終わっておくべきだったかなと思っています。
暗い話題だけを提供してしまったので、今後はもう少し明るい話題があっても良いかな?と思うのですが、どうだろう…。

2013年10月5日土曜日

Androidプログラミングレシピ増補改訂版が発売されました。

昨年のテクニカルレビューアを務めたことのつながりで、今年も2冊のテクニカルレビューを担当させて頂きました。

昨年担当した書籍のことは以下のリンクをごらんください。
(ブログに書いたと思っていたが、どうやら書いていなかったようなので、)
https://plus.google.com/114183076079015753160/posts/bzhS5X5CUw6
https://plus.google.com/114183076079015753160/posts/EqYR5iWKsca

今年の2冊は初版でAndroid2.3までの内容として、英語で書かれた書籍が改訂されたので、日本語に翻訳されたものを、技術的観点で、私がレビューを行いました。
幅広い内容になっているのと、Android4までの内容が書かれているので、前回は1冊でしたが、今回は2冊に分かれています。
(1版のことについては、http://takashi-yokoyama.blogspot.jp/2012/01/android.htmlへ。)

1冊目のAndroidプログラミングレシピ​増補改訂版 アーキテクチャ/UI/ネットワーク編は、環境構築、各種View、通信(ネットワーク、Bluetooth、NFC、USBホスト)について扱われています。

2冊目のAndroidプログラミングレシピ​増補改訂版 メディア/データ/システム/ライブラリ/NDK編は、マップ、カメラ、音声、動画、センサー、GPS、Preference、SQLite、
ライブラリプロジェクトについて、NDK、RenderScriptの事が書かれています。
こちらに関しては、少し残念だったのが、Google Map Android API v2ではなく、v1のMapViewに関する説明になっていることです。
(公式に非推奨になっていることもあり、MapViewを使った新規開発は不可能なため。)
ここは、翻訳本の制約でしょうか。どうすることもできないので、興味がある皆さんが購入して頂いて、次回作に期待するしか無さそうです。

2冊とも文字が多いので、書籍に書かれているソースコードを入力して動かしながら読んだ方が理解は早いと思います。
そして、あまり知られていない便利なクラスがあるということに気がつくこともあるかと思いますので、ぜひ一読いただければと思っています。

2013年9月30日月曜日

HTML+CSSデザイン|基本原則、これだけ。【HTML5 & CSS3対応版】を読みました。

HTML+CSSデザイン|基本原則、これだけ。【HTML5 & CSS3対応版】
HTML5のクライアント側の技術も知りたかったので読んでみました。

デザインの基礎知識、プランニングの話題が前半出てくるので
個人的に必要だったマークアップとCSSのレイアウトあたりなどの話題が
なかなか出てこないというのが気になりましたが、内容とサンプルコードが
しっかりしていたので、この本は良かったと思います。

マークアップの部分は、コンテンツの違いが説明されていますし、
スタイルの部分はレイアウトや、インターフェイスの話題が大半を占めています。
しかし、アニメーションやデザイン的な話も書かれているので
個人的に知らなかった事が書かれていて、十分でした。

少し、サンプルコードを触りましたが、物足りないので
もう一度触ってしっかり覚えたいと思います。

気になるのは、編集時のチェックが甘いのか、参考資料の番号が
なかったり、間違っていたりと、読みすすめれば分かる程度の
ことですが、ちょっと残念だったかもしれません。

2013年9月29日日曜日

Go言語勉強会に行ってきました。

ぷち勉強会としてGo言語をやるということで、講師を務めてきました。
http://atnd.org/events/43427

ぷち勉強会の様子はhttp://togetter.com/li/570097にまとめられています。

当日の資料:http://goo.gl/lpydda
同日に+Shingo Ishimuraさんが公開した資料http://slid.es/sinmetal/first-golang
東京と、香川で同時開催だったようです。
go wikiとかも紹介されたようです。(私は見たことがなかった…)

今回は「浅く広く」ということで、主に文法について話をしました。
プログラミングのスタイルは人それぞれだと思ったので、
「こう書くべき」とは言わず、「いろいろな書き方がある」という
ことにしました。

ただ、少し内容としては物足りない部分があったかもしれません。
(他の言語でプログラムを書いている人ばかりなので、見ればわかる)

ちょっと、tour of goとか見てたら、全て知っている内容になってしまいましたが
実際、「初心者向け」ってなるとこんな感じだろうなと思ったり思わなかったり。

思ったよりもコードを書かずにGo Playgroundと、読んで理解されていたので
進捗は、70ページぐらいのうち、60ページ弱まで進んだ所で
タイムアップしました。

並列処理のところや、パッケージのことについても話をしたかったのですが、
仕方がないということにします。

次は、並列処理、テスト、パッケージのあたりを中心にしたものがあれば良さそうです。
が、やっぱり実際に何らかのコードを作成した方が良さそうな気もするので
難しいところですね。

Go言語に興味がある人はいるようなので、今後のGDG中国のイベントで取り上げたいと
思っています。

2013年9月8日日曜日

Go言語で構造体のメンバを継承する

久しぶりにGo言語関係のトピックです。たまたまTwitterで質問されていたので試してみました。(私も実は知らなかった)ということで、メモしておきます。

Go言語には継承の考え方はないのですが、構造体に別の構造体のメンバを取り込むことができます。
interfaceでもできることは書いてありますが、構造体に関してはドキュメントに明記がないような気はするけど、以下のリンクあたりに構造体のメンバを使うコード例が書かれています。(※英語なので読むのに時間と体力が必要なので今回は軽めにしておきます。)
http://golang.org/ref/spec#Selectors

ちなみにこの辺りの記述なのかもしれません。
http://golang.org/ref/spec#Composite_literals

サンプルコードです。(リンク先は動作確認ができるようになっています)
http://play.golang.org/p/nNV-jUiygC

package main

import "fmt"

type a struct {
 A int
 B float32
}

type b struct {
 a
 C string
 D bool
}

func main() {
 val := b {C: "abcde", D: true}
 val.A = 1
 val.B = 2.5

 fmt.Printf("b.A = %d\n", val.A)
 fmt.Printf("b.B = %f\n", val.B)
 fmt.Printf("b.C = %s\n", val.C)
 fmt.Printf("b.D = %v\n", val.D)
}



第21回勉強会@岡山を開催しました。


昨日、第21回勉強会@岡山を開催してきました。

私のAndroidのカメラをテーマにしたセッションと、萩野さんが開催している「HTML5を業務アプリで使うための勉強会」で取り上げた内容を紹介するセッションの2つが行われました。

最初は私のセッションでしたが、やっぱり練習不足は否めないものでしたが、参加者の皆さんはいかがだったでしょうか。当日の資料は以下になります。

Androidのカメラを使う(Presentation)
当日ハンズオンで使ったサンプルプロジェクト(事前に練習=完成したもの)
CaptureSample http://goo.gl/v8IWz8
CameraSample http://goo.gl/K8oNlU

CaptureSampleは、外部のカメラアプリに対してIntentを飛ばして、結果を受け取る版
CameraSampleはCamera APIを利用して写真を取ったり、ズームしたり、顔検出したりします。

実際は、プレビュー表示でハマってしまって(資料の抜け+練習不足)残念な事になってしまいました。時間もかなりオーバーしてしまった事もあってHTML5に興味があった方には申し訳ないことをしたかもしれません。

で、当日言った事をいくつか残しておくと、

  • カメラは端末によって動作が違うから、気をつけること。
  • CameraInfoの値をチェックして、ズームや、オートフォーカス等が利用できるかどうかを確認してプログラムが動くようにすること。
    • isZoom = falseの時にはズームは使えない。
  • 某端末は、isZoom = trueだけど、setZoom()したら、例外発生!
いくつか、Togetterまとめにまとめられているようなので、ご興味があればどうぞ。

やっぱり、前回のぷち勉強会とどうように、資料に書いてない部分を補う程度の「練習」が必要でしたが、なかなかその時間が取れず、セッションを担当するのは難しい気もしてたりします。

次回は9/28(土)にまた、香川のぷち勉強会で「Go言語」が扱われるので参加します。