2012年を振り返るエントリ。前編は転職について書きました。
後編は、今年一年のコミュニティとか、勉強会活動とかプライベートについて。
■1月
12月に今の会社の内定をもらい、1月31日までが前職の勤務でした。
この月は勉強会は行ってなかったですね。本当は有休を消化したかったのですが、いろいろ理由もあって、27日まで前職の仕事をしていました。
転職エントリを書いたり、新卒で入った会社の社長さんが転職するという話を聞きつけてお祝いしてくださったり、the HIATUSのライブに行ったりしてました。
■2月
1日付けでフリュー株式会社に入社しました。
勉強会としては、以下の2つに参加しました。
・鍋駆動勉強会 (hoge駆動)
・勉強会初心者のための勉強会(2012年春の陣)
まだ転職直後だったので、この頃は新しい会社に馴染むのに必死でした。
■3月
勉強会参加は無し。
鹿駆動とか、関数型勉強会の準備をしてました。
やはり転職直後でしたので、プライベートにそれほどリソースをつぎ込む余裕はなかったです。と思ったけど、カレンダーを見たら友だちの名古屋マラソンの応援に行ったり、飲み屋の4sqチェックインがやたら多かったり、遊んでますねw
■4月
・Tech readers!! #3
・プログラマズナイト
・鹿駆動勉強会(hoge駆動)
今年のハイライトと言ってもいい、鹿駆動勉強会ですね。
500人キャパの能楽堂でLT大会とか、人類史上最初で最後のイベントだったと思います。
@ITさんで記事にもしていただきました。
世界遺産でIT勉強会を開催する方法――場所駆動勉強会のススメ
■5月
・オープンセミナー岡山@2012
・第1回関数型言語勉強会勉強会 大阪
大都会岡山の勉強会初参加。むちゃくちゃ楽しかったです。
関数型言語勉強会は、主催者という立場だったのですが、仕事が立てこんで参加できませんでした…。
■6月
hoge駆動メンバーで@backpaper0さんの結婚式の2次会に呼んでいただきました。
あとはエンジニアライフのオフ会に行ったりしましたね。
■7月
社員旅行でマカオに行きました。
・第3回 playframework 勉強会
今年の下半期の自分の発表テーマとなる、「乙女ゲーを支える技術」の初演でした。
■8月
勉強会参加は無し。
フェスに行ったり、夏を満喫してました。
■9月
勉強会参加は無し。
@mumoshuさんが執筆されたWEB+DB Pressのレビューをさせていただいてました。
■10月
・ITコミュニティ秋祭り リターンズ
・関西Javaエンジニアの会 '12 10月度
・やきに駆動2.0 (hoge駆動)
忙しかったですね。個人的にはITコミュニティ祭りが印象深いです。
カルカルさんでのイベントは、ぜひまたやりたいです。
■11月
・DevLOVE関西
・PlayFramework関西ビギナーズ
・第2回関数型言語勉強会 大阪
仕事にも慣れ、この頃はScalaなどの自分が新しい職場で扱う技術についての布教活動を熱心にやってます。
この辺りの活動は今後もこだわってやっていきたいです。
あとはエンジニアライフのエントリが週間・月間ランキング1位になり、@IT全体のランキングでも2位なったり、コラムニストとしての活動に一つの結果が出た時期でした。
■12月
・関西Javaエンジニアの会スペシャル! JavaOne2012
・合同勉強会in大都会岡山 -2012 Winter -
・Scala関西ビギナーズ
・忘年会駆動(hoge駆動)
こしてみると、10月以降、勉強会行きまくってんな。
■2013年
今のところ、参加が決まってる来年のイベントはこんな感じ。
・TDDBC 大阪 for C#
・勉強会勉強会 (2月)
公募セッションの申し込みをして当落待ちのもの
・Scala Conference in Japan 2013
やりたいなーと妄想中のもの
・第3回関数型言語勉強会
・鹿駆動みたいなアホな大規模イベント (hoge駆動カンファレンス的な)
関数型言語勉強会は、いつも50人がすぐに満席になってしまうので、100人くらいの会場で規模をもっと大きくしてやりたいです。
あとはぼくの夢なのですが、雅叙園のデブサミに呼んでもらえるようなエンジニアになりたいですね。
来年もよい年になりますように。良いお年を!
当ブログはamazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。
2012年12月31日月曜日
2012年12月24日月曜日
2012年を振り返る(前編) - 転職してどうだった? -
さて、年の瀬です。去年も1年間の活動を振り返ってみましたが、せっかくなので今年も振り返ろうとおもいます。
今年は、転職という大きなトピックがあったので、エントリを2つにわけます。
前編は転職について、後編は、1年間のコミュニティ活動と来年やりたいことについて。
と、いうわけでまずは前編です。
■ソフトウェアに対する姿勢の変化
今年の2月1日から、今の会社に入社し、ちょうど僕が入社した日から本格的な開発が開始されたソーシャルゲーム(乙女ゲー)の新規開発チームに配属されました。
5月末に無事リリースを迎え、その後別ラインで開発されていたもう一本の乙女ゲーチームと合流し、2本のゲームの運用、それと年末リリースの新規ゲームの開発を並行して行う、というのが今年の僕たちの主な仕事でした。
前職はいわゆるSIerで、受託開発の部門で仕事していました。受託の開発というのは、言ってしまえばリリースがゴールです。納品の検収をトリガーに、お客さんからお金を頂くことになります。
一方で、サービスの世界ではリリースがスタートとなります。リリースの時点で、そのサービスはまだ1円足りともお金を生み出しません。リリースし、そこから一定の月日を継続して運用することで、利益を積み上げていきます。
自分が開発・運用に携わるこうしたビジネスモデルの変化は、僕のソフトウェアに対する考え方を大きく変えてくれました。
「作って終わり」ではなく「使われることに意味がある」ということ。これはこの世のあらゆる製品に共通する本質ですが、作りきりの受託開発の世界で仕事をしていたときは、理屈としてはわかっていても、実感できたことがあまりありませんでした。
実際にお客さんから問い合わせがあり、納品後のシステムをメンテナンスすることは前職でもありましたが、それらは「忘れた頃にやってくる」突発的なものであり、継続的に行われるものではなかったからです。もちろん、SIでも運用に携わっておられる人からすれば、「お前、今更何を言ってるんだ」と言われてしまいそうですが、現実問題、運用にそれほど意識が向かなかったのだからこれは仕方がない。
運用の重要性を改めて今の会社に入って意識することで、自分の作ったシステムにより愛着が沸くようになりましたし、開発することがすごく楽しくなりました。
やはり、自分の作った製品が「使われている」という実感を得られるのは、作り手としてこのうえない喜びです。
■勉強会に対する姿勢の変化
勉強会に対する姿勢も変化しました。
それまで、勉強会はインプットする場でした。
参加して、なんとなく刺激を受けて、家でちょこちょこと手を動かして、それで満足。そんなちっぽけなインプットです。
時折、職場に導入したりもしましたし、周囲を巻き込もうと動いたこともありましたが、それでもそういったアウトプットよりも、インプットの方が圧倒的に多かったです。
今の会社に入り、幸運にもPlay FrameworkやScalaといった、注目を集めている技術に携わる機会を得ました。これをきっかけに、僕の勉強会への取り組みも、インプットからアウトプットに大きくシフトします。
勉強会でインプットして、職場にちょこっとアウトプットする、というスタイルから、職場でのインプットを勉強会でアウトプットし、またそこで得たフィードバックを職場に還元する、という循環になりました。
この循環は、今後も継続していきたいと考えています。
■ぶっちゃけ転職してどうよ?
この転職は正直なところ、不安でいっぱいでした。
もともといろんな勉強会で、弊社の同僚と以前から顔をあわせることも多く、「こんな人たちの中で自分は通用するのかな」と入社前はビクビクしていました。
入社直後はそれまで馴染みのないWebサービスの開発ということや、アジャイルなプロジェクト推進など、未経験のことばかりで、当初はチームメンバーに歯がゆい思いをさせてしまったこともあったかもしれません。
でも、結論から言うと、前向きに知識を吸収するマインドがあれば、まぁなんとかなります。
だって、僕らはエンジニアですから、新しい言語とか、新しいフレームワークとか、日々そういった事を身につけながらこれまでも仕事をしてきたじゃないですか。
入社して10ヶ月が経とうとしています。まだまだ自分に足りないスキルを思い知ることもありますが、これまでのSIでの経験を活かせる局面もわりとあったりして、まぁそれなりにチームの一員として楽しく仕事ができています。
と、いうわけで転職についての振り返りはこのくらいで。
年内にもうひとつ、コミュニティ活動についての振り返りと来年やりたいことのエントリを書いて、今年を締めくくろうと思います。
今年は、転職という大きなトピックがあったので、エントリを2つにわけます。
前編は転職について、後編は、1年間のコミュニティ活動と来年やりたいことについて。
と、いうわけでまずは前編です。
■ソフトウェアに対する姿勢の変化
今年の2月1日から、今の会社に入社し、ちょうど僕が入社した日から本格的な開発が開始されたソーシャルゲーム(乙女ゲー)の新規開発チームに配属されました。
5月末に無事リリースを迎え、その後別ラインで開発されていたもう一本の乙女ゲーチームと合流し、2本のゲームの運用、それと年末リリースの新規ゲームの開発を並行して行う、というのが今年の僕たちの主な仕事でした。
前職はいわゆるSIerで、受託開発の部門で仕事していました。受託の開発というのは、言ってしまえばリリースがゴールです。納品の検収をトリガーに、お客さんからお金を頂くことになります。
一方で、サービスの世界ではリリースがスタートとなります。リリースの時点で、そのサービスはまだ1円足りともお金を生み出しません。リリースし、そこから一定の月日を継続して運用することで、利益を積み上げていきます。
自分が開発・運用に携わるこうしたビジネスモデルの変化は、僕のソフトウェアに対する考え方を大きく変えてくれました。
「作って終わり」ではなく「使われることに意味がある」ということ。これはこの世のあらゆる製品に共通する本質ですが、作りきりの受託開発の世界で仕事をしていたときは、理屈としてはわかっていても、実感できたことがあまりありませんでした。
実際にお客さんから問い合わせがあり、納品後のシステムをメンテナンスすることは前職でもありましたが、それらは「忘れた頃にやってくる」突発的なものであり、継続的に行われるものではなかったからです。もちろん、SIでも運用に携わっておられる人からすれば、「お前、今更何を言ってるんだ」と言われてしまいそうですが、現実問題、運用にそれほど意識が向かなかったのだからこれは仕方がない。
運用の重要性を改めて今の会社に入って意識することで、自分の作ったシステムにより愛着が沸くようになりましたし、開発することがすごく楽しくなりました。
やはり、自分の作った製品が「使われている」という実感を得られるのは、作り手としてこのうえない喜びです。
■勉強会に対する姿勢の変化
勉強会に対する姿勢も変化しました。
それまで、勉強会はインプットする場でした。
参加して、なんとなく刺激を受けて、家でちょこちょこと手を動かして、それで満足。そんなちっぽけなインプットです。
時折、職場に導入したりもしましたし、周囲を巻き込もうと動いたこともありましたが、それでもそういったアウトプットよりも、インプットの方が圧倒的に多かったです。
今の会社に入り、幸運にもPlay FrameworkやScalaといった、注目を集めている技術に携わる機会を得ました。これをきっかけに、僕の勉強会への取り組みも、インプットからアウトプットに大きくシフトします。
勉強会でインプットして、職場にちょこっとアウトプットする、というスタイルから、職場でのインプットを勉強会でアウトプットし、またそこで得たフィードバックを職場に還元する、という循環になりました。
この循環は、今後も継続していきたいと考えています。
■ぶっちゃけ転職してどうよ?
この転職は正直なところ、不安でいっぱいでした。
もともといろんな勉強会で、弊社の同僚と以前から顔をあわせることも多く、「こんな人たちの中で自分は通用するのかな」と入社前はビクビクしていました。
入社直後はそれまで馴染みのないWebサービスの開発ということや、アジャイルなプロジェクト推進など、未経験のことばかりで、当初はチームメンバーに歯がゆい思いをさせてしまったこともあったかもしれません。
でも、結論から言うと、前向きに知識を吸収するマインドがあれば、まぁなんとかなります。
だって、僕らはエンジニアですから、新しい言語とか、新しいフレームワークとか、日々そういった事を身につけながらこれまでも仕事をしてきたじゃないですか。
入社して10ヶ月が経とうとしています。まだまだ自分に足りないスキルを思い知ることもありますが、これまでのSIでの経験を活かせる局面もわりとあったりして、まぁそれなりにチームの一員として楽しく仕事ができています。
と、いうわけで転職についての振り返りはこのくらいで。
年内にもうひとつ、コミュニティ活動についての振り返りと来年やりたいことのエントリを書いて、今年を締めくくろうと思います。
2012年12月22日土曜日
Scala関西ビギナーズに行ってきました
今年の夏ごろから『乙女ゲーを支える技術』という発表をあちこちでさせていただいていて、この発表の中で重点を置いているテーマに「Scalaは怖くないよ」というものがあります。
ぼく自信、業務でScalaを使っているわけですが、どうも「関数型言語」というワードで必要以上に敷居を高く感じてらっしゃる人が多いような印象を持っているからです。
そのような中、今日はScala関西ビギナーズという勉強会にお声かけいただき、サポートメンバーという立場でお手伝いさせていただきました。
主催の@aa7thさんから、当日はスピーカーの発表のあとに参加者にScalaでコードを書いてもらう時間を設けたいので、そのお題を提供してほしい、という依頼がありました。
そこで、Project Eulerをみんなで解いていこう、というお題にしました。
最初のProblem1だけ、15分のコーディング時間のあとに僕が解説をして、あとは自由に自分の解きたい問題を解いていく、という形式です。
サポート役という立場でしたので、今日はいつもの勉強会以上にいろんな人とお話することができました。
今回も、「この勉強会のおかげでScalaの敷居が下がりました」というフィードバックをいただき、目的を達成できたようでよかったです。
来年も引き続き、こういった勉強会に顔を出していくつもりですので、よろしくお願いします。
ぼく自信、業務でScalaを使っているわけですが、どうも「関数型言語」というワードで必要以上に敷居を高く感じてらっしゃる人が多いような印象を持っているからです。
そのような中、今日はScala関西ビギナーズという勉強会にお声かけいただき、サポートメンバーという立場でお手伝いさせていただきました。
主催の@aa7thさんから、当日はスピーカーの発表のあとに参加者にScalaでコードを書いてもらう時間を設けたいので、そのお題を提供してほしい、という依頼がありました。
そこで、Project Eulerをみんなで解いていこう、というお題にしました。
最初のProblem1だけ、15分のコーディング時間のあとに僕が解説をして、あとは自由に自分の解きたい問題を解いていく、という形式です。
サポート役という立場でしたので、今日はいつもの勉強会以上にいろんな人とお話することができました。
今回も、「この勉強会のおかげでScalaの敷居が下がりました」というフィードバックをいただき、目的を達成できたようでよかったです。
来年も引き続き、こういった勉強会に顔を出していくつもりですので、よろしくお願いします。
2012年12月12日水曜日
コミュ障でも大丈夫。サルでもわかる投票入門
選挙が近づいてきました。
若者は選挙に行くべき! とTwitterなどでよく見かけますが、一方でいまさら投票に行こうと思ってもどうすればいいかわからない、という意見も聞きます。
そこで、20歳になって以降、投票権を持つ"選挙"と名がつくものはAKBのアレ以外すべて投票している、投票歴14年のわたしが、その手順などをお教えしましょう。
コミュ障な人でも全然大丈夫です。なぜなら、僕がそうだから!!
まず。自宅に投票用紙が送られているとおもいます。
とりあえずそれを持って、用紙に書かれている場所まで行きましょう。
だいたい地元の小学校とか、中学校だと思います。
普段なら、たとえ卒業生であっても我々の年代の人間が勝手に小中学校に入ったりしようものなら、問答無用で通報されるご時世ですが、この日ばかりは合法的に中に入れます。
中に入ったら、校庭などを見渡して懐かしい学生時代に思いを馳せるなどしても良いでしょう。
次に受付です。
投票のプロセスの中で、人と会話するのはこのタイミングのみです。
少し緊張する瞬間ですが、乗り切りましょう。
受付で用紙を渡すと、生年月日を聞かれます。
合コンなどと縁がない我々は、普段生年月日を聞かれることなど職質以外に無いですから、慌てそうになりますが、落ち着いて答えましょう。
これで最大の関門は突破です。
受付で投票用紙をもらえるので、それを持って、一蘭の味集中カウンターのようなボックスに行きます。そこにその選挙区の候補者の名前が書いた張り紙などがあるので、そういったものを参考に用紙に投票したい人の名前を書きましょう。
もうひとつ、政党名を書く欄もありますので、そこにも投票したい政党名を書きましょう。
あとは用紙を二つ折りにして、投票箱に入れます。
四つ折りとか複雑な折り方をすると、開票時に担当者がめんどくさいので、二つ折りで大丈夫です。
投票用紙は、箱の中で自動的に開く素材の紙で作られているので、二つ折りにしておけば開票時に紙を拡げる手間がないそうです。
これだけです。簡単ですよね。
それでは、よりよい国にするために頑張って選挙に行きましょう!
若者は選挙に行くべき! とTwitterなどでよく見かけますが、一方でいまさら投票に行こうと思ってもどうすればいいかわからない、という意見も聞きます。
そこで、20歳になって以降、投票権を持つ"選挙"と名がつくものはAKBのアレ以外すべて投票している、投票歴14年のわたしが、その手順などをお教えしましょう。
コミュ障な人でも全然大丈夫です。なぜなら、僕がそうだから!!
まず。自宅に投票用紙が送られているとおもいます。
とりあえずそれを持って、用紙に書かれている場所まで行きましょう。
だいたい地元の小学校とか、中学校だと思います。
普段なら、たとえ卒業生であっても我々の年代の人間が勝手に小中学校に入ったりしようものなら、問答無用で通報されるご時世ですが、この日ばかりは合法的に中に入れます。
中に入ったら、校庭などを見渡して懐かしい学生時代に思いを馳せるなどしても良いでしょう。
次に受付です。
投票のプロセスの中で、人と会話するのはこのタイミングのみです。
少し緊張する瞬間ですが、乗り切りましょう。
受付で用紙を渡すと、生年月日を聞かれます。
合コンなどと縁がない我々は、普段生年月日を聞かれることなど職質以外に無いですから、慌てそうになりますが、落ち着いて答えましょう。
これで最大の関門は突破です。
受付で投票用紙をもらえるので、それを持って、一蘭の味集中カウンターのようなボックスに行きます。そこにその選挙区の候補者の名前が書いた張り紙などがあるので、そういったものを参考に用紙に投票したい人の名前を書きましょう。
もうひとつ、政党名を書く欄もありますので、そこにも投票したい政党名を書きましょう。
あとは用紙を二つ折りにして、投票箱に入れます。
四つ折りとか複雑な折り方をすると、開票時に担当者がめんどくさいので、二つ折りで大丈夫です。
投票用紙は、箱の中で自動的に開く素材の紙で作られているので、二つ折りにしておけば開票時に紙を拡げる手間がないそうです。
これだけです。簡単ですよね。
それでは、よりよい国にするために頑張って選挙に行きましょう!
2012年12月4日火曜日
irof文が実装できたよ。そう、Scalaならね!
いろふアドベントカレンダー の4日目です。
前日は、@megascus さんの「世界はいろふである #irof_history」でした。
さて、ITの某界隈ですっかり有名人になったirofさんですが、そろそろプログラム言語の構文として実装されてもいいのではないかと思うのです。だって、irofってifに似てるしね。
こんなイメージでしょうか。
仕様はまぁ、面倒なのでif文と同じでいいでしょう。
if文が真であるときの制御があるなら、偽の場合の制御も必要です。if文が偽の場合はelseですから、ここはelofとしておきましょう。なんとなく変態っぽくて、そのまま変態アドベントカレンダーのネタにも使えそうですね。
イメージはこうなるでしょうか。
プログラム言語っぽくなってきました。
さて、実装です。
irof文を、上記のイメージで完全再現するには、どうしましょうか。
Scalaなら、なんかやれそうな気がします。
さっそく実装してみましょう!!
Scalaは、def hoge (a: Boolean)(b: Int) のように引数リストを複数取れますから、この仕組みを使えばirof文のBooleanをとる引数と、blockをとる引数でそれっぽく実装できそうです。
ついでにirofをcase classにして2つの引数リストを取り、elofをそのメソッドとすれば、真の場合のブロックをコンストラクタで、偽の場合のブロックをelofメソッド内で実行するという形で、上記のirof文のイメージを完全再現できますね。
結果、下記のような実装になります。
できました!
これで、我々のよく知っているif文とまったく同じイメージで、irof文が使えます。
ただ、"irof"の実態はcase classであるため、これはirof文っぽく動くのですが、Scalaのifのような「irof式」ではありません。irof文の結果を引数に取ると、irofクラスのインスタンスを受け取ってしまいます。
このあたりが、どうにかならないかなー、と悔しいところではありますが、とりあえず、irof文は実装できたので、ヨシとしましょう。
さて、明日は@pocketberserker さんです。よろしくお願いします!
前日は、@megascus さんの「世界はいろふである #irof_history」でした。
さて、ITの某界隈ですっかり有名人になったirofさんですが、そろそろプログラム言語の構文として実装されてもいいのではないかと思うのです。だって、irofってifに似てるしね。
こんなイメージでしょうか。
irof (hoge == 1) { println("いろふ") }
仕様はまぁ、面倒なのでif文と同じでいいでしょう。
if文が真であるときの制御があるなら、偽の場合の制御も必要です。if文が偽の場合はelseですから、ここはelofとしておきましょう。なんとなく変態っぽくて、そのまま変態アドベントカレンダーのネタにも使えそうですね。
イメージはこうなるでしょうか。
irof(hoge == 1) { println("いろふ") } elof { println("おまえ、いろふじゃないな!?") }
プログラム言語っぽくなってきました。
さて、実装です。
irof文を、上記のイメージで完全再現するには、どうしましょうか。
Scalaなら、なんかやれそうな気がします。
さっそく実装してみましょう!!
Scalaは、def hoge (a: Boolean)(b: Int) のように引数リストを複数取れますから、この仕組みを使えばirof文のBooleanをとる引数と、blockをとる引数でそれっぽく実装できそうです。
ついでにirofをcase classにして2つの引数リストを取り、elofをそのメソッドとすれば、真の場合のブロックをコンストラクタで、偽の場合のブロックをelofメソッド内で実行するという形で、上記のirof文のイメージを完全再現できますね。
結果、下記のような実装になります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
case class irof (formula: Boolean)(irofBlock: => Unit) { | |
formula match { | |
case true => irofBlock | |
case _ => | |
} | |
def elof(elofBlock: => Unit): Unit = { | |
formula match { | |
case false => elofBlock | |
case _ => | |
} | |
} | |
} |
これで、我々のよく知っているif文とまったく同じイメージで、irof文が使えます。
ただ、"irof"の実態はcase classであるため、これはirof文っぽく動くのですが、Scalaのifのような「irof式」ではありません。irof文の結果を引数に取ると、irofクラスのインスタンスを受け取ってしまいます。
このあたりが、どうにかならないかなー、と悔しいところではありますが、とりあえず、irof文は実装できたので、ヨシとしましょう。
さて、明日は@pocketberserker さんです。よろしくお願いします!
2012年12月1日土曜日
変態アドベントカレンダー2012【1日目】文字列の変態力を計ってみよう。
いよいよはじまりました、変態アドベントカレンダー 2012
トップバッターの@daiksyです!!
さて、初日ということでまずは小手調べ。
みなさんはある文字列が変態かどうか、気になることってありませんか?
Scalaなら、すごく簡単に調べることができます。
Scalaには、「暗黙の型変換」という機能があって、これを用いることで、既存の型を拡張することができます。とりあえずやってみましょう。
このhentaiConverterをextendしたクラス内で、文字列に対してisHentaiメソッドが使えるようになります。
例えば、"変態".isHentai はtrueを返します。
もう少し拡張してみます。
せっかくだから、文字列の変態力を調べられるようにしましょう。
Googleの検索で、「変態」に続いて文字列を指定した場合の結果件数を、変態力とみなしましょう。実装はこうです。
これで、hentaiConverterをextendしたクラス内でhentaiPowerメソッドを呼ぶことで、変態力を取ることができます。
ちなみに"だいくしー".hentaiPowerによる変態力は、10,700,000でした。
上記のコードですが、実は動きません。
Googleの検索は、ユーザエージェントが未指定だと403を返すからです。
実際にGoogleに対してスクレイピングを仕掛けると、たぶん規約に反すると思うので、それっぽいけど動かないコードにしてます。
Dispatchを使えば(ry) 絶対に動かしてはいけませんよ!
まぁ、動かないコードさらしてドヤ顔するあたりが、だいくしークオリティですな!!
さて、明日は@dproject21さんですね!
よろしくお願いします!
トップバッターの@daiksyです!!
さて、初日ということでまずは小手調べ。
みなさんはある文字列が変態かどうか、気になることってありませんか?
Scalaなら、すごく簡単に調べることができます。
Scalaには、「暗黙の型変換」という機能があって、これを用いることで、既存の型を拡張することができます。とりあえずやってみましょう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait hentaiConverter { | |
implicit def stringToHentaiChecker(s: String) = HentaiChecker(s) | |
case class HentaiChecker(s: String) { | |
def isHentai: Boolean = s == "変態" | |
} | |
} |
例えば、"変態".isHentai はtrueを返します。
もう少し拡張してみます。
せっかくだから、文字列の変態力を調べられるようにしましょう。
Googleの検索で、「変態」に続いて文字列を指定した場合の結果件数を、変態力とみなしましょう。実装はこうです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait hentaiConverter { | |
implicit def stringToHentaiChecker(s: String) = HentaiChecker(s) | |
case class HentaiChecker(s: String) { | |
def hentaiPower: Int = { | |
import scala.io.Source | |
val contents = Source.fromURL("http://www.google.co.jp/search?q=変態+%s".format(s), "utf8").getLines.mkString | |
val searchCountPattern = "約? ?([0-9,]+) ?件".r | |
val numberPattern = "[0-9]+".r | |
val searchedCount = numberPattern.findFirstIn(searchCountPattern.findFirstIn(contents).getOrElse("0").replace(",", "")).getOrElse("0").toInt | |
searchedCount | |
} | |
} | |
} |
ちなみに"だいくしー".hentaiPowerによる変態力は、10,700,000でした。
上記のコードですが、実は動きません。
Googleの検索は、ユーザエージェントが未指定だと403を返すからです。
実際にGoogleに対してスクレイピングを仕掛けると、たぶん規約に反すると思うので、それっぽいけど動かないコードにしてます。
まぁ、動かないコードさらしてドヤ顔するあたりが、だいくしークオリティですな!!
さて、明日は@dproject21さんですね!
よろしくお願いします!
登録:
投稿 (Atom)