あざらしとペンギンの問題

主に漫画、数値計算、幾何計算、TCS、一鰭旅、水族館、鰭脚類のことを書きます。

文化の日だから文化的なことを書こう 2017

どうも、この前の台風で列車に閉じ込められた上、代行輸送のタクシーで深夜の駅の前に置き去りにされ、地下道で朝までやり過ごそうとして歩き回っていたら、偶然にもカラオケボックスを発見して、一鰭で飲めや食えや歌えやでフリータイム終了の朝5時を迎えたあざペンです。私がカラオケでできることといえば、ヘヴィメタルデスメタル)やハードコアをノイズ全開で叫んだり、下ネタ全開ソングを高らかに歌ったり、それくらいのことで、まぁ大概引かれます、という以前に私とカラオケに行くヒトなど存在しないのですが。

さて、今日は11月3日・文化の日です。三つ子の魂百まで、三日坊主、アニメの3話切りというように、3回までのうちに出来た土壌はずっと先まで大きく支配するという経験則があります。

3というのは自然対数の底 e = 2.718281828459\dots に近い値です。『秘書問題』(結婚問題というと別の組合せ論の問題と被る)では n 人の候補のうち最初の n/e 人を見ればいいという話もあります。3の『みっつ』は元々は『みつ』と言い、『満つ』に由来するという説もあるように、物事を判断するのに十分な数であると考えられる場合が多々あります。

え?今日は11月5日?え、じゃあ、今月も堕落した生を送ることが決まったようなものじゃないですか!

とまぁ、こうやって『帰宅部活動記録』のネタを絡めていくのもひとつの文化と言えるでしょう。というか今日は『赤池情報量規準』(AIC) などで知られる赤池弘次*1先生の誕生日なのか。さすがG社と言える人選です。ここに同期が知る限りで何人かいるというのは不思議な感覚です。某大企業の不祥事から Java へのフラストレーションまで知り合いのせいにできるというのは悪くないですがね^^

NLP ではなことお話したい

さて、私が最近やっていることといえば、あまりネタバレになるようなこともなく、つまりは話せるようなネタもなく、自然言語から形式言語までいろいろ手出ししているところです。自然言語処理、所謂 NLP(Natural Language Processing. 非線型最適化 Non-Linear Programming と紛らわしい)については、大学の授業で少しばかり勉強したことはありますが、まぁ素人です。統計モデルとしては誤り訂正符号と関係した隠れマルコフモデル(HMM)とか、ニューラルネットワークの一種である LSTM とかいうものが使われるのでしょうか?実際にどの程度の適合度、汎化性能をもった学習ができるのか、そんなこともよくわかっていません。

自然言語処理をやってみようと思ったのは、『あんハピ♪』の bot @anhpms に会話機能をつけようという目的意識からです。現状、占いをやっているだけではインパクトがないと考えているので。そういうことはもう誰かがやっているのは知っています。が、現状思ったよりは大した性能が得られていないとも思います。よくあるツールを使って『やってみた』系の話は中身がなさすぎるので、論文を読んでどこまでできるのか考えた方が良さげという意識もあります。そもそも私は『はなこ』とお話したいわけで、そのためには結構ガリガリチューニングする必要も出てくると考えます。そこはチューナーとしての腕の見せ所です。

よんこま文化祭とよんこま小町

さて、先日、『よんこま文化祭』なる同人誌即売会に参加してきました。それもサークル参加としてです。前回は一般参加でしたが、今回はたまたまサイトを開いたときに申し込み締切が近かったので勢いで申し込んでしまいました。結果、落としました。前回このイベントに足を運んだときにいろいろ事情が知れたことがあって思い入れがあるイベントだったので、今回は自分が発表する側に回ろうと性懲りもなく思ってしまいました。『あんハピ♪』の宣伝ができたら良いとも。加えて私は現在、田舎の富山と東京を行ったり来たりしている生活なので、正直に言ってわざわざ一般参加のために即売会に行こうとまでは思えないという事情もあります。

さて、今回落としたのは、『ねねっちのゼロから始めるNEW GAME!』というタイトルでした。内容は一応最後まであって、前に描いた『はじめての OpenGL』に続くものとなっています。イーグルジャンプ入社の結構前のこと、3D ゲームプログラミングに興味を持ち始めた『桜ねね』がアハ…『うみこ』から空のハードディスクを渡されるところから始まり、最小限の構成で行列、複素数四元数の基礎理論から実際のプログラミングまでをやって簡単な 3D ゲームを作るところまでを含めることを念頭に置いていました。特に重きを置くべきは、理論と実践を講義と演習を通して学んでいく部分で、すぐできる系の本とは一線を画すことを目指していました。

その結果、ページ数の見積もりが軽く3桁になってしまいました。当初は30ページを少し超える程度でやろうと思っていたことが、実際は1章で30ページに達してしまうくらい外していました。新・国際競技場のことを笑い話にできないほど私の見積もりはガバガバでした。私は何らかの都市計画について工期と総工費を見たとき、+3年、+3割、あるいはいつまで経っても工事が始まらないと見積もりを立てるタイプですが、自分のことに関して言うならば、そんなにかかったら死んでしまいます。

というわけで、3日前くらいに断念しました。遅すぎる決断で代わりに出せる4コマ関連のものもなく、結局は宣伝のための無料配布冊子とアフターイベントのプレゼント用に以前に描いた絵を持っていきました。

新刊となるはずだったものは、全章合わせて200ページ以上必要になるという見積もりが甘いというレベルを超越したものでした。故に今後も本になる可能性は低いです。自作マークアップ言語で書いていることもあって、一般の書籍とはかなり方法が違ってくるのも難点です。どうしてこんな無茶なことをしようと思ったのか、自分で自分にドロップキックした思いです。とりあえずは Web 公開を目指して作ります。本にできるかどうかは印刷所と費用の関係で決まるでしょう。

さて、よんこま文化祭はこんなところで、来年には『よんこま小町』(通称:こまこま)なる即売会が大阪で開催されます。正直に言ってしまえばこちらが本命です。

『文化祭』はあくまで合同即売会であり、元となる作品ごとに出品するという形式でした。昨年は4コマ漫画でない『あんハピ♪』のスペースもあって、実質的にはきららオンリーと言っていいでしょう。

一方で『小町』は4コマ漫画全体を特に区別なく扱う4コマ漫画の総合即売会という色合いが強いです。こちらも話を聞いた限りでは、きらら初期の『トリコロ』(奥付で KIRARA MENU 1 が与えられた正真正銘最初の作品。後に他社に移籍しましたが。)オンリーから始まったという意味では、やはりきららオンリーが源流にあるのですが、現在は4コマ漫画のサラダボウルという色合いです。

私は一時期榛名まお先生の作品を集めていたことがあり、それくらい自分にヒットしたことからして、作者様に捧ぐ二次創作というのもあっていいと思いました。洋書では例えば Tribute to Gene H. Golub*2 など結構ありますね。他にも欧米の大学では過去の偉人の名前を冠した建物が非常に多く、教授ポストにまで人名が入っていたりします。日本にはそういう文化はあまりないようで、賞に人名を冠することは多いですが、それ以外ではさほど見かけないというのが私の知る限りの感想です。

とまぁ経済的に成立する限りは小町への参加を考慮して今後の活動を決めていくということになるでしょう。

関数型言語について

めちゃくちゃ話が飛びますが、私は最近は主に Scala というプログラム言語をメインに書いています。Scala とは前にも言った通り『関数型 Java』です。近頃は 201x 年代に作られた新しい Java 系言語である Kotlin に注目が集まっていますが、これは Scala をベースにした言語であり、Groovy の文法も取り込んでいて、関数型の要素を持った言語と言えるでしょう。Rust なども本質的には関数型言語です。他には LispSchemeLisp 方言)、ClojureLisp 方言の Java)、HaskellOCaml(ML 系)が有名どころです。

私は関数型原理主義者ではないので、単なるユーザとして関数型言語のメリットを挙げるとすれば、

  • 大抵の場合、手続き型言語よりも同じことをするのにコードを短くできる
  • 目的の定義を自然な形でコードに落とし込める
  • 副作用に対する意識が身につくため、他の言語でも面倒なバグを起こしにくくなる

といったことが挙げられます。型付きの場合は型推論が強いことが多いため、型をほとんど明示しないでも、コンパイル時に不整合を検出してくれるのでミスが減るということもあります。遅延評価や無名関数といった最近の多くの言語で採用されている機能も、元々は関数型言語で開発されたものです。

いくつかの大学で教科書として使用される『計算機プログラムの構造と解釈』(略:SICP)では、Lisp を教育のために簡略化した関数型言語である Scheme が使われています。そのため、人生で最初に学んだプログラム言語が Scheme であるという人も結構いるのではないでしょうか。またある大学では授業で Haskell を使っていたりもします。そんなわけで、情報系学生において関数型言語は比較的身近なものであると思われます。

プログラムするというのはあくまで理屈を作ってコードにすることであって、言語を書くことではありません。関数型であれ論理型であれ、プログラムを組むということに複数の考え方を持つことは、実用的な部分でアルゴリズムとデータ構造を知るよりも、より深い部分でプログラムを知ることに相当するのではないかと私は考えます。

これから

いきなり今日のことですが、『音泉』で配信されているラジオ番組『だれ?らじ』の公開録音に行きます。元々はスマフョ向けゲーム『ららマジ』のキャラの『小田桐アミ』を演じられている声優『角元明日香』さんについて調べているときに、だれ?らじに出会いました。大人の事情で口に出せない方法で拝聴して好きになりました。少し前の『SSちゃんねる』のイベントには残念ながら行けなかったので、ならばとこちらにチャリンチャリンすることにしました。多分今年最後のイベントになると思います。

今更ながら『魔法少女?なりあ☆がーるず』にハマりだして、某ゴミサイトで動画を漁っています。Flash にはいい加減消えて欲しい。やはりア○ビを燃やすしか……

今やっていることとして、天之御船学園放送部 bot の機能の追加、自分の都合に合ったライブラリの作成と HTTP サーバの変更、引き続き『ねねっちのゼロから始めるNEW GAME!』の執筆、3D ゲーム Akabane の制作、漫画・イラストの制作、などなどやることは盛りだくさんです。勉強すべきこともたくさんあります。無職は意外と暇ではないです。

あと、このブログは git で更新管理していますが、自分側の記事のテキストとはてなブログの記事との同期を取るためのプログラムをちゃちゃっと書いてしまいたいです。というか最近はてなブログが重すぎて開く鰭にもなれないのですが……

もうしばらくは富山と東京を行き来する生活が続くとは思いますが、まぁそれなりにやっていけたらいいな、といったところで今回は締めます。

次があるかわかりませんが、またね〜

*1:統計学習理論の大家

*2:数値計算の大家