2012年12月24日月曜日

Google+にCommunityを追加しました

技術の話題ではないですが
Google+にKobe GDGというCommunityを作成しました。

既にKobe GDGのページはあるのですが、
Community機能もリリースされたので使い始めた、という経緯です。

+dasu kuma  さんがMLで解説してくださっていますが、
Google+のページとCommunity機能は若干の違いがある模様ですので
どのように展開していくかは、使いながら考えて行くことに
なりそうですね...

以上、神戸支部 忘年会明けでぼーっとしている下田でした。

2012年11月17日土曜日

回転時にActivityを破棄させない方法


こんにちは。scarvizです。

AndroidのActivityは、端末回転時に縦レイアウト、横レイアウトの切り替えをするために、
一度破棄し、再生成されますよね。

でも、別に縦横関係ないアプリだと、Activityの破棄は色々問題を抱えてしまいます。
スレッド立ててると一緒に破棄しちゃうので、ちょっと大丈夫なの?的な。

回転自体を固定するようにAndroidManifestで指定することも出来ますが、固定が必要ないアプリの場合は、いまいち感があります。

回転は許可して、回転されると困る場合にのみ、回転を一時的にブロックするような処理を入れても、見た目の回転はなくなりますが、Activityは再生成されてしまいます。

そこで、android:configChanges属性を使って対応する方法があります。


2012年10月10日水曜日

Bloggerテク: 旧ブログに新しいブログの記事を動的リンクする

scarvizさんより「古いブログから新しいブログの更新を見えるようにしてほしい」
といわれたのでちょっといじって見ました。」

  本当はもっと人が来るようになって欲しいですが初めの一歩いうことで...

Bloggerにはたくさんのガジェットがありますが、今回使ったのは

- ブログへのリンク
- RSSの貼り付け

です。
RSSの貼り付けがずばりそのものということに気づいたのでぱぱっと終わりました。
新しいBloggerサイトのRSSを旧ブログにガジェット登録すればいいだけでした。

ものの5分でできてしまった...
なかなかBloggerは便利ですね。

  (標準のガジェットで見つからないことがあると手間なんでしょうけども)

普通にブログを書く方にとっては複雑なロジックを組むこともないので、
こういうのがいいのか...とZope使いとしては感じるのでした。

ちなみに、変更した旧ブログはこちらです。

  (旧ブログにトラフィックが流れるのは本位ではないですが、
  結果が見れないのもつまらないのでリンクしましたw)

2012年10月8日月曜日

手軽にAndroidのランチャーアイコンを作る


こんにちは。scarvizです。

みなさんはAndroidアプリを作ってて一番困ることってなんですか?
僕が一番困っているのはランチャーアイコンです。

どう実装しようか分からなかったり、うまくレイアウトが組めなかったりとか、そういうのもあると思うんですけど、調べたり試行錯誤で何とかとりあえずはできますよね。

ランチャーアイコンはアプリの顔になるんですけど、僕は個人の趣味でAndroidをやってるので、Photoshop買おうとも思えないですし、やりたいのは開発なので、絵の勉強しようとも思いません。

だからといって、デフォルトのランチャーアイコンのままではちょっと・・・なんて思ったりしてしまいます。

そこでSDKにはランチャーアイコンを手軽に作成できる「Android Icon Set」というものが用意されています。
今回はその「Android Icon Set」について紹介しようと思います。


2012年9月17日月曜日

第二回 Googleカレンダーの予定を編集する



こんにちは。scarvizです。

前回はGoogleカレンダーに予定を登録するところまで紹介しました。
http://kobegdg.blogspot.jp/2012/08/google.html

今回はGoogleカレンダーに登録した予定を編集する方法について紹介します。



2012年9月15日土曜日

ブログのアドレスを変更しました

ブログのアドレスをkobegtug.blogspot.jpから
kobegdg.blogspot.jpに変更しました :D

Bloggerのexport/import機能を使って
古いBloggerのサイトは残したまま、
同じ内容のBlogを作ってみました。

ブログの投稿は綺麗にimportできました :D
でも、レイアウトやGadgetは一から設定し直し orz

Chromeで編集してたのですが、
Chromeってメモリを使い過ぎるのかして
しょっちゅうChromeが固まって作業がしにくい...
今度はFirefoxかOperaか違うブラウザで試してみよう。


2012年9月8日土曜日

ロゴを更新しました

MLで進行していましたが、
ゆぅかさんがロゴを作ってくださいました。

カッコいい! です。ありがとうございます :D

2012年9月7日金曜日

go-uiでの画面レイアウト


こんにちは。scarvizです。

今回はgo-uiでの画面レイアウトについて色々試してみたので紹介します。

「(GOPATH)/src/github.com/visualfc/go-ui/examples」のサンプルとか、
「(GOPATH)/src/github.com/visualfc/go-ui/ui」のソースコードを参考にしました。



2012年9月3日月曜日

GoのIDE『GoClipse』を使う


こんにちは。scarvizです。

前々回でGo言語、前回でgo-uiの環境構築をしました。

前々回→http://kobegtug.blogspot.jp/2012/08/ubuntugo.html
前回→http://kobegtug.blogspot.jp/2012/08/qtgo.html

もう皆さん、意気揚々とGo言語で開発してると思うのですが、現代っ子な僕は、早くもテキストエディタでの開発に耐え切れなくなりました。
やっぱりIDEが欲しいですよね。

そこで、『GoClipse』というものを使ってみようと思います。
今回は『GoClipse』の環境構築を紹介します。

※開発に耐え切れなくなる以前に、GOPATHおかしくて開発自体ができなくなっていましたが・・・。
 ちなみに解決済みです。前回に修正入ってます。

※あと、前回Qt使えるようにしたので、QtCreatorを使わないの?って思った人もいるかもしれませんが、色々いじってみましたが、Go言語での開発ができなさそうだったので諦めました。
 もし「こうやったら出来るよ!」って知ってる人いたら教えてください!

※環境は前回、前々回と同じ、VMware PlayerのUbuntu12.04(x86)を使っています。
 なので、Go言語の環境構築が出来ている前提になります。


今回もGDG神戸のGo言語の先駆者であり、エバンジェリストのtitoi2さんのサイトを参考にしてます。
http://barsoom.seesaa.net/archives/20120706-1.html
ここではGAE/Goを扱ってますが、今回はGAE/Goについては触れていません。
もし興味がある方は、titoi2さんのサイトを参考にしてください。



2012年8月26日日曜日

QtでGo言語をするための環境構築


こんにちは。scarvizです。

昨日はGo言語の勉強会に参加しました!
takagigさんが早速ブログを更新していますね!
http://kobegtug.blogspot.jp/2012/08/go-workshop-in-dojima-20120825.html


前回、Go言語の環境構築をした時に、QtでGo言語をする話をしていましたが、今回はその環境構築をしてみました。
※前回の話→ http://kobegtug.blogspot.jp/2012/08/ubuntugo.html

環境は前回と同じ、VMware PlayerのUbuntu12.04(x86)を使っています。
なので、Go言語の環境構築が出来ている前提になります。

今回の環境構築にあたり、下記のtitoi2さんのサイトを参考にしています。
http://barsoom.seesaa.net/article/282348861.html

また、QtでGo言語をするためにはvisualfcさんが作られているgo-uiライブラリを使用しました。
https://github.com/visualfc/go-ui



2012年8月25日土曜日

Go Workshop in Dojima 2012/08/25

今日は、GDG神戸でGoの勉強会を開催しました。Goのスライスとマルチスレッドについて、じっくりと勉強できました。

アジェンダ



自己紹介タイム
@k* Go Androidに興味あり!
@s* Go/Qtに興味あり!
@m* Goの復権に興味あり!
@c* Goの扱いの悪さに不満あり!  
@t* プログラミング言語として面白い!
@k* マルチスレッドが簡単にできることに興味あり!
@t* Goを使っている人たちが面白い!

Go言語のスライスを理解しよう
用意していただいたサンプルをいじりながら、スライスの動きをまったりと確認していきました。スライスの考え方や容量の取り扱いなども分かって面白かったです。

サンプルコード
https://github.com/kwmt/120825_GDGKOBE_GO/tree/master/example

プレゼン資料(keynoteけ)
https://docs.google.com/file/d/0B5uKRpWwrG8PVldlQW5QX0M1MDQ/edit

マルチスレッドで遊ぼう
http://play.golang.org/を使ってサンプルを操作していきました。ゴルーチンの動きをソースコードを弄りながら確認していきました。チャネルを使った同期や非同期の処理をわ分かりやすく解説していただきました。

プレゼン資料
http://www.slideshare.net/titoi2/gdggo20120825

以上です。次回もよろしくお願いいたします。

2012年8月15日水曜日

UbuntuでGo言語の環境構築


こんにちは。scarvizです。

来週の8月25日(土)には神戸GDGの勉強会『Go言語勉強会+もくもく会』があります。
http://goo.gl/yXYVw

ということで、Go言語の環境構築をしてみました。
僕は普段Windowsを使ってるのですが、Linuxの方が後々色々出来るので、
Ubuntu12.04(x86)にGo言語の環境構築をしてみました。
ちなみにUbuntu12.04はVMware Playerで動かしてます。
※やしさん(@kwmt27)に教えてもらいました!ありがとうございます!勉強会でもスライスについて教えてもらえるそうですよ。

※後々色々出来る中にQtでGo言語をするってのがあります。下記のtitoi2さんのサイトが参考になります。
http://barsoom.seesaa.net/article/282348861.html
titoi2さんは勉強会でマルチスレッドについてのハンズオンをしてくれるそうですよ。


2012年8月14日火曜日

第一回 Googleカレンダーを利用する


こんにちは。scarvizです。

皆さんはGoogleカレンダーって使ってますか?

GoogleカレンダーはWeb上で、自分の予定やTODOタスクを管理できるだけじゃなく、
友人や同僚などで予定を共有することもできる便利なカレンダーです。

また、AndroidやiPhoneでも、ジョルテなどのGoogleカレンダーを利用できるカレンダーアプリがあり、簡単に同期させて利用することが出来きます。
※iPhoneの標準カレンダーでも利用可能。共有カレンダーを表示させるには、少しだけ手順があります。

Googleカレンダーは以下から利用できます。※Googleアカウントでログインしてください。
https://www.google.com/calendar/render

すごく便利なんですけど、ヘルプがめちゃくちゃ分かり難いというか、
知りたい機能について全然書いてなかったりするんですよね。

Googleカレンダーのヘルプは以下になります。
http://support.google.com/calendar/?hl=ja


もうGTUGじゃなくGDGになっちゃったので、GoogleカレンダーAPIとか試してみたりした方がいいのかもしれないんですけど、僕も何度か試してみて、ちょっとずつ分かってきたかなって感じなので、備忘録も兼ねて、少し書き残していこうかなと思っています。


2012年5月18日金曜日

すからじおに参加しました :D

しもだです。

今週は2週ぶりに「すからじお」に参加しました。
この「すからじお」はGoogle Hangoutを活用して
毎週(!)水曜日に行われているオンラインの勉強会です。

とりあえず最新回::


あとはyoutubeで「すからじお」で検索すれば第3期はでてきます。

また当日参加したい方は、以下のgoogle+のページをご覧ください。

>> https://plus.google.com/u/0/117636937254190602510



ところでこの勉強会、第3期は先日で終了しました。
なんか紹介しようと思いたった時には終了していたという...マヌケですいません。
続報があれば紹介します。

  (4期はすでに始まっています: 5/27)

また、この勉強会はAndroidの会 神戸支部のscarvizさんが
運営されているのですが、広がりを見せておりまして
京都支部でも「ソースを読む会」というのがハングアウトを使って
実践されております。

ハングアウトは使いやすいようで
他の方もばんばん活用されているみたいです。

さぁあなたもGoogle+から友達をさそって
簡単にビデオミーティングしてみませんか?w

2012年4月13日金曜日

kyoto.vimに参加してきました

しもだです。

kyoto.vimというイベントに参加してきました。
vimはUnix系プログラマ御用達のEditorです。

今ではWindowsでも常用している方が多く、
便利な使い方を共有しようというイベントでした。
そこでGTUGっぽいものが一つありましたので報告します。

kyoto.vimの主催者であるnaoinaさんの発表で
SyntasticというVimプラグインが紹介されました。

Syntasticはvimで編集中のソースコードに
外部のLint、コンパイラなどを適用し、
そのエラー出力結果をエディタ中に表示してくれるという優れものです。

で、その特徴は多言語への対応なのですが
JavaScriptの標準のLintチェッカーがgjslintという
GoogleのLintチェッカーでした。

# この辺がGTUGぽいところ (^^;

というわけで、下にエラー表示している例を示します。
使い方を知りたいというリクエストがあればもう少し解説します。

本日は以上です :D


※下の行に出ているのが(Lint)エラーの内容です。
  もう一つ下にもエラーが出ていますが、理由はなぜかは各自想像してくださいw

2012年3月26日月曜日

タイトルを更新しました

先月にゆぅかさんが、作成してくださった
Kobe GTUGの画像をタイトルに設定してみました。


うん、かっこいいです!

2012年3月13日火曜日

GAE勉強会 2012/02/25 -- GAEをはじめよう~今更って言わないで~

yuka2py です。こんにちわ。2/26、大阪堂島のサントリー様にて行われた、神戸GTUGによる Google App Engine 勉強会のレポートです。今回は、GAE 上で利用できる3つの言語を比較して、コーディング方法がどのように変わるのかを確認することを通じて、初心者の方には GAE 利用のヒントやきっかけになること、また既に個別の言語などで利用されている方には、他言語への興味や可能性に繋がればということで開催されました。

開催日時:
2012年2月26日 土曜日
14:00~18:00

講師:
takagig さん(@takagig)Java
下田さん(@kuri65536)Python
ちいといつ さん(@titoi2)Go

 本稿の目次:

ところで、この日は開始前からハプニングです。Python の解説をしていただく下田さんが、突然のご病気で自宅から出れないとのこと。しかしそこは GTUG です。下田さんには、自宅から Google+ Hangouts で解説!してもらうことになりました。すごい! さてどうなることか。

また、開始前にちょっとしたアンケートを取りました。「GAE するにあたって、使ってみたい言語は?」結果、Java が多勢、Python 少々(2〜3人?)、Go ゼロということで、さすが Go 言語。ニューフェースだけに人気薄。講師のちいといつさんも苦笑いです♪






Java で GAE


まずは Javaです。講師の takagig さんから、スライドを見ながら、GAEの概要説明。昨今色々な Cloud 環境が出て来ていますし、GAE についても色々な議論があるようですが、やはり魅力的な環境であることに違いは無いかと思います。個人的には、なんとなく玄人っぽくて、かなり好きな方です♪

スライド:
http://www.slideshare.net/takagig/kobegtug-gaejava


環境構築:
それから Java/GAE の環境構築。ごくごく簡単に書くと、Java/GAE の環境構築は次の手順になります(詳しくはコチラで):
  1. GAE サイトで、Eclipse プラグインの url を見つけて
  2. Help > Install New Software から、
  3. 1で調べた url を追加して、Select All でインストール!
あと、JDK のインストールも忘れずに(僕は忘れてた)。 で、まー簡単。サクッと入る筈なんですが、なかなかどうして、環境構築ってハマりがちですよね。アチコチで苦悩のうめき声があがります♪(ちなみに僕もJDK入れ忘れてて、かつネットが遅くて「あと5時間です」って言われて Java のサンプル動かすのオワタのは内緒ですww)。さてさて、今回テーマにしたサンプルの動作は次のような感じです:

サンプルの概要(各言語共通):
サンプル実行画面
  1. Datastore からデータを取得して、一覧表示
  2. フォームからメッセージを投稿し、Datastore へ保存
シンプルですね! 今日はこれがどのように各言語で異なるか見ていきます。

皆さん環境構築やら、takagig さんから配布されたサンプルコードの動作を試す傍ら、サンプルの動作や仕組みについて takagig さんからスライドを用いて解説…ですが、実は僕は環境構築にアタフタしててあまり解説を聞けてなかったです…。すみません! …そんな感じでとても申し訳ないですが、僕が感じた Java/GAE に関する感想は次の通り:

Java/GAE 環境の特徴:
  • サーブレット標準やJDOが使えるし、Javaer には馴染みがある筈(当たり前か)
  • 当然というか、他の言語に比べ、ファイル数やコード量は多い(Javaだしネ!)
  • そしてコードもどうしても冗長
  • でも、Eclipse を使えば、高度なサポートがあって魅力
  • Datastore のアクセスに Low-Level API とかある(Pythonには無いですよね?)。難しいと思ってたけど、PHPで pg_xxxx 使うのと似てる。これ使える♪
  • Slim3 などの優れた MVC フレームワークも存在しているし、標準のサーブレットを構成するより、そっちの方が良いらしい(今回のサンプルは違うけど)
それでは、雰囲気を見てもらうためのサンプルです。なお以下に掲載するコードは、実際に勉強会で用いられたサンプルとは異なります。3言語を比較しやすくする為、なるべくシンプルに共通の構成に編集したものです。実際に勉強会で使われたサンプルは、もっと色々と各言語の特徴と、講師陣の個性が現れておりますので、興味をもたれた方はそちらも是非参考にしてください。

サンプルコード(Datastore周りまとめ版):
//モデルの定義(JDO使用)
@PersistenceCapable
public class Post {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

@Persistent
private String message;

@Persistent
private Date date;

public Post(String message, Date date) {
this.message = message;
this.date = date;
}
public Key getKey() {
return key;
}
public String getMessage() {
return this.message;
}
public Date getDate() {
return this.date;
}
public void setMessage(String message) {
this.message = message;
}
public void setDate(Date date) {
this.date = date;
}
}

//リクエストハンドラ
@SuppressWarnings("serial")
public class SampleServlet extends HttpServlet {

//メッセージ一覧と投稿フォームの表示
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/html");
PrintWriter w = resp.getWriter();
w.println("<html><head><title>Java</title><body>");

//メッセージ一覧の取得と表示
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery(Post.class);
query.setOrdering("date desc"); //日付降順でソート
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss ");
@SuppressWarnings("unchecked")
List<Post> posts = (List<Post>) query.execute();
if (!posts.isEmpty()) {
for (Post p : posts) {
w.print(dateFormat.format(p.getDate()));
w.print(p.getMessage());
w.println("<br />");
}
}
} finally {
query.closeAll();
}

//投稿フォームの表示
w.println("<form method='post'>");
w.println("<div><textarea name='message' rows='3' cols='60'></textarea></div>");
w.println("<div><input type='submit' value='Send'></div>");
w.println("</form>");
w.println("</body></html>");
}

//投稿処理
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String message = req.getParameter("message");
Post post = new Post(message, new Date());
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(post);
} finally {
pm.close();
}
resp.sendRedirect("/"); //一覧画面へリダイレクト
}

}
サンプルコード(勉強会使用分の一部):
http://code.google.com/p/kobe-samples/source/browse/trunk/GoogleAppEngineSample001/SampleServlet.java
  • Datesotre Low-Level API を利用
  • テンプレートに JSP の利用


Python で GAE

少しの休憩をはさんで、まだ Java 熱冷めやらぬ中、そろそろ Python… の声があがって下田さんの登場です。急病で自宅から Google+ Hangouts での解説です。すごい執念です。takagig さんが Hangouts のセットアップをして…ぉお、下田さんの声が聞こえます。やや小さいか…。まぁ、突然のことなので仕方ないですね (; ^ω^)。

スライド:
http://gtugdemo.pysandboxjp.appspot.com/html/Handson-kobegtug-gaepython-120225.html

環境構築:
まず環境構築。Python の環境構築は OS によってかなり異なるようです。下田さんの解説は Linux でしたが、会場は Windows or Mac ばかりです。僕は Mac でしたが、SDKをダウンロードしたらアプリが一つ出て来て、[Run] ボタン押してフニフニしてたら実行できました。パスを通すとか、SDK展開してモリモリとか無かったです。Windows も似たものらしいです。Linux もアーカイブを解凍するだけでだいたい OK みたいですが、パスとか通したらいいかも。まあ、Linux 使う方は大丈夫ですね♪ …とにかくいずれもそんなに難しくないということで、SDKは以下からダウンロードできます!(…と、内容薄くてすみません! 詳しくはコチラで)

Python環境の特徴:
Python はデータ型などの初歩から解説して頂きました。Python ユーザーは少ないだけにありがたい配慮ですね! Python 基礎を一通りさらってから、サンプルアプリの解説。下田さんのサンプルは、Google 認証なども取り込んで、ややリッチな仕上がりになっていたと思います。Google 認証について詳しくは解説のスライドをご覧ください。
  • Pythonらしく直感的でシンプルな記述ができる
  • 標準でシンプルな webapp フレームワークや、Django などの高級な WebApplicationフレームワークもそのまま使える
  • 扱いやすく、バリデーションの機能なども備えたモデルが使える
  • Java に比べると Spin-up が早い(らしい。slim3 と比べたらどうだろ?)
  • Eclipse でも PyDev などで開発は可能。ただし動的言語だし、Javaほど優れたサポートは無い

サンプルコード(会場使用分):
https://bitbucket.org/kuri65536/kobegtug1/get/tip.zip
  • Google Users API の利用
  • Django テンプレートの利用


サンプルコード(Datastore周りまとめ版):
#モデルの定義
class Post(db.Model):
message = db.StringProperty()
date = db.DateTimeProperty()

#リクエストハンドラ
class PostAction(webapp.RequestHandler):
#投稿一覧と投稿フォームの表示
def get(self):
out = self.response.out.write
out("<html><head></head><body>")

#メッセージ一覧の取得と表示
posts = Post.all()
posts.order("-date") #日付降順でソート
for post in posts:
out(post.date.strftime("%Y-%m-%d %H:%M:%S: "))
out(post.message)
out('<br />')

#投稿フォームの表示
out('<form method="post">')
out('<div><textarea name="message" rows="3" cols="60"></textarea></div>')
out('<div><input type="submit" value="Send"></div>')
out('</form>')
out('</body></html>')


#投稿処理
def post( self ):
post = Post()
post.date = datetime.today()
post.message = self.request.get('content')
post.put()
self.redirect('/') //一覧画面へリダイレクト



Go で GAE

ちょっと押し気味で Go 言語開始。プロペラブのちいといつさん登場です。いつも通りの軽妙トークでサクサクと進行して頂きました。まずは環境構築。まだ Windows 用の環境は無いため、Windows の方は VM 使ったりして取り組んでおられたみたいです。手順はざっと次の通り:

環境構築:
  1. GAE サイトで、自分の環境にあったSDKをダウンロード:
    http://code.google.com/intl/en/appengine/downloads.html#Google_App_Engine_SDK_for_Go
  2. 適当な場所に展開して、SDK のトップディレクトリに PATH を通す。
たぶん Python の Linux 環境とほぼ同じ手順ですね(詳しくはコチラで)。特に難しいところは無い筈ですが、僕自身は GAE の開発サーバーを起動する時に、Python 環境のサーバーと被ったりしててしばらく上手く行かなかったです。結局、サーバースクリプトをフルパスで起動したら動きました。パス周りは後で整理しなきゃ、です。さて、Go/GAE 環境についての僕なりの感想は次のような感じです:

Go環境の特徴:
  • Javaに比べるとシンプルな記述
  • APIもシンプルに出来ているみたい(まだ整備されていないだけか?)
  • たぶん手頃なWebアプリケーションフレームワークもまだ出て来ていない?(どなたかご存知ならコメントください)
  • Go 言語については、コチラの記事もどうぞーです。
今回のサンプルの範囲では、Go 言語の特徴的な点があまり発揮されない感じだったですね。Go 言語が一体どういった利用シーンに向いているのか、また近いうちに ちいといつさんに聞いてみたいです。会場で使用したスライドやソースコードは、次に置いてあります:

スライド & 会場使用分のサンプルコード:
https://docs.google.com/#folders/0Bxy7Z3pBFtUONkhDLUNQdmVSZ21YNWsxTXZ5ZHowdw

サンプルコード(Datastore周りまとめ版):
//モデルの定義
type Post struct {
Message string //型は後ろに書く。先頭大文字がpublic
Date datastore.Time
}

//メッセージ一覧と投稿フォームの表示
func getList(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.Write([]byte(`<html><head><title>Go</title></head><body>`))

//メッセージ一覧の取得と表示
c := appengine.NewContext(r)
q := datastore.NewQuery("Posts")
q.Order("-Date") //日付降順でソート
count, err := q.Count(c) //Goは関数が複数値を返せる
if err != nil { }
posts := make([]Post, 0, count) //Goのデータ型の1つ、slice の初期化
_, err = q.GetAll(c, &posts)
if err != nil { }
for _, post := range posts {
date := time.SecondsToLocalTime(int64(post.Date) / 1000000)
datestr := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d",
date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second)
wk := fmt.Sprintf("%s: %s<br />", datestr, post.Message)
w.Write([]byte(wk))
}

//投稿フォームの表示
w.Write([]byte(`<form action="register" method="post">`))
w.Write([]byte(`<div><textarea name="message" rows="3" cols="60"></textarea></div>`))
w.Write([]byte(`<div><input type="submit" value="Send"></div>`))
w.Write([]byte(`</form>`))
w.Write([]byte(`</body></html>`))
}

//投稿処理
func putPost(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
var post Post
post.Message = r.FormValue("message")
post.Date = datastore.SecondsToTime(time.Seconds())
_, err := datastore.Put(c, datastore.NewIncompleteKey(c, "Posts", nil), &post)
if err != nil { }
http.Redirect(w, r, "/", http.StatusFound) //一覧画面へリダイレクト
}
ところで、ちいといつさんご用意ので、サンプルプログラムを実行するとコンパイルエラー。ちいといつさんに伺うと、なんでも理解を深めるために意図的に仕組んだそうで...ww Σ(゚Д゚;)!イジワル… 



[LT] シーケンサーを作ってみた!

飛び込み?で @esperia09 さんが GAE と HTML5 を駆使した Web シーケンサーを紹介して頂きました。確かお風呂で思いつかれて半日で作られたとか。スゴスです。機能を簡単に紹介すると次のような感じになります。
  • リズムシーケンサーみたいな画面
  • マトリックスをクリックしてドットを置くと、音が鳴る
  • ドラムパターンを作ったら、共有ボタンで世界に共有!
  • Java/GAE + Slim3 を利用
  • Web Audio API を利用
  • 半日で作った!



まとめ、気づいたこと、雑感

個人的な感想になってしまいますが、自分自身が Python を GAE で覚えたため、一番 Python をひいき目に見てしまいまして、やっぱり簡単に小さなものを作るのなら、Python かなーと思いました。ただ、大きなアプリケーションになるのであれば、Java で Slim3 などの Web Application Framework を利用するのがやっぱり良さそうにも思います。Eclipse 上でのコーディングを考えるなら、やっぱり Java が一番楽を出来そうに思うもので。Go言語は「これからの言語」には違いないかと思いますが、たぶん、ちゃんと組めれば、最も GAE 環境の恩恵を享受できる言語なんじゃないかと思っています。例えば小さなリクエストを大量に処理するとか、得意そうですよね。ということで、それぞれの環境について、誤解を恐れずに(あるいは誤解が含まれていることを恐れずに)僕の感想をまとめると、次のようになりました:
  • Java -- 小〜大まで、Javaらしくキッチリとアプリを作れるゾ!
  • Python -- 小さめのアプリならスピーディーに作れるゾ!
  • Go -- ちゃんと作れたら最速だゾ!これからのHTML5的なWebApp向き?
(めっさ乱暴ですみません (^_^;A


その他、参加者の皆さんの感想やコメントを以下にまとめてみました:
  • Cloud SQL って何だ?(takagig さんがしきりに言ってた)
  • Java/GAE の開発環境構築は、Eclipse の Install New Software から超ー簡単にできる!
  • Eclipse にプラグインインストールしたら再起動しておかないとw
  • EclipseはSDKをインストールしたら再起動が重要!
  • Eclipse で Javaの時、別のWebアプリ実行する場合は、一度サーバー停止しないとNG。Eclipse のコンソールの右上の方に赤い四角い停止ボタンがあるよ♪
  • Go言語構造体のメンバ編集は、大文字から始めたら public!! なんて不思議な!
  • Python と Goの GAE 開発環境は共存させるのには工夫が要りそう!


§ 謝辞

最後になりましたが、 本勉強会に会場をご提供いただいたサントリーさま、本当にありがとうございました!



2012年3月1日木曜日

今から始めるGAE/J 1回目 環境構築

こんばんは。
scarvizです。

さっそくサボりまくっていました。
そろそろ本気出す。

ということで、先日は神戸GTUGのGAE勉強会に参加してきました!
そこで教えてもらったことと、実際に自分で開発環境を作ったので、それらを今回は書いていきますね。


2012年2月7日火曜日

Go言語勉強会 第1回 2012/01/31

yuka2py です。こんにちわ。1/31(火) 、神戸情報大学院大学様にて行われた、第1回Go言語勉強会の報告です! 今回、講師に titoi2 先生を迎え、平日夜のお仕事帰りタイムの19:00~21:00 に開催されました(個人的には参加しやすくて嬉しい設定ですw)。


開催日時:
2012年1月31日 火曜日
19:00~21:00

講師:
ちいといつ さん(@titoi2)


アジェンダ:
19:00~19:05  KIC様のご紹介
19:05~19:15  神戸GTUGのご紹介
19:15~19:30  自己紹介タイム
19:30~20:00  Go言語とは
20:00~20:55  Go言語の旅に出よう『A Tour of Go』
20:55~21:00  お片づけ



まずは、KIC様からのご挨拶、そして参加者自己紹介。
さすが Go 言語がテーマとあって、言語マニアな方が多く参加されておられますネー。Python好きもチラホラ。嬉し恥ずかしですw

そして勉強会本編かいし。
はじめに講師の titoi2 先生より、Go言語の概説を頂きました。
↓はそのスライドです。

Go言語の特徴:
  • シンプル
  • 速い
  • 安全
  • 並列処理
  • 楽しい!
  • オープンソース

Go言語のポイント:
  • ポインタ(でもポインタ演算は無い)
  • Pascal風の宣言構文(型は後ろ!)
  • ダックタイピング(でも型は厳密)
  • スライス等の参照型
  • 並列処理(Goルーチン。JavaやCの並列処理よりも簡単)

開発環境、情報なども少しずつ整備されているようです。
詳しくはスライド内のリンクや下記の資料・参考サイトなどを参照ください。

概説の後、今度は実際に手を動かしてGo言語に触れてみます。
今回の教材となったのは、次のチュートリアルです。

Go言語の旅に出よう『A Tour of Go』

このチュートリアル、シンプルで楽しいです。Webブラウザ上でコードを書いて、[RUN] ボタンですぐに実行もできるし、解説もすぐ横に書いてあり、分かりやすいです。言語の基本的なところを順番に進んでいくので、Go言語にちょっとでも興味のある方は、是非一度試してみて頂ければと思います。

勉強会では、titoi2 さんの解説のもとに、ぽんぽんぽぽんとページを捲っていきました。
以下、個人的に面白いな、いいな、特徴的だな、と思った点:
  • クラスが無い!(構造体はある。構造体にメソッドは付けれる)
  • 例外が無い!(代わりに関数戻り値にエラーフラグなどを返す?)
  • メソッドのオーバーロードが無い!(今後も?)
  • ジェネリックスも無い!(今のところ?)
  • 型は結構厳密(配列も同じ要素を扱っても、要素数が異なれば別の型)
  • パッケージのインポート周りは Python っぽい
  • 戻り値パラメータ(関数の戻り値で複数の値を返せる。エラーフラグなども)
  • if の条件式の前に短い文が書ける(変数スコープの限定とその値の再利用の為)
  • 型推論
  • make と new による2種類の割当て
  • 配列は値型(実際には配列をラップする参照型の Slice をよく利用するらしい)
  • 組み込みの複素数型
  • インデントはタブ
  • 構造体リテラル、mapリテラルなど

この日は、チュートリアルの Map の終わりまで進み、Slice あたりからは次回へ続く、となりました。Slice や Map はGo言語のデータ構造の大きな特徴かと思いますので、次回からこそ、本番!って感じかと思います。この日は質問も多数出て、楽しみながら、新しい興味へと続く良い機会となったかと思います。次回も楽しみですー♪

Go言語に興味のある方も、そうで無い方も、ちょっと面白そうな言語ですので、一度触れてみられたらと思います! 現状、業務での使いどころというとなかなか難しい言語かも知れませんが、色んな言語のポリシーや記法、考え方などを知る事で、普段の業務の中にも応用できる、新しい何がしかのヒントに繋がるかも知れません。





§ 資料


§ 参考サイト


§ 開発実行環境

§ 謝辞

本勉強会に会場をご提供いただいた神戸情報大学院大学さま、また運営にご協力を頂いた教授、生徒の皆様、ありがとうございました!

神戸情報大学院大学
〒650-0001 神戸市中央区加納町2-2-7
http://www.kic.ac.jp/access/index.html


2012年2月4日土曜日

Global Android Dev Camp 2012(2/17~2/19)が開催されます

しもだです。
世界各地の40箇所で開催されるAndroid Dev Campという
イベントが京都で開催されます。神戸GTUGも協催です :D

https://sites.google.com/a/kyoto-gtug.org/home/global-android-dev-camp-in-kyoto

公式ブログなんですが、

Global Android Dev Camp 2012
http://android-dev-camp-2012.blogspot.com/

英語はななめ読みして面白いのはこちら >

http://maps.google.de/maps/ms?msid=210873685993344372618.0004b62d7f2771ff19cb3&msa=0&ll=33.72434,3.515625&spn=148.073276,12.304687

おぉなんと日本では京都開催だけ? (登録されてないだけかな?)
なんかすごいですね。

みなさん盛り上がっていきたいですね! ではでは

2012年2月2日木曜日

すからじおにまた参加(しもだ

しもだです。すからじおにまた参加しました



そもそもAndriodの本を持っているのが前提となっている

このすからじおですが、問題に対して深堀りしていく内容を
聞くのは本とは別に非常に参考になります。

# お前はいつになったら本を買うんだというのは置いておいて :(
# 本がないと内容がわからない時もあるので
# 今日はGAEのアプリを組みながら聞かせていただいたのです...

宿題がなくなり、時間を30分に凝縮されたようです。
ぐっと参加しやすくなったと思ってます :D

それと先週から「夜子まま塾オンライン」も
すからじおの後の30分で始まっています。
あの夜子ままさんに質問するチャンスですよ!


皆さんもお気軽に参加されてはいかがでしょうか。ではでは。

2012年1月26日木曜日

JAG kobeのすからじおに参加しました

今日は3期に向けての話し合いが行われました。

来週から今までの方式とは少しやり方が変わるようです :D

ちょくちょく参加させてもらっていますが、
ツールがhangoutになったり、youtubeで公開できないか検討したり
普段あまり検討しない話なので刺激が多いです。

オンラインで地方の方でも気軽に参加できるので
一度参加されてみてはいかがでしょうか!

参加の方法はMLでアナウンスされると思います。

2012年1月14日土曜日

はじめまして。しもだもスタートです

こんにちは、はじめまして。
しもだと申します。

書くことがないのでこれからのネタを少し触れておきます :D

GTUG KOBEの活動は2/25の予定です。
GAE/Python説明を予定しています。

といっても私のスキルは
このようなテスト用のサイトを
作ったまでですが...

というわけでいつも勉強させてもらっているので
pythonという言語自体の話も
触れさせてもらおうかと思います。


他にGTUG的な話題ですと
google-data-apiのpythonモジュールは使ったことがあります。
カレンダーを取ってくるところまでです。
こちらはおいおいお話しようと思います。


もう一つ、開発の話ではないですがXBOX360に
youtubeアプリが着たのでちょっとうれしいです。
メニューからはほとんど外国のムービーしかたどれませんがw

私のチャンネルはkuri65536です.

のんびり活動に参加してます。
今後ともよろしくお願いします :D

GAE/Jはじめました

こんにちは。
scarvizです。
ブログ初投稿です。

今年はというか、今年こそはGAEをやろうと思ってます!

GAEってJavaとかPythonとかGoとかで出来るので、
どの言語使おうかなって考えてたんですけど、
本屋さんで↓こんなの見つけました。

ネクタイドロイドくん!!




仕事でAndroidしてるわけではないんですが、軽く目を通してみたら、
丁寧に書いてるなというイメージだったので、さっそく購入してみました。

ということで、Java使ってGAEやります!
GAE/Jって書くそうですね。
(Pythonはしもださんやってるし、Goはtitoi2さんやるだろうから、ちょうどいいかも?)

ここのブログにどんな事したとか、こんな感じだったとか、僕と同じく今から始める人のために、
色々書いていこうかなとか思っています。

『今から始める 周回遅れのGAE/J』とか
『すかこうざ GAE/J』とか
そんなタイトルで。

不定期更新でゆるーくやっていきますね。
よろしくお願いします!