2013年2月16日土曜日

GDG Chugokuのマネージャの活動目的

年末に、私が思う勉強会についての記事を書いたのですが、
大体はその記事にも書いた通りなのですが、私が2年9ヶ月ぐらいの活動を通じて
ずっと一貫した考え方があります。

繰り返しになりますが、それは「身近な、まだ見ぬ技術者の発掘と参加者のレベルアップ」という事です。
実際、活動を始めた頃からその考え方で活動しようと決めていたのですが、
Google Developer Day 2010の基調講演でも同じようなコメントが発信され、
より強く考えるようになりました。


実際、目的が達成できているかどうかは私にはわかりませんが、
勉強会というのは、勉強をするのが目的なので、「人集めに奔走し始めたら終わりだ」とも
思っています。

参加者がいなくなったら、「需要がなかった」とあきらめるのも一つの考え方のようにも
思います。(これは、人から言われたことですが)

中国地方だとGoogle技術が仕事に結びつくというのが少ないようにも思えるので、
どうしても扱うプロダクトによっては、ほとんど人が来ないということもあるかもしれません。

ただ、マイペースでやらないと疲れるので、(特に最近は辞めたくなったりもしたので)
GDGのアピールやら、イベントの人集めやら、良いプロダクト生み出す事とかは他のマネージャ達に託して
今後は、まったりと告知をしながら、裏番組をぶつけられながら(笑)活動していきたいですね。
(長く続けると疲れてくる頃もあるんだろう…。恐らく)

という事で、なんとなく早朝のバイト中に思ったので記事にしてみました。

最後に、久しぶりにGDD 2010の事を思い出した(と言っても、私は京都会場でスタッフしてましたがw)ので


「ジュニアなエンジニアは、次の世代を支える存在かもしれないので、彼らを育てるような活動をしていただきたい」というセリフが印象的でした。

Google Developer Day 2010の基調講演

2013年2月11日月曜日

JUnit実践入門を読みました。


JUnit実践入門を読みました。
この書籍はJavaで動作するユニットテストフレームワークのJUnitを利用した
テストコードの書き方が書かれていて、私も途切れ途切れに読んだので
この書籍もまた読もうと思っていますが、サンプルコードも掲載されているので
実際に入力して動かした方がいいかもしれません。

特に個人的に発見だったのが、カテゴリ化テストとパラメータ化テストで、
書き方を知らなかったのもありますが、これまではいろいろなテストが混ざってしまって
読みにくく、メンテナンスもしにくかったのですが、この辺りの書き方を利用すれば
もう少しデータの種類も増やせそうだし、テストの分類もできるので
「どのような視点で」テストをするのかが明確にできそうな気がしました。

最後に演習問題のページがあり、そこで如何にJavaの力がないのかを
思い知るのも良いかもしれないです。
(私はJDK1.4あたりで止まってるっぽい感じがしました…)

他の使い方としては、リファレンス的に参照しても使えると思います。
(恐らく私はこの使い方になりそうな気がします)

やっぱり書籍は繰り返し読んだ方が良いですね。

Two-legged OAuthを利用してGoogle Appsにアクセスするには

Google Appsの業務をやり始めてから初めて知ったTwo-legged OAuthの認証について
あまりいい記事がなかったので、書き残しておきます。

結論からいうと、毎度のごとく、+keisuke oohashiさんの助けにより
うまく動作させることができました。(ありがとうございます!)

Two-legged OAuthがGoogle Apps無料版でも利用できるのかどうかを
確認した時の投稿(あまり参考になりません
https://plus.google.com/u/0/114183076079015753160/posts/j4sHzchyHWs

Two-legged OAuthを検証し始めた時のGoogle+の投稿(参考にするならこちら)
https://plus.google.com/u/0/114183076079015753160/posts/8NCiJghLapC

Two-legged OAuthのポイント


  • 認証用のオブジェクトと、各種APIにアクセスするためのオブジェクトを生成する。(以下の例はCalendar API)

OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret = "<クライアントシークレット>";
    
OAuthParameters param = new OAuthParameters();
param.version = "1";
param.consumerKey = "<コンシューマキー>";
param.signer = signer;
    
Calendar calendar = new Calendar.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(param)
      .setCalendarRequestInitializer(new CalendarRequestInitializer("<Simple API AccessにあるAPI KEY>"))
      .build();
    
service = new CalendarService(calendar);

コンシューマーキーはGoogle Appsだと、取得したドメイン名のスーパーキーが標準で用意されているのでそれを使うのが簡単ですが、実際に運用する場合は自分で作った方がいいでしょう。作成する場所はGoogle Appsの管理コントロールパネルから高度なツールを選択して「サードパーティのOAuthクライアントアクセスを管理する」から作成して下さい。コンシューマーシークレットも同じページの「管理」リンクをクリックすることで見ることができます。次にSimple API AccessにあるAPI KEYですが、これは、「Google APIs Console」を表示してAPI Accessメニューをクリックすると表示されるKEYを指定します。(Google Appsの管理者アカウントでアクセスした方が無難です)

  • 編集する対象のユーザを指定する。


ArrayMap<String, Object> customMap = new ArrayMap<String, Object>();
customMap.add("xoauth_requestor_id", "<対象のアカウント>");

com.google.api.services.calendar.Calendar api = service.getService();
com.google.api.services.calendar.Calendar.Events.List eventList = api.events().list(target_email)
               .setTimeMin(new DateTime(fmt.format(Calendar.getInstance().getTime()) + "T00:00:00+09:00"))
               .setFields("items(id,summary)")
               .setMaxResults(1000);
   
eventList.setUnknownKeys(customMap);
   
Events events = eventList.execute();

Two-legged OAuthは管理用途で利用される機能(?)なので、編集する対象のユーザを指定しないとどのユーザのデータを編集するのかがわからないので対象のユーザを指定して下さい。

以上で、Two-legged OAuthを使った管理作業が可能になると思います。

2013年2月2日土曜日

4月から高校教師になれそうです。

今日、岡山県の教職員課から「4月から常勤の講師としてお願いしたい」という旨の連絡をいただきました。そこで、以前からアプローチをしていただいていた事もあって快諾しました。
(私は教員免許(工業)をもっているので、以前、金に困っていた時に申請していたのが、今、効果が出たという感じで…)

なので、私は4月から高校教師になれそうです。契約期間はひとまず1年間みたいです。(とりあえず、電話連絡だけなので”なれそう”ということにしておきます。)

一応、公務員ということになるので「副業NG」という制約がついてしまうことになってしまいます。
なので、今携わっている以下の仕事は全てやめないといけなくなりました。

  • 朝の食品配達のパート
  • 専門学校の講師
  • 自営業(一応、個人事業主なので廃業届を出さないといけないですね)
とりあえず、朝のパートは「XX日に辞めます」で良いと思うのですが、
専門学校の講師は、来年度の依頼を受けていたので、代役を探さないといけません。(ある程度、お願いしてみようという候補はいますが…)

一番面倒なのは、自営業の部分ですね。「廃業届」を出せば、ひとまずなしにはなりますが、
ブログ、Androidアプリ、いろいろな所に貼りまくったアフィリンクとかどうしようかな…と考えています。

ブログの広告はひとまず非表示に設定を変えたのですが、アフィリエイトリンクはそこら中に貼ってしまったので、もうどうしようもないな…。G+のプロフィールのやつは変更できるか…。
(これまで、まともな収入になったことは無いのですが…)

ということで、広告系の収入はGDG中国の活動費として利用していこうと思います。
(交通費、設備の利用料などなど)

OKかどうかは、次に連絡があった時にでも聞いてみるか…。
(多分だめなんだろうな…)

何か、いいアイデアがあったら教えて下さい。

2013年1月27日日曜日

書籍「Google Apps Scriptクイックリファレンス」出版


書籍が出版されました!





ついに、私が執筆した書籍第3弾の「Google Apps Scriptクイックリファレンス」が出版されました。
この書籍は、Google Appsで動作するスクリプトのリファレンス本です。すべてのサービス(API)についてフォローできていませんが、ほぼすべてのサービスについて記述されています。Experimental(実験的)なサービスの一部がぬけてしまいましたが、面白いテーマのものは掲載できたのではないかと思います。

Amazonで一瞬「入荷時期未定」となった


Amazonの初回入荷が少なかったのか、一瞬「在庫切れ」となったようで、注文していただいた方の中には発送待ちになってしまったのではないかと思います。すみません。

https://plus.google.com/u/0/114183076079015753160/posts/GgwsPhx2QzH

電子版の出版は?

今の所、予定はありません。(少なくとも、私の耳には入っていません…)

いつ書いてたの?


書籍の書き始めは9月で、11月末脱稿でした。脱稿前の査読は11月の中旬頃にしていただきました。12月は出版社による査読と修正の繰り返しでした。
で、1月出版できてよかったです。

書籍で苦労した点


今回の書籍で苦労したのは幅広い範囲をフォローすることと、思ったよりもAPIが多くて、「数の暴力」ではないのですが、大量のAPIの検証に時間を取られたのが執筆時の苦労でした。
特に、「まともに動作しない」という状況も多々あり(使い方が間違っていたり、ドキュメントの記述がおかしいなど…)、+keisuke oohashiさんにはたくさん助けていただきました。
その様子はGoogle+で#gasjaを検索していただければ、見つけられると思います。
(その時のリンクもどこかにまとめたいのですが時間が無い…)

また、脱稿後の出版社での査読と修正の量も多く、修正作業が大変でした…。
(査読、修正で結局1ヶ月かかった(?))

査読に協力していただきありがとうございました


今回はこれまでの書籍と違って、2人の方に査読をお願いしました。
なので、事前に読んでいただいている分、少し安心しています。
謹呈見本が3冊届きましたが、協力していただいたお2人に送りました。
レイアウトされた書籍を見て、感動してくれてたらいいな…。

これから…


Developer Expertの方にも購入していただいたようで、これからのフィードバックが恐ろしいですが、いい反応と思って様子を伺おうと思っています。
そして、Google Apps Scriptの利用者が増えるきっかけになる事を祈っています。
(見た感じだと今の所、反応は良さそうだけど、どうだろう?)

ついでに、書籍が売れてくれたら喜びます。(増刷とかならないかな…)

2013年1月7日月曜日

プログラミング言語 Go フレーズブックを読みました。

プログラミング言語 Go フレーズブックを読みました。



この本はGo 1.0に対応した書籍で元々は英語の書籍だったものを+Yoshiki Shibataさんが翻訳して書籍を出版されました。

実際、読んでみた感想としては、「Goの初心者向けではない」です。内容も言語が得意としているからか、goroutineとchannelを使った例が多かったので、マルチスレッドプログラミングの知識(よりも経験、マルチスレッドのプログラムを動かしてみる程度には…かな?)があった方が良いと思います。
それから、ネットワークや、Webサーバの話題がありましたが、OSのシステムコールを呼び出すなどの話題はありませんでした。(ファイルのアクセスは少し出てきています)これも、言語の特性として得意ではないから(?)なのかもしれないですね。最近はGoでWebサービスを作る事例も増えているので、時代の流れには沿っている感じもしました。

したがって、ある程度Goでプログラミングをしてみてからの方が良いかもしれません。

私もよくわかっていなかった部分があったので、いい発見ができたのと、また読み返してみたいと思っています。
(本当はコードの写経とか、動かしながら確認するべきだったのですが、そこまでの余裕がなかったので今回はしていません)

個人的に気になった点は、文章が難しい感じがしました。日本語的におかしいという点はなかったのですが、私の知識が足りないだけなのかもしれません。

GDG中国のイベント等で、噛み砕いた内容のセッションができると良い気もしました。
(やるかどうかはわかりませんがw)

2013年1月3日木曜日

2013年の目標

2013年が始まって、すでに3日目に入りました。

久しぶりの3日間だったので、じっくり休みながら、2013年の目標を考えていました。

昨年同様に、GDG中国、仕事、技術面で目標を立ててみようと思います。

2011年も2012年も正直、目標のことなんて盆になるころには忘れていたのですが、
意外にも達成率が良かったみたいです。

という事で、今年も同じようにやってみようと思います。

GDG中国(勉強会関連)の活動


確定分を確実に消化していく




1/13のイベントではAngularJSを使ってみるということで、軽く紹介する予定です。

1/19のイベントの内容はまだ決めていないのですが、Androidのネタではないです。
Google Apps ScriptかGoで行くとは思いますが、AngularJSも面白いので
いいかな?なんて。他にもGoogle Cloud Storageとか、BigQuery、Google Cloud SQLあたりも
どこかで紹介したいものですが、いつになることやら。
(5月にGoogle I/O 2013も開催されるので、そこまでにはどうにか…と言いたいところだけど
タイミング的な問題もあって不可能でしょうね…。)

今後の開催予定について

今年も基本的には思いついたらやるという作戦でいくつもりですが、
新規の講師もお願いしたいものです。(特に今年は主力メンバー激減しそうなので…)
(ノルマみたいに「何人増やす!」みたいなのは宣言しません。そういうのではないと思うので)

あまり詰めすぎず、空けすぎずの2、3ヶ月間隔で進めたいですね。

1回は福山で開催する。
OSCは「スタッフの参加がなければ」回避して、単独開催でいきたいと思います。
(昨年も”無理して参加する必要はないのでは?”といった意見もあったので、さらに距離を置こうと思います)

仕事関係


  • 早朝の配達のバイト
  • 専門学校の非常勤講師
  • Google Appsのアドバイザー→データの移行プログラム(βバージョン)の作成案件(?)
  • Androidアプリケーション/Chrome Extension/Google App Engineのアプリケーション開発
  • その他突発の社会人講師とか。

早朝のアルバイト自体は、悪くないと思っているのですが、1日に複数の仕事をやるようだと作業時間が長くなってしまって、開発もできないし、疲労もたまるし、それぞれの業務のクオリティが下がってしまうという事が発生してしまいました。(特に最近の授業は本当に生徒に迷惑をかけてしまっていると思います。すみません。)

よって、目標は「早朝のバイトを辞めても大丈夫な生活を作る」か、「早朝のバイトともう一つぐらいの仕事の生活をする」事を目標にしたいと思っています。

ただし、常駐系の作業をやってしまうとフットワークが悪くなるので考えどころ。
2月、3月は専門学校の授業もなくなるので、少なくとも3月ぐらいまで続けないとだめだろうなと
思っていますが、4月以降で何か策が出てこなければ、後者の作戦になりそうです。

ちなみに、Google Appsのアドバイザーは1月末で終わりです。

技術関係


  • Google Apps(無料版)をしっかり使う
  • Google+も主力にする
  • Go
  • AngularJS(HTML5 + CSSも)
  • blogをしっかり書く
  • 書籍も読む
  • なんか執筆(?)

2013年もGoogle技術を主体に進める予定ですが、Googleの副社長が「Microsoft Officeのユーザの9割を獲得するのが目標」なんて言っているようなので、だんだんとGoogle Appsの導入が増えてくるのでしょう。中国地方だと(私が知らないだけですが)Google Appsの使い手があまりいないので将来の導入で困っている人がいたら、最低限の手助けができる程度には利用しておきたいと思っています。
(まあ、無料版でどこまでfor Businessの機能が使えるのかは未知数ですが…)

次に、Google+を主力で今年も使おうと思っています。2012年も使ってきたのですが、どんどん新機能が導入されてカオスなので、すでにやばいですが、上手に使っていきたいと思います。
Twitterは「イベント時」、「告知」、「MensionやDMへの反応」以外にはROMしかしないようにするつもりです。

あとは、私の本来の目的である「Webを勉強する」という目的を達成するために、今年はGo(GAE/G)とAngularJSでWebアプリケーションを構築してみたいと思っています。(今の所、アイデアはないのですが、何らかの形で)

そして、blogを書くこと。技術的なメモとかがGoogle+に投稿したり、単に忙しかったりで投稿がおろそかになってしまっていたので、繁忙期以外はしっかりまとめていきたいと思います。

最後に書籍を読むこと。興味を持って購入したものの、全く読んでいないという状況が目に余るのでしっかり読んでいくつもりです。(今は「プログラミング言語Goフレーズブック」を読んでいます)
他にも「JUnit実践入門」とか、「Jenkins実践入門」なんていうユニットテスト系の書籍も購入したまま読めていないので読みます。

生活面

生活面ですが、やっぱり「スポーツクラブ」を活用することでしょう。
2012年は週4回ぐらいのペースでは通えたので、2013年もしっかり「風呂」として活用したいと思っています。
ただ、早朝のアルバイトを始めてから、夜遅くになるのはまずいと思い始めたことと、
肉体労働+運動になるので、肉体の疲労が蓄積しやすいことがデメリットになり始めました。

2013年も「下の上」な生活をしながら生き延びることにします。
(Bloggerに見出し機能があることに、やっと気がついた…。)