akms道東

ITイベント,勉強会への参加記録や趣味のことが書いてあるブログです.

YAPC::Asiaに初参加、あとLTしてきた #yapcasia

今更ですが8月29、30日の2日間開催されていたYAPC::Asiaに初めて参加してきまた。またLTしてきました。

1日目は参加することができなかったので、2日目からの参加でした。

当日は午前中から会場にいたのですがとても緊張していたので発表を聴きにいってもあまり頭に入ってきませんでした。
なので公開されている発表動画で復習してます。

以下に当日行ったLTのスライド載せておきます。
すぐ緊張するたちで、さらに会場は満員状態。
伝えたいことがちゃんとみなさんに伝わったか不安だったのですが、感想などをいただくと概ね伝わったかなと思いました。


最後になりましたが、運営スタッフのみなさまへYAPC初参加でしたがとても楽しかったです。ありがとうございました!

WordCount実装でGolang入門

久しぶりの更新は技術ネタです。

Golangはじめました

ちょうど勉強会でGolangの話を聴いて興味がわいたので触ってみた。
まずA Tour of Goというブラウザだけで学習できるチュートリアルから始めてみた。
その中で41ページ目(この表現であってるか微妙だが)にある、WordCount関数の実装問題がGolangの実装の入門にちょうど良いなと思った。

WordCount関数
func WordCount(s string) map[string]int {
    return map[string]int{"x": 1}
}

これがWordCount関数の初期状態。引数は文字列1つ。
キーが文字列で要素が数値のmapが返り値となっている。

とりあえず実装

下記はこの実装問題にたどり着くまでに行った演習と問題ページにあるヒントから単純に書いた回答。
これでも問題なく動作する。

func WordCount(s string) map[string]int {
    str := strings.Fields(s)
    m := make(map[string]int)
    for i := range str { 
      m[str[i]] += 1
    }
    return m
}

Golangでは『var hoge string = "fuga"』のように
var宣言、変数名、型、初期化子というように変数を宣言する。
また関数内では以下のように『:=』でvarの代わりに暗黙的な型宣言で代入ができる。
関数内だしvar宣言して書かなくていいならこっち使おうという安直な考えで記述。

str := strings.Fields(s)
m := make(map[string]int)

Golangでは繰り返し文はforのみ。
条件はwhileのような書き方もできる。また条件を指定しないと無限ループになる。
また今回のようにrangeを使うことで変数のインデックス分繰り返すといった処理ができる。
ここでも『:=』で代入。そしてループが終了するとmを返す。

for i := range str {
  m[str[i]] += 1
}
return m
リファクタリング

一度はこれで良いかと思ったが、動けば良いというものでは全く勉強にならない。
そこで改めて自分のコードを書き直してみた。

まず初めにword_mapというキーが文字列で要素が数値のmapを返すことを明示した。

func WordCount(s string) (word_map map[string]int) {

次に『:=』では『strings.Fields(s)』が何を返すのかリファレンスを見なければ確認できなかった。
そこで一目で分かるようにvar宣言、変数名、型、初期化子という形で記述した。

var str []string = strings.Fields(s)

rangeを使うと実は変数からインデックスと値の両方が返ってくる。
今回は処理的にインデックスは不要だった。
そこで『_』に代入することでインデックスを破棄し、値のみをループの中で使用した。
最後にreturnだけで終了してるが、前述の通りword_mapという
キーが文字列で要素が数値のmapを返すことを明示しているのでこの一行で終了することができる。

for _,key := range str {
   word_map[key] += 1
}
return 

以下はここまで説明したものを一つにまとめたものである。
一番最初に提示した回答例と違い、処理内容が初見でも理解しやすくなっていると思う。

func WordCount(s string) (word_map map[string]int) {
    var str []string = strings.Fields(s)
    word_map = make(map[string]int)
    for _,key := range str {
        word_map[key] += 1
    }
    return 
}

こうして一つ一つを理解していくなかでとくに『_』を使ったインデックスの破棄や、
最初に変数名と型を宣言しておくことで『return』と書くだけでその値が返ることなど面白いなと感じた。

今後の学習予定

とりあえずA Tour of Goを完了させる。
また今週末から来週にかけてGolangの勉強会に3回ほど参加する予定なのでとても楽しみだ。

上京しました

久しぶりの更新。とりあえず近況報告。

就職に伴い上京しました。

以下からは今まで参加したけどアウトプットできていなかった、北海道でのコミュニティ活動参加記録。
時期で言うと昨年末から3月までのまとめ。

昨年末

LOCAL学生部の総大会に参加してきました。札幌市内で1泊2日の開発合宿でした。
http://instagram.com/p/ids8uxt5Mq/
当日の宿
ぼくは後輩にPerl入学式の資料を使いながら、レクチャーをして2日間過ごしていました。
また同時にDMMWebAPIとMojoliciousを使って商品のフリーワード検索ができるサイトを構築しました。
2日目の成果発表では後輩が自分が学んだ成果をしっかりと発表している姿を見て嬉しく思いました。

LOCAL学生部の活動では道内の様々な学校の方々と交流ができ、とくにtomioがるとの出会いが
ぼくのコミュニティ活動をさらに楽しくしてくれました。

1月〜3月

1月、2月は釧路OSSでの活動が主でした。
3月1日に北見で開催されたOhotech特盛#8へ行ってきました。
http://instagram.com/p/k_Lvyrt5GK/
三度目の北見
当日の発表内容や参加者の方の感想はこちら。
またLT資料はこちら。

上京してからは、3月29日に開催されたPerl入学式 #6 補講と修了式に参加しました。
今まで自分で資料を見て学習していたPerl入学式にようやく参加でき、また修了式ではLTをしました。
LT資料はこちら。

今後の活動予定

未定。言語についての勉強会にちらほら参加するはず。
PerlとかRubyとかD言語の勉強会に参加してみたい。

釧路活動記【釧路 Advent Calendar 2013】

はじめに

この記事は釧路 Advent Calendar 2013の12月7日分の記事です。
6日のtomioの記事でさんざんdisられハードルを日高山脈ほどにあげられたタケウチが担当します。

今回の主旨

ぼくは帯広出身で釧路に住み始めたのは高専入学してからなので今年で7年目です。
住み始めてから4年くらいは釧路の端っこの大楽毛からほとんど出ずに生活してました。

なので今回は大楽毛から出ていろいろ行動するようになった、
釧路生活5年目から現在に至るまでを書きます。

釧路での生活

勉強会への参加

釧路生活5年目くらいから釧路OSSコミュニティ(以下釧路OSS)の活動に参加しています。
釧路OSSについては前日までの記事でちらほら出てきていますし、
今後の記事でも出てくると思うので割愛しますが、ぼくが学生のうちに社会人の方々との
コミュニケーションの取り方について学べる場でした。
http://instagram.com/p/g2uMVct5LM/
勉強会

今まで大楽毛近辺でしか活動せず、腐りかけていたぼくは勉強会に参加することで、
外に目を向ける事ができました。
道内だと北見や札幌、旭川のイベントに参加。また道外に出て東京などに行きいろいろな人と会い、
お話をすることで視野がどんどん広くなっていきました。

釧路でモチベーションを保つ難しさ

釧路生活6年目からは高専カンファレンスというイベントの企画、運営などの
活動にも積極的に参加するようになりました。
しかしこの頃から外に出て釧路に戻ってきた時なんとも言い表せない気持ちになることがありました。
そしてこの現象は7年目の現在も続いています。

簡単に言ってしまえばモチベーションの低下ですが、もっとモヤモヤした気分になります。
未だに自分でどうしてこうなるのかはっきりとはわからないので解決できません。

なので応急処置的にモチベーションを上げるのに、
釧路でこういうイベントができたら良いななど考えたりしています。

今、釧路でやりたいこと

最後に釧路でやってみたいことを少しだけですが書きます。

現在、釧路高専の学生が外に出て活動する機会が徐々にですが増えています。
そこでもっと外に出て活動する機会を増やすと同時に、他の高専生や大学生などと交流ができる場を
作れたら良いのではと考えています。

ぼくは外に出て活動することで、旭川高専や北見工大に同年代の友人ができ良い刺激を受けました。
学生が元気だと地域にも活気が出る。
そういった考えもあるので残り少ない釧路生活でやりたいことを実現したいです。

おわりに

明日は釧路OSSでも活動されていた志村さんの登場です!
ぼくが書いたのは7年間の学生生活でしたが、社会人の方の7年間は
いったいどのような記事になるのかとても楽しみです!!

最後まで読んでいただきありがとうございました。

OSC2013Hokkaidoに参加してきた #osc13do

開催日からかなり時間がたってしまいましたが、
今年も札幌で開催されたOSCに参加してきました。

今年は当日の朝に東京から札幌へ向かったので、少し遅刻して会場に到着。
昨年同様に今回も当日スタッフとして本当に少しですが、お仕事をしました。

また今年はLOCAL学生部としてブース出展にも参加しました。
LOCAL学生部主催のプログラムイベントの発表の場としてブースで作品を展示していました。

ぼくは以前作成したDMMのWeb APIを使ったスクリプトとCGIを利用してwebページを作成しました。
完成した作品の詳細については後日説明します。

さて今回のOSCHokkaidoでは特にセッションを聴く事はなく主にブースでお留守番をしていました。
そもそも参加した目的がブース出展と知り合いに会いに行くだったので、
その目的は達成できて満足でした。

最後に今年も参加できて楽しかったです。運営スタッフのみなさんありがとうございました。

LOCAL5周年パーティーに参加してきた

LOCALのみなさま5周年おめでとうございます

6月15日、札幌で開催されたLOCAL5周年パーティーに参加してきました。
釧路からの唯一の参加者であり、また学生も自分一人でしたがとても楽しかったです。
当日のパーティー開始時


パーティーではLOCALの今までの活動風景がスクリーンに投影されていたり、
LT神による基調LTなどがありました。
LOCALで活動してる人は知っていてもLOCAL自体がどのような活動をしてきたのか、
それを改めて知ることができたとても素晴らしいパーティーでした。

ぼくとLOCAL

LOCALの活動は3年前、さいとうさんの講演を学校で聴いた時に知りました。
その後釧路OSSの活動に参加していく中で、
LOCAL、LOCAL学生部の人たちと関わることが増えていきました。
特に学生部のメンバーは道内のさまざまな大学の学生で構成されていて、
高専生の自分にはとても新鮮なものでした。

ぼくのコミュニティ活動

ぼくが釧路でOSSコミュニティの活動に参加して約3年。
さまざまな人と会って、話しをして、学生のうちに社会人の方たちとの
関わりかたを学ぶことができました。
また、学んだものをこのようなカタチで活かすことができました。

ぼくは来年の4月からは東京で働き始めます。
でも心の中にはいつか北海道に戻りたいという気持ちがあります。
こういう気持ちがあるのはコミュニティ活動で出会った人たちの影響もあります。
なので、今後はぼくが影響を受けたように、学生に良い影響を与えてくれる
大人の人たちと後輩を引き合わせる活動をしていきたいです。

最後に改めてLOCAL5周年本当におめでとうございます。

DMMのWeb APIを使ってRubyの練習をしてみた

ゆーすけべーさんのブログを見て、気になったのでさっそく試してみた。

一から書けるほどRubyの実力がないので、練習としてゆーすけべーさんのPerlのスクリプトを翻訳するような形で書いてみた。

いろいろと試行錯誤して、完成したので下記に載せておきます。

完成したスクリプト

# -*- coding: utf-8 -*-                                                                                                                                                              

require 'open-uri'
require 'rexml/document'

url = "http://affiliate-api.dmm.com/?"
queries = []
word = URI.escape("成瀬心美".encode("euc-jp"))
time = URI.escape(Time.new.strftime('%F %T'))

params = {
  "api_id"       => 'your_api_id',
  "affiliate_id" => 'your_affiliate_id',
  "operation"    => 'ItemList',
  "version"      => '2.00',
  "timestamp"    => time,
  "site"         => 'DMM.co.jp',
  "service"      => 'digital',
  "floor"        => 'videoa',
  "sort"         => 'review',
  "keyword"      => word,
  "hits"         => 20
}

params.each_pair do |key,value|
  queries.push("#{key}=#{value}")
end

url += queries.join("&")
res = open(url)

REXML::Document.new(res).elements.each("response/result/items/item") do |element|
  p element.elements['title'].text
end

ちなみに実行結果はこんな感じです。

[akms@MacBook] ~
% ruby dmmserch.rb 
"憑依アイドル"
"ボインな彼女にめちゃモテ同棲生活 成瀬心美"
"残酷放尿地獄 〜全裸でM男に小便をかける変態GALここに集結!〜"
"アンモラル 〜継父に嵌められた母と私 〜ショートカットコスプレ編〜 成瀬心美"
"かわいい妹2人と夢の同棲性活 つぼみ 成瀬心美"
"小悪魔JK 大胆パンチラコレクション"
"OPPAIナーススペシャル ロリ中出し3時間40分"
"同級生にオモチャにされる夢の学校生活 2"
"恥ずかしい失禁 羞恥で溢れだすキャリアウーマンの泉 成瀬心美"
"後ろから女を犯す!バック激突き16時間"
"「女の口は嘘をつく。」 雌女ANTHOLOGY #071 成瀬心美"
"神咲詩織と成瀬心美のダブルドリーム"
"完全主観 ハーレム学園生活"
"完全主観 人生最大のモテ期がやってきた!"
"癒らし。 VOL.62 成瀬心美"
"絶対に手を出してはいけない相手を夜這いしちゃった俺"
"めざせ!!ドリームシャワー 成瀬心美"
"第3回 女子校生!妹-1グランプリ"
"20歳以上離れた娘の友達にホレられちゃった俺"
"挑発エロ尻 尻ずりで発射(イカ)されちゃった僕。"
[akms@MacBook] ~

ゆーすけべーさんのスクリプトと同様の結果が得られました。
ただ環境のせいなのか実行時間がちょっとかかるのがネックです。