2018年振り返り

ざっくりと私の2018年を振り返りたいと思う。

学業

学業に関して、大学院は休学している。数学は趣味でやっている。

就職活動

去年就活をやったところ精神がズタズタに破壊されたので、今年は就活らしいことはしなかった。

1年も経てば就活で負った心の傷は多少は癒えるかと思ったがそんなことはなかった。

アルバイト

アルバイトは、大学のTAをやった(休学中でもTAはできるらしい)。

今年は他に、学外のアルバイトの面接を1件受けたが、謎の理由で採用には至らなかった。会社というのは不可解だ。

それでも金は欲しいので学外のアルバイトを探したいが、どう探して良いかわからない。求人サイトの求人を見ても無味乾燥に見える。

私のように初対面の相手との面接が苦手な人間としては、知人に紹介してもらうのが最善に思える。しかし…。どうしたものか。

アウトドア活動

私の関心は数学やプログラミングなどのインドアでできることが多くを占めているが、アウトドア趣味も息継ぎのように欠かせないものである。

登山に関しては、7月に日光白根山に登った。今年百名山クラスの山に登ったのはこれっきりだった。

日光白根山登山

他のアウトドア活動として、春ぐらいにスポーツ自転車を買った。10月につくばのサイクリングロードを走りに行った。

初めての輪行旅

そして、天文に関しては12月にキャンプでふたご座流星群を見に行った。

冬キャンと曇り空、ときどき流れ星

主な活動(数学とプログラミングなど)を時系列で

1〜2月:「週刊 代数的実数を作る」

1、2月は「週刊 代数的実数を作る」を書いていた。

それ以降はその書籍化に向けて色々やっていた。

3月〜7月:TeX処理系の実装、Pandocのあれこれ

「週刊 代数的実数を作る」を書き終えた3月からは、その電子書籍(EPUB)化を狙って「LaTeX数式をMathMLに変換するツール」を作ろうと頑張っていた。そのために「TeX言語の字句解析・展開器」をHaskellで書いた。

この時に書いたコードは https://github.com/minoki/yurumath に置いてあるが、まだ中途半端な状態である。

「週刊 代数的実数を作る」ではMarkdownで書いた原稿をPandocで処理したわけなので、Pandocのノウハウが溜まった。いくつかはブログやQiitaに書いた。

8月〜10月:技術書典5へのサークル参加、「代数的実数を作る」の書籍化、ClutTeX、SML

「週刊 代数的実数を作る」を書籍化し、10月の「技術書典5」にサークル参加することにした。

そのためにMarkdown→LaTeX→PDFという経路で文書処理を行うわけだが、LaTeX→PDFの部分で自作ツール ClutTeX を使い処理の自動化を行なった。

ClutTeXは2年ほど前に作ったツールで、LaTeX処理の際に作業ディレクトリが補助ファイル(.auxや.logなど)まみれにならないようにしてくれるすごいツールである。従来は基本的な機能しかなかったが、今回同人誌の原稿を処理させるにあたって、MakeIndexやBibTeXに対応させた。そして技術書典が終わった後にバージョン0.1をリリースし、CTANへのアップロードを行い、TeX Liveに収録していただいた。

夏頃から、SMLの勉強も兼ねてSMLによるSML処理系の実装を始めた。

9月16日に行われた勉強会「ML Day#2」のLTで進捗報告を行なった。

…しかしそれ以後は(技術書典で忙しく)あまり進んでいない。まだ型推論の実装の最中である。

そして10月8日の技術書典5である。初めてのサークル参加だったにも関わらず、皆様のおかげで、用意した約100部を完売という良い結果に終わった。

ここで配布した同人誌「代数的数を作る 多項式の根と因数分解のアルゴリズム」は、PDF版をBOOTHで購入できる。

10月〜12月:圏論、特にモノイド圏と閉圏について

技術書典周りが一段落したある日、Twitterで「HaskellのApplicative関手の圏論的な話を書いて欲しい」という電波を受信したので、ちょっくら書いてやるか〜〜〜と書き始めた。しかし途中で予想外の深みにはまり、最終的には50ページくらいのPDFが出来上がった(完成しているとは言ってない)。

Applicativeの記事はAdvent Calendarの記事として書いたが、他に2件ほどAdvent Calendarの記事を書いた。

数学ネタ

今年やった数学は、総括すると「計算機代数」と「圏論」の2本立てだった。

計算機代数

「週刊 代数的実数を作る」として、多項式の根と因数分解のアルゴリズムをHaskellで実装した。

ただ、現状の実装は演算のたびに終結式計算を行なっておりあまり効率が良くない。改良したいが、来年以降の課題になる。

圏論

モノイド圏と閉圏に詳しくなった。

細かいネタ

Leap Motionで手の回転×2を検出し、4次元の回転にする(4次元の物体を回転させる)やつを実装した。動かす4次元の物体としては、超立方体と正24胞体を実装した。

しかしこれ以上の掘り下げはできていない。来年はもっとちゃんとした動画を作成できると良い。

OSS活動

purs-tsd-gen

2月ごろ、PureScriptで書かれたモジュールをTypeScriptから使うためのツール purs-tsd-gen を作って公開した。GitHubには現在15スターがついている。

ClutTeX

先述したように、LaTeX処理自動化ツール ClutTeX をリリースした。GitHubには現在7スターがついている。

pandoc-aozora-ruby

先述したように、Pandocで青空文庫形式のルビを使えるようにするフィルターを公開した。

その他・バグ報告とか

新しいものを作るだけがOSS活動ではない。既存のソフトウェアをより良くしていくのも大事なことである。

既存のソフトウェアに関するコントリビューションは普段ブログやTwitterには書かないので、ここでまとめておく。

source2e.pdfのtypo修正

LaTeX2eのソースコード込みのマニュアルであるsource2e.pdfを読んでいたらいくつかtypoを見つけたので、修正のPRを投げた。無事マージされた。

purescript-mathの機能追加

ECMAScript 6で追加された数学関数をPureScriptから使えるようにpurescript-mathに手を加えた。PRを投げたが特に反応はない。誰がメンテしてるんだ?という状態である。

Pandocのバグ報告

PandocではLaTeXのマクロを一部扱えるが、\newcommandの直後のコマンド名の扱いが不適切だった。簡単に修正できる問題ではなさそうなので、修正パッチは作らず、イシュー登録という形とした。

LuajitTeXでrequire “lfs”できない

LuaTeXではlfsというグローバル変数を介してluafilesystemを使えるようになっている。ただ、普通のLuaインタープリターはluafilesystemを組み込んでいないので、Luaコードからは

local lfs = require "lfs"

という風に明示的にluafilesystemを読み込むことが標準的な手順である。

さて、Luaのrequireは組み込みライブラリーに対しても使うことができる。例えば、osライブラリーは最初から読み込まれているが、 local os = require "os" という風にrequireを使ってアクセスすることもできる。

これらの2つを踏まえると、LuaTeXにおいても local lfs = require "lfs" によってluafilesystemにアクセスできて然るべきだ、と考えられる。

実際、Lua 5.2/5.3を使うLuaTeXでは require "lfs" によってluafilesystemによってアクセスできる。しかし、LuaJIT(Lua 5.1ベース)を使うLuajitTeXでは、なぜか require "lfs" によって組み込みのluafilesystemにアクセスできない(require “lfs”すると外部のCライブラリーを読みに行こうとする)。

私はLuaに詳しい(Haskell一辺倒になる前はLuaも結構使っていた)ので、この程度の問題ならすぐに原因がわかるし、直せる。というわけで修正パッチ付きでメールで作者に報告したが、先方には直す気がなさそう(仕様扱い?)である。筆者の説明が足りなかったのか、それとも本気でLuaTeXで組み込みライブラリーをrequireすることは仕様外であると考えているのかは不明だが、筆者のコミュニケーション能力ではこれ以上の進展は望めない。無理やり押しても仕方がないと思っている。

ちなみに、Lua側での対処方法としては、あらかじめ

if not package.loaded["lfs"] and lfs then
  package.loaded["lfs"] = lfs
end

を実行してやれば、lfsが「読み込み済み」とマークされ、期待通り require "lfs" が動くようになる。実際ClutTeXではそうしている(のでClutTeXはLuajitTeXでも動かせるはずである)。

今年やらなかったこと

筆者が長年続けていることとして、wxWidgets(C++で書かれたクロスプラットフォームGUIツールキット)に関すること(Unicode周りのバグ潰し、IMEの実装)がある。ただ、この辺に関して今年は進捗がなかった(対価がないとしんどいフェーズに達している)。とはいえ今年もわずかながらwxWidgetsに関する記事は書いた。

Haskellに関する活動

今年もHaskellを普段使い言語として使った。「週刊 代数的実数を作る」で実装に使っているのはHaskellだし、Web版に使っている静的サイトジェネレーターHakyllはHaskellで設定を書く。青空文庫風ルビのPandoc filterはHaskellで書いた。まだ日の目は見ていないが、オレオレTeX言語実装YuruMathはHaskellで書いた。PureScriptのやつもHaskellで書いた。

その他、他人向けにいくつかブログ・Qiita記事を書いた。

来年もHaskellを使っていきたい。

雑感

去年就活をした時に「他人にわかりやすい成果が欲しい」と痛感した。コミュニケーションが苦手な自分が面接で口先だけで技術力をアピールするのは難しく、わかりやすい成果(物)の助けが欲しい。

とはいえ、今年も例によって、いろんなことに着手して中途半端な状態で放置したものが多かった(TeX処理系、SML処理系など)。

しかし、「技術書典5」で同人誌「代数的数を作る」を出せたのは一つの成果だと思う。あるいは、モノイド圏とApplicativeの話のPDFをAdvent Calendarで公開できたのも一つの成果だろう。

なので、「成果物を作る」という目標は、今年、それなりに達成できたのではないかと思う。

さて、当面の課題はアルバイト探しである。いつまでも親のすねをかじっているわけにはいかない。しかし、すでに書いたように、どういう風にアルバイトを探したら良いのかわからない。

今年を振り返ったついでに来年の抱負、なんて書いていたら年が変わってしまいそうなので、今回はこの辺にしておく。

今年もこのブログを読んでいただいてありがとうございました。来年もよろしくお願いします。


2018年振り返り」への1件のフィードバック

  1. ピンバック: 活動報告(2019年1月) | 雑記帳

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です