CodeIQ MAGAZINECodeIQ MAGAZINE

線形代数・時計の整数論・フーリエ変換・証明プログラミング・エニグマ暗号…どこまでわかる?「プログラマのための数学勉強会」

2015.04.13 Category:勉強会・イベント Tag: , , ,

  • 229
  • このエントリーをはてなブックマークに追加

3月27日、「第2回 プログラマのための数学勉強会」がヤフーで開催された。この勉強会にはゲームやアプリ、バックエンドなどの開発者が集まる。高校数学レベルの知識があり、仕事で使う数学の理解を深めたい人なら誰でも参加可能だ。

そんな数学好きが集まる勉強会であるだけに、ディープでマニアック、そして数学愛あふれるセッションが繰り広げられた。
by 馬場美由紀 (CodeIQ中の人)

行列と逆行列とは何か。要件、仕様、実装の3層構造で理解する

3Dゲームの開発にはベクトルや行列、データ解析や画像処理などに線形代数や解析学の知識が必要になるなど、デバイスや開発環境の進化に伴い、プログラミングと数学の距離は年々、縮まりつつある。それらの開発に携わっている人にとって、数学の知識を高めることはもはや必須とも言える。

より数学への理解と愛が深まる勉強会「プログラマのための数学勉強会」は、そうしたエンジニアたちや数学好きな人たちで、あっという間に予定枠が埋まる。

主催者でもあり、最初の登壇者でもあるヤフーの佐野岳人さんは、「参加応募者数は予定の4倍以上で、主催者としては嬉しい悲鳴。それだけ数学に興味を持っている人が多いことがわかった」と語っている。

佐野さんのセッションタイトルは、「プログラマのための線形代数再入門2 ~要件定義から理解する行列式と逆行列~」。

プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列 from Taketo Sano

「計算が好きではない人にとってはただの計算地獄になっていた行列式と逆行列の意味が分かるように、システム開発の文脈で説明し直し、プログラマが納得して使えるようになることです」と今回の目標を掲げている。

まずは2次正方行列をスクリーンに映し、その計算の方法を思い出すところから始まった。2次では簡単に計算できるが、4次行列ともなると、計算が膨大となる。「このような計算は機械がやればよいが、ただこれが何なのかは理解しておきたい」と佐野さんは言う。

そこで、エンジニアが理解しやすいように、要件、仕様、実装の三段階に分けてその意味と計算方法について行列式の解説を行った。行列式の要件とは何か。行列は線形変換の定量表現ということを復習した上で、要件を整理したところ、以下が行列式の要件となった。

  • n次元の線形変換はn次正方行列 (n2 個の数) で表される
  • 線形変換の特徴を 1次元の量 によって表したい
  • 特に「潰れてしまう」かどうかを判別したい

つまり、n次正方行列AはAの行列式 detA(一次元の量)。

次に行列式の仕様について。これは「変換後の面積の向きに注目」と佐野さんは言う。2次元の場合はdetA=「面積の倍率×向き」となるが、3次元以上になるとdetA=「体積の倍率×向き」という仕様になる。左手系の場合はdetA<0となる。=0の場合は潰れる。

そして行列式の実装について。n二乗次元から1次元の関数を一発で出すのは難しい。そこで複雑なモノは簡単なモノの組み合わせにする。そうすると以下が行列式の全てだという。

  1. 単位行列:detE=1
  2. 交代性:det(b,a)=-det(a,b)
  3. 多重線形性(行列全体では無く、行1個1個に対して線形性が成り立っている)
    :det(a1+a2,b)=det(a1,b)+det(a2,b)
     det(ka,b)=k・det(a,b)
    上記により以下の便利な性質が導かれる。
  4. det(a,a)=0
  5. det(a-kb,b)=det(a,b)

さらに行列式計算のアルゴリズムを説明し、「行列と行列式を好きな言語で実装する」という宿題を出した。

またn次行列式についても、(n-1)次行列式の和に展開できる→プログラミング的には再帰呼び出しでも実装できることを試してほしいとのこと。

佐野さんの解説は逆行列へ。逆行列とは逆変換に対応する行列で、detA≠0であれば、逆行列が求められる。3次元行列のお題を出し、その逆行列を求める計算を展開していく。高次元の行列の逆行列の計算は余因子行列による方法や掃き出し法、LU分解などの効率的な方法がある。

最後に次のように語り、発表を終えた。

「一番シンプルな形において変換を研究していくと、線形ではないものについても線形性を取り出して、線形性の理論を活用できる。次回は基底変換や固有値、そしてその先の線形でないものに、どのように線形性の理論を応用するか話をしたい」

【動画】「プログラマのための線形代数再入門 2」佐野岳人さん

「時計の世界の整数論」を学ぼう

次に登壇したのは、日曜数学者の辻順平さん。日曜数学者とは、ざっくりいうと興味の赴くままに趣味として数学を探究する人のことで、一番「熱い」と思う対象について学んだり、話したりする人のことなのだそうだ。

そこで今回の発表は、自身の中で最も熱い「整数論」について。整数論に興味を持ったきっかけは、カール・フリードリヒ・ガウスという超天才にひかれたこと。

「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg from Junpei Tsuji

ガウスが24歳の時の著作「ガウス整数論」の中で最もひかれた一節を紹介し、その言葉が気になり、理解したいという気持ちが整数論への関心に拍車をかけ、その熱い思いを勉強会の参加者にも伝えたいと語る。

「整数論には2通りの愉しみ方がある」。1つは芸術のように楽しむ方法だ。これは背景や美しさを理解して鑑賞するというもの。もう一つがパズルゲームのように楽しむ方法だ。

これは手を動かして遊ぶもので、今回の発表でも実際に参加者に手を動かしてもらい、その楽しさを知ってもらうことを行った。

一般的な整数の世界とは、1直線上に数が並んでいる世界のことを言う。この並んでいる直線上のらせん状に巻き付けると時計の世界が完成する。時計の世界では同じ時間に位置する数は合同の関係にある。

例えば5時間時計においては1と6は同じ時間を指している。つまり1と6は合同である、と表すことができる。これを数式で書くと1≡6(mod5)となる。合同の数は同じものとみなせるので、5時間時計だと0、1、2、3、4の5つだけを考えればよいことになる。

ここで辻さんは時計の世界の足し算やかけ算を紹介。「このような計算をしていると、べき乗の計算がしたくなるはず」と言い、5時間時計や7時間時計、11時間時計、13時間時計の世界におけるべき乗の表を紹介。

そして「時計の世界の整数論の法則を、手を動かして見つけてみましょう」と呼びかけた。その例として「1のべき乗はすべて1である」という法則を紹介。

約2分後、解答例を披露。一つ目の解答は「一番右の列はどの表を見ても必ず1になる」というもの。実はこれがフェルマーの小定理だ。

次に1つは必ずすべての数が出ている列があるという法則。これは原始根定理。原始根のべき乗によって、0以外のすべての数を巡回できる。

最後はn二乗の列に注目してほしい、と辻さん。例えば11時間時計の場合、n二乗列には1、3、4、5、9のみが現れる。またオイラーの基準となる列(11時間時計の場合はn5乗列)が1となるようなnは1、3、4、5、9だけで、n二乗列に現れる数字1、3、4、5、9と一致する。ここでちょっと寄り道し、フェルマーの二平方定理についても説明。

これまでは1つの時計の世界で完結する話だったが、次は2つの時計の世界をつなぐ法則を考えることに。ここでも重要になるのが、「n二乗の列」。

例えば5時間時計の世界でn二乗列に11≡1があることと11時間時計の世界でn二乗列に5があることは関係しているっぽい、と説明を続ける。5時間時計とは4N+1型である。

一方、11時間時計は4N+3型である。4N+1型と4N+3型との間には平方剰余の相互法則がある。平方剰余の相互法則を使うと、例えば5時間時計で270329(≡4)がn二乗列にあるという計算ができれば、270329時間時計で5がn二乗列にあることがあっという間に計算できることになる。

「まだまだ法則はあるので、Webサイトを訪ねていろいろな法則を楽しんでほしい」と辻さん。また興味を持った人に向けて、さまざまな参考文献やネット上の記事を紹介。最後に「整数論を一緒に愉しみましょう」と呼びかけ、発表を終えた。

【動画】「時計の世界の整数論」辻順平さん

フーリエ変換を理解し、JPEGの画像圧縮の方法を学ぶ

3番目に登壇したのは、ミクシィの武田祐一さん。武田さんは現在、iPhoneアプリの開発に携わっている。

講演テーマは、大学や大学院で画像処理を専攻していたことから、「フーリエ変換と画像圧縮」について。「画像はいろいろなパターンの縞模様を足し合わせることで表現できる」と本題に入る前に前置き。その上でJPEGがなぜ、高圧縮率を実現しているかを解説していく。

フーリエ変換と画像圧縮の仕組み from yuichi takeda

まず始めたのは、三角関数の復習。sin(x)やcos(x)のグラフでは、xに係数を乗ずると周期が短くなる。この係数は周波数と呼ばれる。

いろいろな周期の三角関数を重ね合わせることで、いろいろなグラフを作ることができると語り、いろいろな三角関数の重ね合わせのパターンのグラフを表示。そしてうまいこと重ね合わせていくと、なんと直線まで表現できる。

これはフーリエ級数展開という理屈で、「任意の関数は、三角関数の級数で表すことができる」。つまりどんな関数でも、三角関数の足し算だけで置き換えられる。

ここでフーリエ級数展開の例を提示した式に代入し、グラフで示していく。すると2次関数に近似できることもわかった。ただ、フーリエ変換は任意の関数に成立するわけではない。実は、次の制約を満たす関数のみに限定される。

  1. 周期関数のみ
  2. 区分的に滑らか

フーリエ級数展開の制約を満たさない場合は、周期関数とみなして近似され、滑らかでない点でギプスの現象が発生する。「フーリエ級数展開は近似を行うことができるが、どんな関数も近似できるわけではない。このことは覚えておいて欲しい」(武田さん)

次にフーリエ係数と周波数の話に。フーリエ係数はさまざまな周波数の三角関数の級数で表したときに、各周波数がどれだけ含まれているかを表したものだ。

フーリエ係数を求めることで、関数がどのような周波数で構成されているかを調べることができる。そしてこのフーリエ係数を求める課程を拡張し、ある関数の周波数ごとの特性を表す関数に変換する。それがフーリエ変換だ。

さらに、フーリエ級数展開を用いて、フーリエ変換を導き出す方法について解説を、かなりの巻きで進められた。そして逆フーリエ変換についても簡単に説明。

フーリエ変換、逆フーリエ変換を使うことで、ある関数について周波数で表現したり、元の表現に戻したりすることができるようになる。どんな周波数が含まれているか、実際にフーリエ変換をグラフ化すると、一目でわかる。

ではフーリエ変換とフーリエ係数展開とは何が違うのか。初見では違いが分からないかもしれないが、周波数をより表現しやすくなったのが、フーリエ変換である。

今までのフーリエ変換は連続値の関数を扱ってきた。しかしコンピュータで処理をするには、離散的なデータ点で処理を行わなければならない。そこで用いるのが離散フーリエ変換だ。これを用いれば、関数のときと同様、入力されるデータにどのような周波数が含まれているかを調べることができるようになる。

「ここからが2次元に拡張し、画像へと応用していく」と武田さん。二次元離散フーリエ変換の入力は2次元のデータ点であり、2次元のさまざまな周波数の三角関数が入力にどれくらい含まれているかを表すことができると定義できる。

つまり2次元のデータ点である画像をフーリエ変換すると周期の縞模様に分かれる。その模様に分解されることで、どのような周波数からできているか知ることができる。この性質を利用すれば、周期の縞模様画像を再構成できるようになる。

武田さんが実際に再構成するシーンを見せると、参加者からは「おーすごい!」という感嘆の声が聞かれた。

ここまで解説したところで、本題のJEPG圧縮について。画像圧縮は周波数の偏り(周波数の低い成分が多く、高い成分が少ない)を利用して行われる。JPEG圧縮ではこの性質を利用している。

画像全体を8×8に分割。1600個のブロックに分割し、各ブロックを離散コサイン変換する。離散コサイン変換とは、離散フーリエ変換の親戚みたいなモノで基底関数を変えたものである。次に量子化を行う。

その結果、多くの要素が0に。最後にジグザグスキャンを行い、残りの要素がすべてゼロになったところで打ち切る。残りの部分が削られることになるので、画像が圧縮されるのだ。

【動画】「フーリエ変換と画像圧縮」武田祐一さん

証明することに興味がわく?Agdaによる証明プログラミングとは?

20分間の休憩後に登壇したのは、お茶の水女子大学大学院の大学院修士課程1年の門脇香子さん。研究テーマはコンパイラの定式化。趣味でUnityを使ってゲームを作ったりしているのだそう。

「日常的に証明する人はどのくらいいますか?」という呼びかけから、門脇さんの発表は始まった。タイトルは「証明プログラミング超入門」。

残念ながら、参加者の大半は日常的に証明をしている人はほとんどおらず、門脇さんは「今日の発表を聞いて、プログラミングの証明に興味を持ってもらえればと思います」と語り、証明プログラミングの説明に入った。

証明プログラミング入門2 from Kyoko Kadowaki

証明プログラミングとは、ある種の性質を保証したプログラムが書け、数学の定理を証明したり、停止性などの性質が保証されたコンパイラを実装できる。ではどんなことが証明できるのか。

その一例として門脇さんが上げたのが、コードの停止性(無限ループがない)や計算結果に間違いがないかという正当性である。実際にOpenSSLの脆弱性の発見やConpCertなどに活用されている。

しかし先日、証明プログラミングの言語である「Coqにバグがあって、ある定理を使うと全部溶けてしまうことがわかった。こういうことからも証明プログラミングはまだまだの世界だが、テストではなく証明で正しさを保証するので、有益に活用できるはず」と語る。

今回の発表で門脇さんが証明プログラミングの言語として用いたのはAgda。これは最も有名な定理証明支援系の1つで、依存型という型を使用できる。また証明を項として表し直接操作をする。何よりも「AgdaはCoqに比べると人間が読める言語になっている」と、Agdaを選んだ理由をそう語る。

どう書いていくか。「まずは型を定義することから始める」と門脇さん。型定義に続き、関数定義の方法について説明。型定義ができたところで、証明してみることに。

最初に披露したのは同値性の証明。2つのものが同じということを定義する方法を示した。

ただその定義を見てもなかなか分かるものではない。「このような型的な感覚はある日突然、悟れるようになる。今は分からなくても大丈夫」。

例えば「0+n≡n」を示したい場合は、返り値がreflとなるように関数をかければよく、unitplusという関数が書ければそれで証明できたことになる、と説明する。「Acdaでは依存型(Dependent Types)が使えることも覚えておいて欲しい」と門脇さん。

ここまでは序章で「ここから本題」と語り、まずは中学校ぐらいの数学を思い出してほしいと言う。今日の目的は一階述語論理をAgdaで表現し何かを証明することである。述語論理とは命題論理の拡張である。

「命題論理は高校の数Aで登場するので、見たことがある人が多いのでは」と門脇さんは続ける。命題論理とはP → Q(PならばQである)、¬ P ∧ Qなどのようなもので、命題変数(PやQ)を原始式(それ以上分解できない命題)とした推論体系である。

真(T)または偽(⊥)、¬(否定)、∧(&)、∨(or)などの結合子を組み合わせて、さまざまな論理式を作ることができる。一階述語論理とは個体の量化のみを許す述語論理で、具体的には古典論理に原理論理式と量化が加わっているものだ。

続いて、Agdaによるサンプルコードの説明を開始。この辺については実際にサンプルコードを見てほしい。もちろんそれだけではなかなか理解できないだろう。そこで「お勧めの教材がある」と門脇さん。

実はお茶の水大学の情報科の大学院ではAgdaを学ぶのだそう。だから自前でWikiを作成しているのだそう。

発表終了後、参加者からさまざまな質問が。例えば「どんな風に使えるのか」という質問には「実装も証明もできるのがAgdaの特徴です。コンパイラの機構を実際に作って動かすこともできるだけではない。きちんと数学的に証明できるので安心できるのでは」と回答するなどして、門脇さんの発表は終了した。

【動画】「証明プログラミング入門2」門脇香子さん

映画「イミテーションゲーム」がさらに楽しくなる、エニグマ暗号とは何か

最後に登壇したのは、堀川隆弘さん。堀川さんの発表タイトルは「エニグマ暗号とは何だったのか」。

エニグマ暗号とは何だったのか from Takahiro (Poly) Horikawa

エニグマ暗号にちなんで、お手製のエニグマTシャツを着用。そのTシャツのバックプリントにはエニグマ暗号が。「興味のある人はぜひ、発表中に解いてほしい」と会場に呼びかけ、堀川さんの発表は始まった。

3月13日より全国で公開されている映画「イミテーションゲーム エニグマと天才数学者の秘密」。サブタイトルからも分かるとおり、これはドイツ軍が誇る暗号エニグマの解読に挑んだ英国の天才数学者アラン・チューリングの人生を書いた物語だ。

参加者の中で見た人は意外にも少なかったが、堀川さんは「今日の話を聞くと、より映画が楽しめる内容になっているので、お楽しみに」と語り、エニグマの構造と動作原理について解説を始めた。

エニグマとは第二次世界大戦でドイツが用いた換字式暗号機である。1文字ごとにローターが回転し、漢字表が切り替わる多表換字式を採用しており、「電動式というのが画期的だった」と堀川さんは言う。

エニグマはプラグボード、ローター、リフレクタの各パーツが換字表となっており、組み合わせによって暗号化される。

その中でも肝となるのが、ローターである。複数のローターから3枚を選んでエニグマ機にセットし、オペレータはローターを回転させて、エニグマ機の窓から見える文字を調整する。

一文字タイプするごとに一番右のローターが1/26回転。各ローターはある特定の位置で繰り上がり、左側のローターを回転させる、という非常に複雑な構造となっていた。

次のリフレクタは、ローターと似ているが固定されており回転はしない。13個のペアを入れ替える換字表となっている。

例えば「A」を入れてXが出てくるのであれば、Xを入れるとAが出てくる。これによりエニグマ全体も対象的、かつある文字を自分自身に暗号化しないという特徴を持つ。

そして最後はプラグボード。これがエニグマ機の前面についている。時期によって数は違うが5~10個の文字のペアを造り、プラグでつなぎ、プラグの両端に対応する文字を入れ替える役割を担う。

組み合わせ数は膨大で、10ペアだとそのパターンは150兆通りにもなる。つまりエニグマはローターの配列(どのローターを使いどういう順番でセットするか)、ローターの位置、リング、プラグボードの設定が日鍵(共通鍵)として使われるのだ。

このようなエニグマの強固の暗号をポーランドの数学者レイェフスキはどうやって解読したのか。解読したいのは軍事用エニグマ機だが、彼らの手元にあったのは商用版のエニグマ機とオペレーション・マニュアル、傍受されたエニグマ暗号文だった。

「商用版と軍用版は中の配線が違う。これらの限られた情報から軍事用の配線を解読し、レイェフスキは軍用エニグマの複製を作ることを考えた」と堀川さんは語る。さらに当時のドイツ軍の暗号送信手順などを説明した上で、レイェフスキがエニグマ暗号機を解読していったプロセスを解説した。

つまり当時のエニグマ暗号機の弱点である、メッセージ鍵の繰り返しに着目したレイェフスキはエニグマの解読に欠かせない性質を見つける。

それがレイェフスキの定理であり、その定理を証明したことで、新たな2つの性質が導かれる。そしてそれによりA~Fを特定していったという流れだ。

A~Fを定式化したが、S、N、Qの3つの変数が未知数でこのままでは解けないとなったときに、レイェフスキの手元にドイツ軍の日鍵のデータが届いた。

それでプラグボード配列Sが既知となり、残り未知数を明らかにしていった。このようにしてローター配線を解明していったレイェフスキは、傍受した暗号文と日鍵からエニグマの内部配線を解明。

今度は日鍵が不明な暗号文から日鍵を割り出すため、膨大なプラグボードの設定を無効化する方法を考えた。

これらは、「1939年にイギリスとフランスに引き継がれていった」と堀川さんは言う。そしてイギリスによるエニグマ解読、チューリング・ボンベの話に移った。

なぜボンベが誕生したか。その背景にはいずれドイツ側もポーランドが見つけた弱点に気付くことを予測したからだ。そこでローターの設定ごとにプラグボードのペアリングの推論を行い、矛盾のある設定を除外していくというアイデアを考えたのだとか。

この推論を行うために、クリブ(暗号文と平文の対応が分かっている箇所)が必要になるため、メッセージにひんぱんに現れる定型句に注目したのだ。そしてクリブの平文・暗号文の対応関係をグラフ化し、その中に現れる閉鎖ループに着目したのである。

初期ボンベの仕組みなどは、発表資料がスライドシェアに出ているので詳しくは見て欲しいが、プラグボード無しで、クリブの文字位置に応じてローター位置を進めた複数の疑似エニグマ回路を直列につなぎ、最初にペアになっていると仮定した文字を突っ込み、最初と最後に矛盾があるかどうかを見ていくのである。

矛盾があれば次のプラグボードのペアの仮設を試す。26文字全てが駄目なら、ローター位置を1つ進めるのである。

これをローター配列・位置ごとに繰り返し、矛盾が見つからないとボンベは停止し、その時点のローター設定・プラグボードペアの仮設を示してくれるのだ。誤ったローター設定やプラグボード設定など、最初のプラグボードの仮定と矛盾のない結果が得られてしまう場合でもボンベは停止する。

「初期ボンベではこのような偽の停止が起こる確率は1/26もあった」と堀川さんは言う。偽の停止をはじめ初期ボンベにはさまざまな問題点があった。

それを解決するためのアイデアが「フィードバック・ループと対角ボードだ」と説明。これらの2つのアイデアについて詳しく説明した上で、ペアリングの仮説の広がりを可視化したデモを実施し、発表を締めた。

【動画】「エニグマ暗号とはなんだったのか」堀川隆弘さん

すべての発表が終わり、再度佐野さんが登壇。「この勉強会はこれまで接点のなかった未知の分野の話もあったと思いますが、全く分からないのになぜか面白いという経験ができるのは貴重なことだと思います。次回は5月末に開催する予定。ぜひ、参加してください」

こう参加者に呼びかけ、勉強会は終了した。プログラミングに役立つ数学からマニアックな数学まで学べる「プログラマのための数学勉強会」。数学に関心のある方は、ぜひ一度参加してみてはいかがだろう。新しい悟りが開けるかも。

関連ページ

自分の書いたコードを誰かに評価されたいエンジニアは、けっこう多い?

ITエンジニアのための実務スキル評価サービス『CodeIQ』で出題されている「コード銀行」問題に挑戦すると、あなたのコードが評価されます。

評価(1)出題者からの評価  ⇒評価フィードバック例を見る

  • 企業ではたらくという観点からあなたのコードをチェックします
  • フィードバックされた観点をふまえてコードを書くと世の中の企業にとって「いいコード」が書けるようになります

評価(2)企業からの評価  ⇒評価フィードバック例を見る

  • 「あなたと一緒にはたらきたい」という企業からスカウトが届きます
  • あなたのコードが社会でどこまで通用するか、リアルな評価が得られます

興味を持った方はこちらからチャレンジを!

  • 229
  • このエントリーをはてなブックマークに追加

■関連記事

アドテクは新しい技術の宝庫!?──ヨッピーさんがインターネット広告の未来、面白さを探る... 1994年のバナー広告から始まったアドテク発展の歴史 今回インターネット広告とアドテクをテーマを選んだ理由は、「アドテクに携わっているエンジニアがすごく少ない」」っていう話を聞いたからなんですね。でもインターネットにおける広告の役割はビジネスにとってすごく大事なことだし、新しい技術もあれこれ入っ...
ヤフー・クックパッド・ピクシブの現場エンジニアが語った、HTTPS化の裏側と対応のコツとは?... 3名の登壇者と川田氏によるパネルディスカッション 2014年にGoogleがHTTPS化対応サイトを検索結果で優遇するロジックを実装したが、日本ではなかなかHTTPS化が進んでこなかった。 セキュリティリスクの低減、開発・運用の効率化、安全性や信頼性のアピールなどHTTPS化には多くのメリットが...
ソフトバンク・ヤフー・HDE人事責任者が明かした「最先端の採用手法」とは?... 事業とともに変化する採用への挑戦―ソフトバンク 第一部のセッションを務めたのはソフトバンクの小山亮氏。セッションタイトルは「新たな道を切り開け!『事業とともに変化する採用への挑戦』」。 小山氏は5年前にソフトバンクに転職。3年前より新卒採用をメインに担当している。 ▲ソフトバンク株式会社 人事...
ヤフーがAndroidアプリに関する技術や開発事例を共有する「CAMPFIRE Android」を開... Yahoo!知恵袋をRxJavaでフルリニューアル ヤフーのAndroidにおける技術情報を共有するMeetup「CAMPFIRE Android #1」が、4月19日にヤフーのコワーキングスペース「LODGE」で開催された。 「Yahoo! Japanでの取り組みや開発のコツを知ることができる...
営業・事務職もプログラミングを学びたい!「TECH::CAMP」イベントに96人の女性が参加... 女性がITの力で活躍する場を拡げるイベント「TECH LADY HOLYDAY」 「TECH LADY HOLYDAY」は、女性がITスキルの習得の魅力を知る機会、およびスキル習得アクションの機会を提供する女性のためのイベントだ。 ITの力で活躍する場を拡げることを目的に、「世の中にサービスを生...
データビジュアライゼーションから圏論・Haskellまで──プログラマのための数学勉強会【第6回】... 今回のテーマと目次 「プログラマのための数学勉強会」第6回のセッションテーマは以下のとおり。 心地よさと数字 難易度★☆☆ 数学がデジタルアートに! 高速なシェーダで可視化する数学の世界 難易度★☆☆ Wolfram Language コトハジメ ~ Wolfram Alpha って聞いたこと...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ