略歴をまとめてみました(2015-09-16 更新あり)

竹迫 良範(たけさこ よしのり)

現所属

  • 株式会社リクルートマーケティングパートナーズ 技術フェロー(2015年9月~)

コミュニティ活動

  • SECCON実行委員長
  • Shibuya Perl Mongers リーダー
  • OWASP Japan Advisory board
  • CODE BLUE レビューボード

職務経歴

  • 2002年03月 広島市立大学 情報科学部 卒業(情報工学・学士)
    • 情報機械システム工学科 知能ロボット講座(現:パターン認識研究室)
  • 1997年05月 株式会社エス・ワイ・シー 入社
  • 2002年02月 株式会社ドリームアーツ 入社
    • 独立系ITベンチャーにて大企業向けパッケージソフト開発に従事
  • 2005年11月 サイボウズ・ラボ株式会社 入社
    • セキュリティ先端技術のR&D、情報基盤ミドルウェアの開発 (9年)
    • エンジニア採用ブランディングの企画開発、イベント運営(9年)
    • 海外開発拠点へのセキュリティトレーニング、社内研修講師(4年)
    • サイボウズ株式会社 Cy-CSIRT 社外アドバイザー(3年)
  • 2015年09月 株式会社リクルートマーケティングパートナーズ 入社
    • ラーニングプラットフォーム推進室 技術フェロー

オープンソースソフトウェア開発実績

所属学会

  • 日本データベース学会、The Database Society of Japan(DBSJ)正会員
  • ACM SIGMOD 日本支部メンバー

研究業績

  1. 2011年3月10日、「不自然言語処理コンテスト」第1回開催報告、言語処理学会 第17回年次大会 発表論文集、共著、萩原正人 (楽天), 大原一輝 (フリー), 水野貴明 (バイドゥ), 橋本泰一 (東工大), 荒牧英治 (東大), 竹迫良範 (サイボウズ)
  2. 2012年1月8日、x86 JITコンパイラ上で任意コードを実行する方法、情報処理学会 第53回プログラミング・シンポジウム予稿集、単著、竹迫良範(サイボウズ・ラボ)
  3. 2012年1月20日、Web型グループウェア開発における技術標準動向と人材育成の課題、画像電子学会 第9回国際標準化教育研究会-事業化と標準化教育-、単著、竹迫良範(サイボウズ・ラボ)

受賞歴

国際標準化活動

  • 2009~2011年 SC 22/ECMAScript Ad Hoc エキスパート(ISO/IEC 16262:2011)
  • 2010~2013年 W3C Invited Expert、HTML5 Working Group
  • 2013~2015年 SC 22/C#, CLI, スクリプト系言語SG エキスパート
  • 2015年  情報処理学会 情報規格調査会 SC 22専門委員会 専門委員
  • 2015年~ SC 22/ECMAScript Ad Hoc エキスパート(ECMAScript6、JSONi18n等)

国際発表

  • 2010年 OSDC.tw 2010「Polyglot Programming and Web Security」
  • 2011年 OSDC.tw 2011「x86 ASCII Programming (16bit/32bit)」
  • 2011年 HITCON 2011 Hacks in Taiwan Conference「Disassemble Flash Lite 3.0 SWF File」
  • 2014年 OWASP AppSec APAC 2014「Secure Escaping method for the age of HTML 5」
  • 2015年 SECUINSIDE 2015, BSides Las Vegas 2015, HITCON Community 2015「Backdooring MS Office documents with secret master keys」
  • 2015年 CODE BLUE 2015「MS Office ファイル暗号化のマスター鍵を利用したバックドアとその対策」

委員歴

  • 2006年~ Shibuya Perl Mongers 2代目リーダー
  • 2007~2014年 翔泳社 Developers Summit コンテンツ委員
  • 2008~2013年 経済産業省U-20プログラミング・コンテスト審査委員
  • 2014~2015年 CSAJ U-22プログラミング・コンテスト実行委員
  • 2010~2011年 不自然言語処理コンテスト審査員、アドバイザー
  • 2012年 CTFチャレンジジャパン2012 CTF大会実施ワーキンググループリーダー
  • 2012年~日本ネットワークセキュリティ協会 SECCON実行委員会 実行委員長
  • 2013年~OWASP Japan Advisory board
  • 2014年~国際情報セキュリティ会議 CODE BLUE レビューボード、実行委員
  • 2014年 情報処理学会コンピュータセキュリティシンポジウム2014実行委員
  • 2014年 キャンドルスターセッション(CSS×2.0)in CSS2014 実行委員長

招待講演

パネル登壇

  • 2011年 言語処理学会 第17回年次大会「自然言語処理における企業と大学と学生の関係」
  • 2013年 JANOG31 Meeting「モダンアプリのインパクト」「Outbound Port 80 blocking のご提案」
  • 2014年 情報処理学会 第76回全国大会「国はハッカーを育成出来るのか」
  • 2014年 情報セキュリティ・ワークショップ in 越後湯沢「自社製品のバグ発見者に報奨金をだす企業とバグ発見者」
  • 2014年 Internet Week 2014「S7 本当に身につくセキュリティの学び方」「攻撃者の視点を学ぶ」

教育歴

  • 2006年 Web2.0ワークショップ「Plaggerで学ぶ、初めてのRSS/Atomアグリゲーション」
  • 2006年 セキュリティキャンプ2006、Webプログラミング基礎演習講座
  • 2007年 セキュリティキャンプ2007、プログラミングコース講師(セキュアシステム開発
  • 2008年 セキュリティ&プログラミングキャンプ2008、Webプログラミングクラス講師
  • 2008年 HTTP Meeting 2008 ~Webサービスの明日を見つけよう~「Webプログラミング言語/JavaScript処理系」
  • 2009年 セキュリティ&プログラミングキャンプ2009、OSを作ろう組(OS自作組)講師
  • 2010年 セキュリティ&プログラミングキャンプ2010、両コースの講師を兼任
  • 2011年 セキュリティ&プログラミングキャンプ2011、プログラミング言語クラス講師
  • 2012年 セキュリティ・キャンプ中央大会2012、Webクラス&セキュアシステム講師
  • 2013年 セキュリティ・キャンプ中央大会2013、Webクラス&セキュアOSクラス講師
  • 2013年 京都大学サマーデザインスクール 2013「チームワークのデザイン」実施者
  • 2014年 京都大学サマーデザインスクール 2014「学び方のデザイン ─ 盲点を見つけよう」実施者
  • 2014年 会津大学セキュリティ人材育成事業サイバー攻撃対策演習・情報セキュリティ講座「マルウェアの検知と防御技術」講師
  • 2014年 セキュリティ・キャンプ全国大会2014「ルーター自作ゼミ」講師
  • 2014年 セキュリティ・ミニキャンプ in 東北 2014「攻撃検知システムを自作しよう」講師
  • 2014年 セキュリティ・ミニキャンプ in 沖縄 2014「攻撃検知ソフトの自作」講師
  • 2014年 警察大学校 サイバーセキュリティ研究・研修センター「サイバーセキュリティ分野における人材育成」講師
  • 2015年 警察大学校 サイバーセキュリティ研究・研修センター「サイバーセキュリティ分野における人材育成」講師
  • 2015年 セキュリティ・ジュニアキャンプ in 高知 2015「ウイルス対策ソフトを作ってみよう」講師
  • 2015年 セキュリティ・キャンプ全国大会2015 低レイヤートラック リーダー
  • 2015年 セキュリティ・キャンプ全国大会2015「1-B AVRマイコンで作るBadUSB自作入門」講師

調査協力

  • 2010年 文部科学省 科学技術政策研究所 科学技術動向研究センター「未来予測ディスカッション」
  • 2014年~文部科学省 科学技術政策研究所 科学技術動向研究センター「科学技術専門家ネットワーク」専門調査員

連載

著書(翻訳・監訳・共著など)

寄稿

  • 多数(自分で把握しきれなくなりました…)

新ジャンル:回文プログラミング

ブラウザのアドレスバーに貼り付けてお楽しみください。

javascript:''[_=((_=''+-~-~'')+{})[-~_*_]+(_+{})[_]+(_+{}._)[_]+(_+![])[_*_]+(_+!'')[_/_]+(_+!'')[_]+(''+!'')[_]+(_+{})[-~_*_]+(_+!'')[_/_]+(_+{})[_]+(_+!'')[_]][_](_[_][_]((_=-~-~_+'',(_+!'')[_])+(_+!'')[_*_]+(_+!'')[_/_]+(''+!'')[_]+(_+!'')[_]+(_+{}._)[_]+'\''+['',~(_*-_+_),_-~_+_|_,_*_+_-~_,-_*~_+_,(_<<_-~_)+'("\\'+(''+!'')[_]+-~(_*_)+-_*~_+(''+{}._)[_]+(_+!'')[_*_]+'\\'+(''+!'')[_]+-_*~_+-~(_*_)+_*_*_+~-(_<<_)+'\\'+(''+!'')[_]+-~_+_%_+_*_+(''+{})[_]+'\\'+(''+!'')[_]+-~_+_%_+_*_+_*_+'?")'][(_+{})[_*_]+(_+{})[_]+(_+_/'')[_*_]+(_+{}._)[_]]('\\'+_/_)+'\'')())(_)//(_)(()(''\'+(_/_+'\\')[[_](_.{}+_)+[_*_](''/_+_)+[_]({}+_)+[_*_]({}+_)]['("?'+_*_+_*_+_%_+_~-+[_](''!+'')+'\\'+[_]({}+'')+_*_+_%_+_~-+[_](''!+'')+'\\'+(_<<_)-~+_*_*_+(_*_)~-+_~*_-+[_](''!+'')+'\\'+[_*_](''!+_)+[_](_.{}+'')+_~*_-+(_*_)~-+[_](''!+'')+'\\")'+(_~-_<<_),_+_~*_-,_~-_+_*_,_|_+_~-_,(_+_-*_)~,'']+''\'+[_](_.{}+_)+[_](''!+_)+[_](''!+'')+[_/_](''!+_)+[_*_](''!+_)+([_](''!+_),''+_~-~-=_))[_][_]_)[_][[_](''!+_)+[_]({}+_)+[_/_](''!+_)+[_*_~-]({}+_)+[_](''!+'')+[_](''!+_)+[_/_](''!+_)+[_*_]([]!+_)+[_](_.{}+_)+[_]({}+_)+[_*_~-]({}+(''~-~-+''=_))=_]'':tpircsavaj

■動作画面

※推奨ブラウザ:Firefox, Chrome, Safari, Opera, Windows7のIE8もしくはIE9で動作確認しています。

■追記:
id:hasegawayosukeさんに卑怯な気がすると言われたので、記号だけで//を使わずに回文javascriptを書いてみました。

('"\')(("')[_=((_=''+-~-~'')+{})[-~_*_]+(_+{})[_]+(_+{}._)[_]+(_+![])[_*_]+(_+!'')[_/_]+(_+!'')[_]+(''+!'')[_]+(_+{})[-~_*_]+(_+!'')[_/_]+(_+{})[_]+(_+!'')[_]][_](_[_][_]((_=-~-~_+'',(_+!'')[_])+(_+!'')[_*_]+(_+!'')[_/_]+(''+!'')[_]+(_+!'')[_]+(_+{}._)[_]+'\''+['',(~(_*-_+_)),(_-~_+_|_),(_*_+_-~_),-_*~_+_,((_<<_-~_))+'(\\\'',''+_%_+_/_,_*_+_,(_-~_+_|_),(_*_+_-~_)+'\\'+_*_+_%_,((_<<_-~_)-~_),(~(_*-_+_)),(~_^~_*_+_)+'\\'+_*_+_%_,(~_*~_|_)+'\\'+_*_+_%_,(_*_+_-~_),-_*~_+_,(_*_+_-~_)+'\\'+_*_+_%_,(~_*~_|_)+'\\'+_*_+_%_,(~_^~_*_+_),(~(_*-_+_)),((_<<_-~_)-~_)+'\\'+_*_+_%_,(_*_+_-~_),(_-~_+_|_),_*_+_,(''+_%_+_/_)+'\\\')'][(_+{})[_*_]+(_+{})[_]+(_+_/'')[_*_]+(_+{}._)[_]]('\\'+_/_)+'\'')(")(''\'+(_/_+'\\')[[_](_.{}+_)+[_*_](''/_+_)+[_]({}+_)+[_*_]({}+_)]['('\\\'+(_/_+_%_+''),_+_*_,(_|_+_~-_),(_~-_+_*_),_%_+_*_+'\\'+(_~-(_~-_<<_)),((_+_-*_)~),(_+_*_~^_~),_%_+_*_+'\\'+(_|_~*_~),_%_+_*_+'\\'+(_~-_+_*_),_+_~*_-,(_~-_+_*_),_%_+_*_+'\\'+(_|_~*_~),_%_+_*_+'\\'+(_+_*_~^_~),((_+_-*_)~),(_~-(_~-_<<_)),_%_+_*_+'\\'+(_~-_+_*_),(_|_+_~-_),_+_*_,_/_+_%_+'',''\\\)'+((_~-_<<_)),_+_~*_-,(_~-_+_*_),(_|_+_~-_),((_+_-*_)~),'']+''\'+[_](_.{}+_)+[_](''!+_)+[_](''!+'')+[_/_](''!+_)+[_*_](''!+_)+([_](''!+_),''+_~-~-=_))[_][_]_)[_][[_](''!+_)+[_]({}+_)+[_/_](''!+_)+[_*_~-]({}+_)+[_](''!+'')+[_](''!+_)+[_/_](''!+_)+[_*_]([]!+_)+[_](_.{}+_)+[_]({}+_)+[_*_~-]({}+(''~-~-+''=_))=_]('"))('\"')

括弧()[]{}の対応づけが逆になっているのは見た目のための仕様です。(厳密には文字列の reverse になっていない鏡像です)

■追記(5/19 19:47)

2010年5月19日のヘッドラインニュース - GIGAZINE
に(右から見ても左から見ても同じ文字列でプログラミング)との解説付きで掲載していただきました。

■参考文献:

  1. Palindrome C code
  2. [Neta]真・新ジャンル:回文プログラミング - 葉っぱ日記

Linux kernel の wireless.c で .header_type とか,ドットで始まる変数名?がある件について

http://twitter.com/k_morihisa/status/9006163842

Twitter / Morihisa Kazuaki: Linux kernel の wireless.c で .header_type とか,ドットで始まる変数名?がある.謎

Linux-Kernel Archive: 2.6.18-git9 wireless fixes break ipw2200 association to AP with WPAのパッチとかみると、たしかにこんな断片のC言語ソースコードがでてくる。

@@ -242,24 +234,24 @@
[SIOCSIWESSID - SIOCIWFIRST] = {
.header_type = IW_HEADER_TYPE_POINT,
.token_size = 1,
- .max_tokens = IW_ESSID_MAX_SIZE,
+ .max_tokens = IW_ESSID_MAX_SIZE + 1,
.flags = IW_DESCR_FLAG_EVENT,
},
[SIOCGIWESSID - SIOCIWFIRST] = {
.header_type = IW_HEADER_TYPE_POINT,
.token_size = 1,
- .max_tokens = IW_ESSID_MAX_SIZE,
+ .max_tokens = IW_ESSID_MAX_SIZE + 1,
.flags = IW_DESCR_FLAG_DUMP,
},
[SIOCSIWNICKN - SIOCIWFIRST] = {
.header_type = IW_HEADER_TYPE_POINT,
.token_size = 1,
- .max_tokens = IW_ESSID_MAX_SIZE,
+ .max_tokens = IW_ESSID_MAX_SIZE + 1,
},
[SIOCGIWNICKN - SIOCIWFIRST] = {
.header_type = IW_HEADER_TYPE_POINT,
.token_size = 1,
- .max_tokens = IW_ESSID_MAX_SIZE,
+ .max_tokens = IW_ESSID_MAX_SIZE + 1,
},
[SIOCSIWRATE - SIOCIWFIRST] = {
.header_type = IW_HEADER_TYPE_PARAM,
@@ -346,8 +338,8 @@
.max_tokens = sizeof(struct iw_pmksa),
},
};
-static const unsigned standard_ioctl_num = (sizeof(standard_ioctl) /
- sizeof(struct iw_ioctl_description));
+static const int standard_ioctl_num = (sizeof(standard_ioctl) /
+ sizeof(struct iw_ioctl_description));

/*
* Meta-data about all the additional standard Wireless Extension events

http://twitter.com/takesako/status/9016296481 でも返事しましたが、

つまり、こういうこと?

#include <stdio.h>

typedef struct x{
  char a;
  char b;
} X;

int main(void)
{
  const X x[] = {
    [2] = { .a=69, .b=0,  },
    [0] = { .a=65, .b=66, },
    [1] = { .a=67, .b=68, },
  };
  printf("%s\n",x);
}

→ 実行結果:ABCDE

C++テンプレートでFizzBuzz素数計算

まとめ

  1. C++テンプレートでFizzBuzz - おびなたん☆
  2. Kazuho@Cybozu Labs: C++ テンプレートで(いまさら)FizzBuzz
  3. C++のテンプレートで素数計算 - 西尾泰和のはてなダイアリー
  4. 情報科学苦手の会に参加してきました | TAKESAKO @ Yet another Cybozu Labs

12月5日@大阪

就活生向けIT業界セミナーで講演します | TAKESAKO @ Yet another Cybozu Labs

今週末12/5(土)、日帰りで大阪に行きます!

■大阪会場(共催:株式会社はてな×サイボウズ

 日時:12月5日(土)
 場所:大阪ドーンセンター

 14:00 受付開始
 14:30 ボクがはてなを選んだ理由〜グローバルなサービスを求めて〜
栗栖 義臣(はてな
 15:10 ITエンジニアと株式会社の付き合い方(恋愛編)
竹迫 良範(サイボウズ・ラボ)
 16:00 IT業界のヒ・ミ・ツ
佐藤 学(サイボウズ
 16:30 座談会
  Aチーム、Bチーム、Cチームにわかれて質疑応答
  (20分交代ですべての学生に各チーム回るイメージ)

まだ、座席に若干余裕があるみたいなので、興味のある方はぜひ。

Hatena × Cybozu ITエンジニアによるITエンジニアのためのIT業界セミナー 12月5日@大阪
http://cybozu.co.jp/company/job/recruitment/seminar/hatena/index.html

ちなみに私は新大阪21時発ぐらいの新幹線で東京に帰る予定です。

vip コマンドと zip コマンドの正しい使い方

vip - vi pipe (vipっていうviラッパー作った - kazuhoのメモ置き場)

http://github.com/kazuho/vip/blob/master/vip

$ vip | perl
i
print "Hello\n";
[Esc]:wq
"~/vip/20091028-123818-1" [New] 1L, 10C written
Hello
$ ls ~/vip/
20091028-123634-1  20091028-123818-1
$ more 20091028-*
::::::::::::::
20091028-123634-1
::::::::::::::
前に書いたプログラムの内容
::::::::::::::
20091028-123818-1
::::::::::::::
print "Hello\n";
$ cd ~/vip/
$ zip -dekure
Enter password: fushianasan
Verify password: fushianasan

zip error: Invalid command arguments (specify just one action)

あれ?