第15回 SQLアンチパターン読書会に参加しました

8/2 NSEGの「SQLアンチパターン読書会」の第15回に参加しました。

nseg.connpass.com

隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は4人でした。

一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして、また次の人が読んで…を繰り返しすという感じでやってます。

今回は24章を読みました。以下、感想等。

24章 マジックビーンズ(魔法の豆)

自分はこの「モデルがアクティブレコードそのもの」はアンチパターンだというのにとても共感していて、一番の弊害は「アクティブレコードはCRUD機能を公開してしまう」だと思っています。 あまり賛同は得られませんでしたが…。


次回は 8/23 18:30〜 です。次回最終回。

nseg.connpass.com

第14回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第14回に参加しました。

nseg.connpass.com

隔週の水曜日の夜に開催しています(が、今回は私の都合で1日ずらしてもらいました)。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は5人でした。

一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして、また次の人が読んで…を繰り返しすという感じでやってます。

今回は22章と23章を読みました。以下、その場でされた会話の記憶。

22章 シー・ノー・エビル(臭いものに蓋)

「この会社変な電話ばっかり掛かってくるな」

「詳細な状況を聞こうとあれこれ質問すると、「おたくの製品のデバッグをさせる気か!」ってのはあった」

「このPHPのPDOってライブラリ、例外発生したり戻り値で失敗を表したり一貫性なさすぎじゃね?」

「そういえばGo言語は例外機構ないらしい」

「メソッド内で発生した例外を握りつぶしちゃうプログラムは見たことある。あれはどういう心理なんだろう。自分の担当メソッドで一切のエラーを発生させちゃいけないって思い込みなのかな」

23章 ディプロマティック・イミュニティ(外交特権)

「リアル トラックナンバー1だ!」

「データベースに関するドキュメントは書かないなぁ。ER図は必要ならツールで生成すればいいしそもそも必要にならない。テーブルや関連の説明なんかはプログラム中にコメントで書いちゃう」

「最近はフレームワークのマイグレーションの仕組みを使うからあんまり意識しないよね」

「Railsはその文化を作ったところがすごい」

「Djangoはモデルから自動的にマイグレーションファイルを生成するからマイグレーションファイルを手で書くことはない」


次回は 8/2 18:30〜 です。これでこの本は最後になるかも。

nseg.connpass.com

第12回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第12回に参加しました。

nseg.connpass.com

隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってますが、今回は7人でした。

一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして、また次の人が読んで…を繰り返しすという感じでやってます。

今回は18章と19章を読みました。以下、その場で出た話を記憶を頼りに。

18章 インプリシットカラム(暗黙の列)

「冒頭のJOIN結果に同じカラムがあって予期しない値が取れたってのはこの前ハマった」

tmtms.hatenablog.com

「ワイルドカードは普通使わないよねぇ」

「Software Design 7月号の特集にも軽く書いたわー」

19章 リーダブルパスワード(読み取り可能パスワード)

「高いレイヤーの話になってきたので読みやすくなってきた」

「パスワードリセット用のURLは短縮URL使って短くできないかな」

「短縮URLのアルゴリズムにもよるけど、単純な短い文字列とURLのマッピングだと安全でなくなるのでは」

終了後

「DockerのコンテナIDってシェルで補完対象にならないかな」

「それ、Ubuntu の zsh だとできるで」


次回は 7/5 18:30〜 です。興味がある人は参加してみるのもいいと思います。

nseg.connpass.com

第11回 SQLアンチパターン読書会に参加しました

NSEGの「SQLアンチパターン読書会」の第11回に参加しました。遅刻して19時くらいに着きました。

nseg.connpass.com

隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。今回は4人でした。

一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして、また次の人が読んで…を繰り返しすという感じでやってます。

今回は16章と17章を読みました。以下、その場で出た話を記憶を頼りに。

16章 プアマンズ・サーチエンジン(貧者のサーチエンジン)

「あるある」

「MySQL5.7からは日本語でも全文検索できるようになった。n-gram方式とインデックス方式が選択可能」

「PostgreSQL 9 では pg_bigm を使うと LIKE を普通に書いても全文検索インデックスが使用されるらしい」

「Apache Lucene は今だと Elasticsearch かも」

「検索時に自動的にインデックス作るのは面白い。けどやり過ぎな気がする」

あと、MySQL5.6の全文検索は日本語は使えないという脚注がついたのは自分のおかげだと自慢しました。

17章 スパゲッティクエリ

「SELECTの結果からRubyとかでUPDATEクエリを生成するのは時々やる」


次回は 6/21 18:30〜 です。興味がある人は参加してみるのもいいと思います。

nseg.connpass.com

第10回 SQLアンチパターン読書会に参加しました

5/24にNSEGの「SQLアンチパターン読書会」の第10回に参加しました。

nseg.connpass.com

隔週の水曜日の夜に開催しています。だいたいいつも3〜4人くらいでこじんまりとやってます。

一人が1〜2ページくらいを音読して、気になったことをみんなで話したりして、また次の人が読んで…を繰り返しすという感じでやってます。

今回は14章と15章を読みました。以下、話された内容を記憶を頼りに。

14章 アンビギュアスグループ(曖昧なグループ)

「これエラーにならないのMySQLだけじゃない?」

「MySQLも5.7からは標準でエラーになる」

「SQL 99 だと GROUP BYに書いてないカラムでも論理的に一意に求まるのならエラーにならないらしい」

「PostgreSQL でも最近はエラーにならなくなるケースがあるらしい」

「相関サブクエリむずい」

「MySQLは伝統的にサブクエリが遅い。最近はかなりマシになったらしい」

15章 ランダムセレクション

「LIMIT を使えない RDB あったのか!」

「プリペアドステートメントって “?” だけじゃなくて “:offset” みたいな書き方できたの?」

「それはたぶんPHPのクライアントサイドプリペアドステートメント。クエリの一部を書き換えるので過去に脆弱性問題があった。文字列としてクエリの一部を書き換えるのは悪手で、やるなら一段レイヤーを上げて Ruby の Sequel みたいなやりかたがいいと思う」


次回は 6/7 18:30〜 です。興味があって都合のつく人は参加してみてください。

nseg.connpass.com

MySQLユーザ会会 in 長野 を開催しました

5/13(土)に「MySQLユーザ会会 in 長野」を開催しました。

nseg.connpass.com

「会」が2つあるのは仕様です。「MySQLユーザ会」の会合で「MySQLユーザ会会」です。

開催経緯はこんなかんじです。

NSEG(長野ソフトウェア技術者グループ)というのがあって、毎月何かしらやってるんですが、その87回目イベントとして開催しました。


昼前に長野駅について、駅ビルのGitHubにめっちゃコミットしてるMen↓の近くでボーっとしてたら

@RKajiyama さんに遭遇したので、一緒に昼飯を食うことにしました。

他県から長野に来た人とお昼を食べるならやっぱり蕎麦かな…と思ったのですが、あまり長野駅近辺の蕎麦屋を知らなかったので、前に美味しいという噂を聞いたことがあった「ぼっち」という蕎麦屋に行きました。 満席でキューに並んでる途中で @mamy1326 さんも合流。 席につくまでも席についてからも結構待たされたのですが、美味しかったです。

主催者なのに遅れ気味に会場についたら、ほとんどの人はもう来ていました。 ドタキャンなし無断欠席なしで、さすが地方開催イベント(というか事前登録無しで来た人もいた)。発表者含めて参加者18名でした。

ツイートを Togetterにまとめました。


MySQLとは - @sakaik

RDBMSとは? MySQLとは? MySQLのバージョン、歴史等について話していただきました。

AWSでサクッとMySQL環境を立ち上げるデモもありました。

MySQL 8 - @RKajiyama

MySQLの中の人として、MySQLの次バージョンである MySQL 8 について話していただきました。

CTEとかWindow関数とかが実装されて、RDBMSとしてどんどんマトモになっていきますね。MySQLなのに。

MySQLの14年物のバグ #199 が直るらしいです。

yoku0825を支える技術 - @yoku0825

yoku0825とは「GMOペパボの福利厚生」で「はてなの外部API」で「bot」だそうです。

GTID, Multi Thread Slave, Defer Table Index, HANDLER ステートメント, PMM 等についての話がありました。

Bug #2 の紹介がありました。 Closed になってるのに 8.0 でバグが再発したらしいです。

Transactd PHP ORM - @bizstationcorp

TransactdはMySQLのHanderインタフェースを直接叩くことができるAPIを提供するプラグインで、Transactd PHP ORMはそのAPIを使用したPHPのORMです。

既存のORMのAPIとほぼ同じで、省メモリで高速とのこと。

Transactd も PHP ORM もオープンソースでGitHubにあります。

RubyにもTransactd APIがあるので、頑張ればORMを作れそうです。

MySQLの文字コード事情 - @tmtms

2月のMySQL Casualの発表の使いまわしです。MySQL 8 の話も少し追加しました。


懇親会は「酔来処」14名参加でした。

参加者のみなさま、発表者のみなさま、ありがとうございました。

1年に1回くらいは長野で開催したいですね。 次は松本でやるのもいいかなぁと思ったりしてます。自分は土地勘ないので誰か仕切ってくれる人がいれば…。

#NSEG 読書会

これは NSEG Advent Calendar の 18日目の記事です。

www.adventar.org

5月から行っていた「理論から学ぶデータベース実践入門」の読書会が 12/16 にめでたく最終回を迎えました。 全部で15回(スペシャル回を入れると16回)でした。

一人で1〜2ページ音読し、その部分について疑問点等を話し合い、次の人が続きから読むという形で行いました。 進み方はゆっくりですが、理解が深まってよかったと思います。本の間違いもいくつか見つけることができましたし :-)

年明け1月からまた別の本で読書会をやろうかという話になってるのですが、何の本が良いのか考え中です。

おそらくまた隔週で水曜日の 18:30〜20:00 くらいの感じでやることになると思いますので、参加できる人は是非。

話に出た本を並べておきます。

アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで

アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで

個人的に読んでみたいと思ってた本です。

APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)

APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)

できたてほやほや。これも読んでみたい。

パターン認識と機械学習 上

パターン認識と機械学習 上

  • 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/04/05
  • メディア: 単行本(ソフトカバー)
  • 購入: 6人 クリック: 33回
  • この商品を含むブログ (18件) を見る

入門 機械学習

入門 機械学習

  • 作者: Drew Conway,John Myles White,萩原正人,奥野陽,水野貴明,木下哲也
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/12/22
  • メディア: 大型本
  • 購入: 2人 クリック: 41回
  • この商品を含むブログ (11件) を見る

機械学習は興味はなくはないんですけど、個人的にはちょっとハードル高いです。

詳解UNIXプログラミング 第3版

詳解UNIXプログラミング 第3版

大昔に第一版を読んだことがありますが、これは良い本です。が、読書会で使うにはちょっと分量多くて重すぎる(物理的に)かもしれません。 電子書籍もあるようですが、紙をスキャンしたもの(?)で、検索等はできないという噂。

読書会の場では出ませんでしたが、あとで思い出した本:

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

読んだことありませんが良い本という噂。データベース繋がり。

何かほかにも良い本があれば教えて欲しいです。

MIMEヘッダエンコーディングは複雑すぎてつらい

これは NSEG Advent Calender の7日目の記事です(内容は NSEG とも長野とも関係ありませんが…)。

www.adventar.org

メールの送信者(From)や件名(Subject)は本来ASCII(の一部の文字)しか書くことができないんですが、MIME(RFC2047)の登場によって日本語等の非ASCII文字を記述することができるようになりました。

とは言ってもメールアプリから見て日本語が表示できているだけで、内部的にはASCII文字にエンコードされています。MIMEヘッダエンコーディングと呼ばれています。

たとえば、「日本語」という文字列は =?utf-8?b?5pel5pys6Kqe?==?iso-2022-jp?b?GyRCRnxLXDhsGyhC?= に変換されています。

この処理が実は非常に複雑で、正しくエンコードされてない場合がかなりあります。

件名の「MIMEヘッダエンコーディングは複雑すぎてつらい」をエンコードしてみます。

文字列を Base64 化して =?utf-8?b??= で括るだけです。

Subject: =?utf-8?b?TUlNReODmOODg+ODgOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsOOBr+ikh+mbkeOBmeOBjuOBpuOBpOOCieOBhA==?=

これだけであればとても簡単なのですが、実はここからが大変です。

まず、メールヘッダの物理的な1行の長さは78文字であるべきという制約があります(RFC5322 2.1.1)。 これより長い文字列は、空白文字のところで折り返すことができます(RFC5322 2.2.3)。

が、エンコードされた文字列には空白文字は含まれていません。むりやり次のようにしてはいけません。

Subject: =?utf-8?b?TUlNReODmOODg+ODgOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsOOBr+ikh+m
 bkeOBmeOBjuOBpuOBpOOCieOBhA==?=

どうすればいいかというと複数のエンコード文字列に分割します。空白区切りで連続したエンコード文字列はデコード時に空白を無視して結合するためです(RFC2047 6.2)。

Subject: =?utf-8?b?TUlNReODmOODg+ODgOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsOOBr+ik?=
 =?utf-8?b?h+mbkeOBmeOBjuOBpuOBpOOCieOBhA==?=

でもこれも実は正しくありません。

1行目の文字列をデコードすると「MIMEヘッダエンコーディングは\xE8\xA4」となります。「複(\xE8\xA4\x87)」が先頭2バイトで切られてしまっていますが、文字列をエンコードする際はマルチバイト文字を途中で区切ってはいけないためです(RFC2047 5)。

正しくは次のようになります。

Subject: =?utf-8?b?TUlNReODmOODg+ODgOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsOOBr+==?=
 =?utf-8?b?6KSH6ZuR44GZ44GO44Gm44Gk44KJ44GE?=

エンコードの際には文字単位を意識する必要があります。

ISO-2022-JP の場合はさらに複雑です。日本語文字列の先頭と末尾にエスケープコード(1B 24 42, 1B 28 42)がつくためです。 エンコード文字列は ASCII 状態で終わる必要があるため、日本語で終わる場合は ASCII に戻すエスケープコード(1B 28 42)で終わらせないといけません(RFC2047 3)。

個人的には、ISO-2022-JP なんてもはや使う意味はないので、UTF-8 を使うのがよいと思ってます。「①」「㈱」「♡」「髙」「﨑」や半角カナも使えますし。

ASCII 文字はエンコードする必要がないためそのまま記述できますが、ABCあいうABC=?utf-8?b?44GC44GE44GG?= とエンコードするのは間違いです。 エンコード文字列は空白区切りの単語単位でないといけないためです。 この場合は ABCあいう をまとめて =?utf-8?b?QUJD44GC44GE44GG?= とする必要があります。 ABC =?utf-8?b?44GC44GE44GG?= だとデコードすると ABC あいう となり空白が入ってしまいます。

エンコードの際に単語単位に処理するとよいのではないかと思うかもしれませんが、たとえば かな 漢字 を単語単位でエンコードして、=?utf-8?b?44GL44Gq?= =?utf-8?b?5ryi5a2X?= としてしまうと、デコードすると かな漢字 となり空白が消えてしまいます。 エンコードする単語間にある空白は、それも含めてエンコードする必要があります。

あと、まずないと思いますが、MIMEヘッダエンコーディング文字列と同じ形式の単語をそのまま送りたい場合も、エンコードしておかないと、表示時にデコードされてしまいます。

このようにMIMEヘッダエンコーディングは複雑です。エンコードする処理も複雑ですが、間違った実装によってエンコードされた不正な文字列をそれなりに利用者に見せられるようにデコードするのも大変です。

以上、MIMEヘッダエンコーディングは複雑でつらい話でした。

「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました #nseg

11/28 に NSEG 第69回勉強会として「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました。

nseg.doorkeeper.jp

NSEG の Wiki

5月から隔週で水曜日の18:30〜20:00に読書会を開催していたのですが、そろそろ終わりに近付いてきたので、特別ゲストとして著者の奥野さんをお招きして、ほぼ最終回スペシャルとして開催しました。

会場はいつもの読書会でも使用させていただいてるギークラボ長野さんでした。

なかなか参加者数が伸びずに心配したのですが、最終的には参加者数22人でした。 地方開催らしく当日ドタキャンは0人でした。長野県外からの参加者も5名いらっしゃいました。

始まる前に奥野さんが謎のキーボードを披露してました。

前説

www.slideshare.net

読書会

最終章の第14章を最初から読みました。いつも一人が数ページ音読して、それについて疑問点等があればみんなで会話する、という進め方をしているので、今回も同じように行いました。

時間の都合で途中(p.339)までしかできなかったので、読書会の真の最終回は12/9です(たぶん)。残念ながら私は用事があって参加できませんが、12/16 になりました。私も参加できるようになりました。参加してみたい人は是非どうぞ。

最後に「おわりに」を奥野さんに音読してもらいました。事前打ち合わせなく、突然お願いしたにも関わらず快く引き受けていただきました。

奥野さんの講演「なぜ、いま リレーショナルモデルなのか」

www.slideshare.net

1時間も話していただき、データベースに関する熱い思いが伝わりました。 質疑応答ももりあがり、時間の都合で30分ほどで打ち切らせてもらいました。

質疑応答中で言及されてた書籍:

論理学

論理学

論理学をつくる

論理学をつくる

  • 作者:戸田山 和久
  • 発売日: 2000/10/10
  • メディア: 単行本(ソフトカバー)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

  • 作者:ミック
  • 発売日: 2015/04/11
  • メディア: 単行本(ソフトカバー)

その後の休憩時間は、奥野さんのサイン会になってました。私もサインもらいました。

Ktzさん「SQL小ネタ集」

www.slideshare.net

小ネタと言いながら高度なネタが満載でした。正直理解できてません💦

SATOHさん

SQLのアンチパターン満載の話でした。闇の話すぎて資料は非公開とのこと。

hiro345さん「リーダブルパスワード - SQLアンチパターンより抜粋 - 」

www.slideshare.net

すのさん

予想に反して綺麗な SQLite の話…と思いきや、後半は期待通り闇な話でした。これも資料は非公開?

懇親会

そのまま会場でビアバッシュを行いました。

おわりに

遠方にも関わらず足を運んで頂いた奥野さん、会場を提供していただいたギークラボ長野さん、受付していただいた中澤さん、懇親会の手配をしていただいたにしざわさん、発表者のみなさん、参加者のみなさん、ありがとうございました。

おまけ

この記事は NSEG アドベントカレンダー3日目の記事でした(こういうのに乗っからないとなかなか書かない…)。

www.adventar.org

アジャイルジャパン2015 長野サテライト / NSEG 62

4/25 に NSEG 第62回勉強会として アジャイルジャパン2015 の長野サテライトを開催しました。

場所は株式会社ケイケンシステムさんの会議室をお借りしました。いつもありがとうございます。

長野サテライトは去年は開催されなかったので、二年ぶりです。参加者は21人だったので、コミュニティが開催する長野でのイベントとしては盛況な方だったと思います。

前半はアジャイルジャパンの本会の基調講演二本の録画ビデオを流し、休憩を挟んで長野独自の講演を行いました。


基調講演の1本目は、Janet Gregory さんで、チームのコミュニケーションの話でした。講演は英語でしたが、平鍋さんが逐次通訳してくれたので英語はさっぱりな私でも理解出来ました。

www.slideshare.net

基調講演2本目は、横塚裕志さんで、どちらかというとアジャイルを知らない経営者に向けたような話でした。参加者は現場の技術者が多かったのでちょっと期待とずれていたかもしれません。


後半1本目は、岩佐和紀さんの「ICONIXプロセス × FileMaker アジャイルプロジェクト実践事例」でした。お客さんとのコミュニケーションやプログラマの教育に動画をうまく活用してるのが印象的でした。契約満了の3週前にほぼ開発完了とのこと。

Q&Aで「いつもこんなホワイトなんですか?」という質問に対して「ぼく炎上プロジェクトって経験したことないのでこれが普通です」という回答でした。すばらしい。

www.slideshare.net

後半2本目は、中島祐樹さんの「大手Sierで見た!ウォーターフォール×下請け構造の闇」でした。ホワイトの話のあとはブラックな話で、絶妙なバランスでしたがこの構成は偶然です。

https://prezi.com/hs_b7hqtnwht/sier/

みんなの心がいい感じにダークサイドに染まりそうになったところで、時間となりました。

はじめは1時間くらい時間があまりそうだったので、こっそりスライドを用意したりしてたのですが、出番がなくてよかったです。


終了後、ビストロクーというお店で懇親会を行いました。美味しゅうございました。

www.deli-koma.com


当日のツイートをまとめました。

togetter.com

また来年もアジャイルジャパンのサテライトができれば良いと思います。

Dockerイメージを作る (NSEG#54)

NSEGの第54回勉強会で「Dockerイメージを作る」という発表をしました。

(SlideShare にもアップロードしました)

スライドにも書きましたが、前回以降にやったことの自分用のまとめみたいな感じで、世間的に目新しい話題は特に無いです。

今回も会場はケイケンさんの会議室でした。前の日まで参加申し込み5人だったのですが、当日の参加者は10人でした。

他の人の発表

@hiro345さんの Frontend framework and Template

先週末の HTML5時代のフロントエンド開発入門でも思ったんですけど、最近のフロントまわりの技術にはさっぱりついていけてなくて良くないです。

@earth2001yさんの「昨日、ぺちゃくちゃで NSEG を喋りました」

定期的に開催されている ぺちゃくちゃないとNAGANOの話。 ぺちゃくちゃないとNAGANOは、スライドは20枚固定で 20秒/枚 で勝手にスライドが切り替わっていて、それに合わせてしゃべるという珍しい形式のプレゼンです。発表難しそう。

@office_krtecさんの「失敗して学ぶ炎上プロジェクトからの生還(案)」

SIerの闇の話。失敗し続けてもオフショアに発注し続ける会社と、炎上案件の火消しをし続ける office_krtec さんの話でした。

オフショアを使わないのが一番いいと誰もがわかりながらも、政治的な理由で使わざるを得ないというのが涙を誘います。もう、お金払うからオフショアの人には何もしないでもらって、こっち側でちゃんと作った方が結果的に安くつくんじゃないかとも思いました。

@_iwateさんの「日本一雲に近い Azure User Group の話」

9/27 に JAZUG4周年記念! どこよりも雲に近い長野でするクラウドの話 - Azureしなの | Doorkeeper というイベントをやるという話です。 あと隔週で水曜日にGEEKLAB. NAGANOで「Azure もくもく会」が開催されているとのこと。興味のある人は行ってみるのがいいと思います。

@nabetaroさんの「deb パッケージを再構築」

既存の deb パッケージを流用して、新しい deb パッケージを作る方法の解説でした。pdebuild 便利そうです。

次回

次回の日程は未定です。9月の中頃の土日だと思われます。

懇親会

C-one の地下の「だんまや水産」に行きました。

#NSEG 第53回勉強会

NSEG 第53回勉強会に参加しました。 今回も会場はケイケンさんです。

今回のテーマは JavaScript でした。

自分が JavaScript を触り始めたのは結構前なんですけど、未だにちゃんと書ける自信がありません。

「モダンな」JavaScript の書き方 / 春原さん

  • HTML と JavaScript を分離しよう
  • 名前空間を汚さないように
  • jQuery を使おう

という話でした。

OpenLayersで地図表示 / 鍋太郎さん

スライド

HTMLで地図を表示できるライブラリの話でした。お手軽に使えそうです。

TypeScript ではじめる AltJS / 谷口さん

各種 AltJS の特徴と TypeScript の話でした。

TypeScript 良さそうです。

クソゲーに最適な JSフレームワーク、 作りました。 / ほくさん

スライド

クソゲーWebアプリを簡単に作れる自作フレームワークの「ほくじー」の紹介でした。

デモが見れます http://hoku.in/hokug/

NSEG新Webサイトについて / まちださん

スライド

新Webサイト → http://nseg-jp.github.io/w/

うぉー、ちょーカッコいいですね。

スライドもカッコいいです。reveal.js という HTML のプレゼンツールっぽいです。

懇親会

懇親会は長野駅前の「やきとり道場 翠や」でした。

ハイボールが200円で安い!

「Dockerさわってみた」 #NSEG 50

(これは 5/18 に書きました)

第50回 NSEG 勉強会に参加して、Docker について話してきました。

スライドに書いたとおり、Docker については触ってみた程度でそんなにちゃんとは理解してないです。

「詳しい人からのツッコミで教えてもらおうという企画です」と書いておいたら、早速ツッコミをもらいました。ありがとうございます!

スライドは修正済みです。

Docker は OSC 2014 で、さくらインターネットの社長の発表 http://www.slideshare.net/kunihirotanaka1/2014-31984470 で初めて知りました。

その後、手元で少し試した後、会社で自動テストに使ってみたりしてます。

  • Dockerfile で centos イメージをベースとして、実行に必要なパッケージ等をインストールした状態のイメージを作成。
  • そのイメージ上で動作するテストスクリプトを git リポジトリに登録。gem install して bundle exec rspec するようなもの。
  • Docker をインストールしてあるサーバーを Jenkins のスレーブノードにする。
  • Jenkins 上に git リポジトリの更新をトリガーとして docker を動かすジョブを作成。
  • docker 実行時は -v $(pwd):/workspace のような感じで、jenkins の workspace をホストと共有。そうしないとテスト結果が残らないので…。
  • テスト成功時には docker rm でコンテナを削除。テスト失敗時には原因を追えるようにコンテナは残す。

常に同じ状態で起動するので、テストするには Docker はとてもいいと思います。手元の Linux デスクトップでちょっと動きを確認したい時も手軽に起動できますし。

自分はサービスの運用とかはやってないので、実運用環境でどれくらい使えるものなのかはわかりませんが…。

MySQL Talk in 長野を開催しました

もう二週間も経ってしまいましたが、3/15 に NSEG 第49回勉強会として「MySQL Talk in 長野」を開催しました。

本当は 2/15 に開催する予定だったのですが、例の大雪でひと月延伸となりました。

会場はいつも NSEG 勉強会で使わせていただいているケイケンさんの会議室です。長野駅から近くてありがたいです。

今回はオラクルの梶山さんをメインスピーカーに招いて MySQL をテーマに開催しました。

当日のツイートのまとめはこちら http://togetter.com/li/642666

前説 / とみた

MySQLの始め方 / とみた

実は内容は一昨年の MySQL Beginners Talk の発表の焼き直しでした。

MySQL 最新動向 / 梶山さん

MySQL の最新動向として、5.6 や 5.7 DMR の新機能を紹介していただきました。

Transactd / 矢口さん

Transactd という NoSQL プラグインの説明でした。

自分は Transactd というプラグインは初めて知ったのですが、Handler Socket と同じような仕組みのプラグインのようです。

NoSQL ながらトランザクションも使用可能で Windows にも対応しているようです。 Action PSQL という製品の Btrieve 互換の API で使えるとのこと。

Dart + MySQL / 小山さん

自分は全然知らないのですが Dart という言語用の MySQL Connector の説明でした。

その他

今回はイベント管理に Doorkeeper を使ってみました。 編集したページを公開前にプレビューできるのと、今回は使いませんでしたが、メンバーに一斉に連絡できる機能があったり、チケットをバーコードで管理できたり、こくちーずより使いやすかったです。

NSEG #43

長野ソフトウェア技術者グループ(NSEG)の第43回勉強会に参加しました。

ツイートまとめ

今回も会場は長野駅前のケイケンさんの会議室でした。 毎回会場を提供していただいてありがたい限りです。

今回のテーマは「教育」でした。当日になっても発表者が一人だけという寂しい状態だったので、その場でスライド作って発表してみました。

タイトルは思いつかなかったのでテキトーにつけました。ダジャレ以外の意味はありません。

スライドは前振りで本題は実は Scratch の紹介でした。

うちの子供も Scratch 使ってゲーム作って遊んだりしてました。子供向けのプログラミングの学習にはいい教材だと思います。

帰宅した後に知ったので偶然なのですが、同じ日にこんなニュースもありました。

中学1年生自らが子ども向けプログラミングワークショップを企画して開催

ワークショップの内容は、米MITメディアラボが開発した子ども向けプログラミング環境Scratchを使って、独自のゲームを作りながらプログラミングの楽しさを伝えるというもの

さらに偶然ですが、翌日には NHK の「スーパープレゼンテーション」という番組で Scratch の作者のプレゼンも放送されたようです。自分は放送は見逃したのですが、ウェブで視聴できるようなので、後で見てみようと思います。

9.23 ON AIR Mitchel Resnick ミッチェル・レズニック Let's teach kids to code 「子どもにプログラミングを教えよう」

次回の NSEG は柴田芳樹さんの講演会だそうです。