サイボウズ・ラボを退職しました(ご挨拶)

2015年8月末をもって竹迫はサイボウズ・ラボ株式会社を退職いたしました。勤続年数は長く9年10ヶ月でした。 在職中は様々な活動を通して多くの皆様よりご指導ご鞭撻をいただきまして誠にありがとうございました。 まだまだ未熟だった私もサイボウズの中では多くのことを学びまして、自分自身も人間として大きく成長することができました。

f:id:TAKESAKO:20150729212850j:plain

サイボウズ・ラボの設立背景(10年前)

思い起こせば、私がサイボウズ・ラボに入社したのは2005年11月で、当時はまだラボを設立したばかりの立ち上げ期の頃でした。 リージャス赤坂のレンタルオフィスの一室を借りて、畑さん、akkyさん、kazuhoさんと4人で机を並べて、仕事を開始したのは良い思い出です。

それまでのサイボウズは関西人のノリでダジャレのキャンペーンをよく実施していたためか、どちらかというと宣伝やマーケティングにうまい会社と思われており、なかなか技術の会社として認識されることが少なかった状況でした。 実際にはC++オブジェクト指向データベースやWebサーバをフルスクラッチで作ったり、独自のスクリプト言語処理系を作って製品に組み込んだりしたり、かなりコアな技術を持った優秀なプログラマーが集まっていましたが、新規のエンジニア採用には苦しんでいました。

当時の時代背景としてWeb2.0の熱狂的なムーブメントがあり、米国の成功事例を参考に日本でも優秀なプログラマーが自分自身でドックフーディングしながら素早く要件や仕様を決めて、新規にWebサービスを何個も立ち上げて世界ヒットを狙うことが各社ベンチャーで挑戦されていました。 今でいうところの「フルスタックエンジニア」という用語が発明される前でしたが、basecampの開発中にRuby on Railsを作ったDHH氏や、memcachedのBrad氏など様々なスタープログラマーが生まれたのもこの頃の時代でした。 自分一人でビジネス要件を定義し、コーディングからインフラの準備までできるスーパープログラマーが脚光を浴びた時期です。

50%ルールとエンジニア主導文化

そのような優秀なエンジニアを採用するために「ラボ」という名前のついた100%子会社を親会社とは離れた場所に作り、サイボウズの技術者ブランドを強化すべく採用活動と新規サービスの開発を開始したのです。 業務時間の2割を自分の自由な研究にあてても良いというGoogleの20%ルールを参考に、サイボウズ・ラボでは50%ルールを作り、エンジニアの自由な発想と自主性にまかせた運営を行っていました。 一人のプログラマーがプロジェクト提案からコードの実装を行えるIPA未踏ソフトウェア創造事業出身者を多く採用したことでも有名です。

その中で私は自身のセキュリティに関する研究テーマの開発と対外発表の傍ら、サイボウズ・ラボの人材強化のため、様々な技術者イベントやカンファレンスの企画実施をしたり、数多くの業務を自由にさせていただきました。 50%ルールも分刻みの正確な時間管理をしているわけでもなく、私自身はほぼ事実上100%で動いていたかもしれません。 このような活動を継続的に認めてくれた上司と会社には今でも感謝しています。 当時の日本では認知度の少なかった「ハッカソン」や「開発合宿」を会社の枠を超えて企画実施したりと、オープンソースコミュニティの優秀な仲間達と一緒にエンジニア文化を作って、世の中に広めていく仕事ができたことは今でも大きな経験になっています。

セキュリティキャンプとの関わり

2006年からセキュリティキャンプの講師として日本の人材育成事業に関わるようになり、セキュリティのことがわかるものづくりエンジニアを育成するにはどうすればよいのかというテーマで9年間試行錯誤を繰り返してきました。 最初はx86アセンブラプログラミングからWebセキュリティの基礎と応用を体験できるプログラミング演習の講座を立ち上げ、その後はWin32 APIハック、Linuxカーネルハック、OS自作、ルーター自作、攻撃検知ソフトの自作、BadUSBハードウェアの自作など 若い学生さんが楽しみながら学習できる教材を優秀な講師の人たちと一緒に作ってきました。 同じメンバーがいつも集まって平均年齢が毎年1づつ上がる日本のセキュリティ業界の中で、ハッカー素質のあるプログラマー出身のエンジニアが入ることによって、新たな風を吹き込むことができたのではないかと思います。

国はハッカーを育てることができるのか?

2012年からは、世界各地で盛り上がっているCTF(Capture The Flag)の大会を日本でも継続的に開催したいというモチベーションで、NPO法人日本ネットワークセキュリティ協会の下でSECCON実行委員会を組織して活動を開始しました。 最初は事業にかけられるお金も少なく、実行委員や問題作成の人も完全ボランティアで持ち出しの多い状況でしたが、世界で活躍している一流の日本人セキュリティ技術者の皆さんと一緒に楽しく運営することができました。 普通のCTFだと面白味が少ないということで実行委員の個性を生かした様々な企画を立ち上げて、 問題を作成したり、協賛企業各社をまわったり、各省庁の後援申請をしたり、政治家の先生にレクチャーしたり、メディアの取材協力に奔走したり、各省庁の官僚の方々と一緒に他国の事例を参考にして国の政策を考えたり、と、普通では経験できない幅広いことを体験することができました。 ホワイトハットハッカー育成というくくりでTV・新聞・メディアの取材が多かったのはこの時期です。 2015年2月には、世界58ヶ国、累計4186人の中から各予選を優秀な成績で勝ち進んだ全24チームが東京に集まる CTF決勝戦を開催し、当日は情報通信技術(IT)政策担当大臣が現地に視察に来られました。

これらの活動を通して、世界の中から見た日本の現状を客観的に認識できる機会が多くあり、日本の技術と教育で足りないものは何なのか、いろいろ考える機会を得ました。

サイボウズ・ラボユースの設立

産業界のIT学会離れが進んだ中、産学連携の「産」の立場で、言語処理学会情報処理学会プログラミングシンポジウム、コンピューターセキュリティシンポジウムなどの運営をのぞかせていただいたのですが、 国の研究予算が削減されたり、様々な制約が増えている環境の中で一流の研究者・教育者の方々が奔走している姿を見ました。 現在、大学教育で問題になっている学力低下、論理思考能力の低下、文章作成能力の低下、研究力低下、論文数低下などの 様々な問題を解決するためには、学習環境の改善のほかに、本流とは異なる別の学習機会の提供が必要と痛感しました。

サイボウズ・ラボでは、2011年よりラボユースという学生支援制度を作り、優秀な学生さんが学校の枠をはみ出て、プログラミングの学習やものづくりを金銭面や技術面でサポートできる環境を提供しました。 それから数年経過し、ラボユースを卒業したあと、産学ともに様々な場所で活躍する人も増えてきて、教育者冥利につきる思いです。

今後について

2015年9月1日より、株式会社リクルートマーケティングパートナーズに入社し、技術フェローに就任しました。 リクルートグループの中で結婚情報誌「ゼクシィ」の媒体を持ち、主に新規事業開発を担当している会社です。 最近ではEdTechベンチャーの「Quipper」を買収し、受験サプリ、勉強サプリを拡大し、教育事業のグローバル展開に参入したことで話題になりました。 私が所属するラーニングプラットフォーム推進室では、2年前より自社エンジニアによる内製開発を進めており、リクナビ進学アプリ、料理サプリ、英単語サプリなど、多くの新規自社サービスを開発してきました。 リクルートグループの中でエンジニアの裁量が大きく技術力の高い会社として知る人ぞ知る存在になっていて、多くの優秀な若いエンジニアが集まっています。ジョインしてまだ2週間ですが、彼らのポテンシャルには驚かされるばかりの毎日です。 これからの日本の晩婚化・少子化問題、世界の貧富の差、教育問題を解決するべく、いままでの経験を生かして、内製エンジニアの働きやすい環境を整え、技術の力でより良い未来を作る仕事に携わります。

今後の活動、これから何をやっていくかについては会社のエンジニアブログ「NET BIZ DIV. TECH BLOG | リクルートマーケティングパートナーズのデザイナー、エンジニア、スクラムマスターたちが発信する Web 開発情報メディア」で書いてまいりますので、どうぞよろしくお願いいたします。

tech.recruit-mp.co.jp

FAQ(追記します)

  • 技術フェローはCTOと違うのですか?
    • CTOとは違います。複数の会社を兼務する技術顧問とも違います。フルタイムでコミットしています。
  • なぜリクルートマーケティングパートナーズなのですか?

略歴をまとめてみました(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時発ぐらいの新幹線で東京に帰る予定です。