Welcome!

tex2e

Mako

(tex2e)


高専生・自称Rubyist・怠惰のためのプログラミング

ゲームとパソコンが好きだったので、高専の情報科に入学。 高専祭でゲームをクラスメイトと作って展示して学生会長賞を取ったり、 友達とRailsで夜祭入場管理&抽選システムを作って運用されたのはいい思い出。 いろんなプログラミング言語を触る言語オタクになってLaTeXでプログラミングしたり、UNIX哲学に感化されてシェル芸人を目指していた時期もある。 本科卒業と同時に電気情報システム専攻科に入学。 セキュリティキャンプ全国大会2018のTLS1.3/暗号ゼミの修了生として今に至る。

Works

今まで作ってきた作品などです。 これら以外にもいろいろGithubで公開しています。 技術系の成果物や備忘録として作成した「晴耕雨読」という技術系ブログもあります。 私の興味・関心分野について知りたい方は、こちらをご覧ください。 専門特化系の技術者ではないですが、自分の守備範囲は Web系/暗号技術/プロトコル/セキュリティ などです。


Ecoris

View on GitHub

「Ecoris」は高専3年生の高専祭(工嶺祭)のクラス企画で展示した LeapMotion で行う3Dテトリス。 Ecoris は 3Dテトリス + エコ に由来し、手の動きを利用して缶ブロックを潰したり、 生ごみブロックを振って小さくしながら遊ぶテトリス。 このプログラム(C#)部分を担当し、工嶺祭の「学生会長賞」を勝ち取った。 使用環境は Unity + C#

Search Comments

View on GitHub | Visit Website

「Search Comments」は有名なレポジトリや、コード内コメントの質が良いと思われるレポジトリなどを対象にコメントを抽出しておいて、 それらを言語別で検索できるサービス。 使用環境は、コード内のコメントの抽出は Ruby、検索サイトは JavaScript + React

Browser Editor

View on GitHub | Visit Website

「BrowserEditor」はブラウザ上で Sublime Text のような操作を行うことができるエディタ。 自分の好みのエディタをインストールできない環境でも、少しでも快適に作業することを目的として作ったやつ。 使用環境は JavaScript + Ace.js + maximize-select2-height

Recursive Tree Renderer

View on GitHub | Visit Website

「Recursive Tree Renderer」は、ランダム性を有する再帰木を描画するツール。 作成した再帰木は、背景を無色透明で保存することができる。 再描画ごとにランダムな樹形が描かれるので、美形が出るまで何回も描画させたり、各パラメータを変更しつつ遊んでもらえると嬉しいです。 使用環境は JavaScript + p5.js

ruNNing AWay

View on GitHub

「ruNNing AWay」は高専4年生の高専祭(工嶺祭)のクラス企画で展示した LeapMotion で行う、扉を開けまくるゲーム。 ゲームデザインはホラー系であるが全く怖くはない。ブラウザで遊べるのが最大の売り。クラスメイトが展示した「落ち魂」と共に、こちらも「学生会長賞」を勝ち取った。 使用環境は ES6 + three.js + leapjs

quadratic formula

View on GitHub | Visit Website

「二次方程式の解計算ツール」は二次方程式の解を計算するためのツール。 二次方程式の解計算ツールでは、分数・平方根・虚数などの表示がきれいに見えるように MathJax を利用している。 使用環境は JavaScript + MathJax

ejjedict

View on GitHub

「ejjedict」は英和和英辞典として使えるアプリ。 Mac の 辞書.app のようなアプリを Mac 以外でも使いたいと思ったのが作成に至った経緯。 Webで検索すれば辞書の代わりにはなるけど、回線速度が遅い時とかは重宝する。 Mac/Windows/Linux で実行可能。 使用環境は Electron + AngularJS

yalp

View on GitHub

「yalp」は LaTeX 文章の構造を解析し、JSON 形式に変換するプログラム。 もともとは学校の課題として提出するレポートにキャプションは書かれてあるか、参照は正しく行われているか、などを調べる品質チェッカーとして利用する予定だったが、1000行の LaTeX ファイルに対して構文解析に数秒ほどかかる有様なので、利用には至らなかった。 使用環境は Perl6

gold-heist

View on GitHub

「Gold Heist」はロボットに見つからずにお宝を手に入れるローグライク・ステルスゲーム。 高専4年のプログラミング演習で提出した課題でもある。 情報科のアピールとして、体験入学の展示にも使われた。 使用環境はC言語で OpenGL, GLUT, glpng

rokumoku

View on GitHub

「Rokumoku」は五目並べを拡張した六目並べ(コネクト6)をターミナルで遊べるようにしたもの。 サーバ側のプログラムを起動して、クライアント側の接続数が2つになるとゲームが始まる。 高専5年のネットワークプログラミングの課題でもあり、@KoiShinとの共同制作。 使用環境はC言語で ncurses, socket

color-name

View on GitHub | Visit Website

「色の名は。」は HTML5 で追加された Input Color を使って色を選択し、その色に最も近い色のトップ10の名前を表示する。 まだ会ったことのない色を、探しているあなたのために。 ブラウザやOSの環境によって Input Color の挙動が異なるので、PC の Firefox からアクセスして遊ぶのがオススメです。 使用環境は JavaScript

puzzdemic

View on GitHub | Visit Website

「Puzzdemic」は高専5年生の高専祭(工嶺祭)のクラス企画で展示した、パズルでワクチンを作って世界を救うゲーム。 2048というパズルゲームにPandemic (ボードゲーム) の協力型プレイとパンデミック要素を加えたもの。 産業フェアの長野高専のブースの展示にも使われた。 最新のChrome推奨。キーボードで遊ぶときはWASDと矢印キーを使ってください。 使用環境は JavaScript + D3 + イベント駆動

yorusai-entrance

View on GitHub

「5031 yorusai entrance」は学生証のバーコードによる夜祭の入場管理と抽選を行うシステム。 @nobuyoとの共同制作。 工嶺祭(こうれいさい)を数字に置き換えると 5031 になるところが名前の由来である。 もともと、学外の人の入場問題と抽選で当選した学籍番号の人が会場にいない問題を解決するために作られた。 2017年の工嶺祭夜祭でこのシステムが実際に稼働した。使用環境は Ruby on Rails

nnct-cancel-info

View on GitHub

「NnctClassInfo」は長野高専の補講情報のページから休講・補講情報を取得するAPI群を提供するサービス。 以前は休講・補講日の前日になるとメールを送信するようにしていたが、 今ではクラスのSlackに休講・補講情報を流すようにしている。 私が高専本科を卒業するまで稼働していた。 使用環境は Rails + GoogleAppScript + Slack

word-roots

View on GitHub

「word-roots」は英単語の語源を調べるためのコマンド。例えば colloquium(研究会)という単語を見たときに語源 loqu(話す)を発見するのは結構難しいので、 それならプログラムで調べようと思って作ったもの。 時々間違った語源を抽出してしまうので悪しからず。 ツリー構造の様に表示するのはtreeコマンドを自作したとき以来のこだわり。 使用環境は Python

latex2pptx

View on GitHub

「latex2pptx」は LaTeX によって作られた PDF スライドと、テキストファイルに書いたノートから、 パワーポイントを作成するためのコマンド及び環境のこと。 卒業研究発表会ではこれを使って発表に臨んだ。 作成した理由は主に、TikZで書いた図をスライドの方でも使い回したかったのと、 数式を示す必要があったからである。 使用環境は Python + python-pptx + ImageMagick + LaTeX Beamer

multiple-precision

View on GitHub

「Integer」は高専3年のときに多倍長演算の授業で作成したプログラム群。 本科卒業前に昔のコードを綺麗にした上で除算アルゴリズムを改良して公開することにした。 自宅のパソコンを使ってガウスのarctan系公式で円周率の小数点以下1000桁を求めるのに0.3秒、 10000桁を求めるのに2分7秒かかる。もちろんGMPには到底及ばない。 使用環境は C言語

lifegame

View on GitHub

「Lifegame」は私が知っている言語でライフゲームを実装したものを集めたレポジトリ。 何種類の言語を使えるかを説明するために作っていたが、 LaTeXでライフゲームを作ったあたりで既に満足してしまっている。 使用言語は c, java, lisp, python, ruby, js, go, perl, php, scala, erlang, elixir, c#, f#, swift, verilog, bash, awk, latex, ...

auto-sushiDA

View on Blog

「Auto-SushiDA」はGUIオートメーションと画像認識と光学文字認識で、 タイピングゲーム「寿司打」を自動化したもの。 荒らしが増えないように自動化ソースコードは公開していないが、 システム構成などについてはブログの記事として書き留めてある。 使用環境は Python + PyAutoGUI + PyOCR + Tesseract

Skills

プログラミング言語は多くの言語から影響されて作られた経緯があるため、幾つかの言語を同時に勉強するのが効率がいいかなと思っています。 もちろん勉強した全ての言語を使いこなせるという訳ではないですが、勉強した中で特に好きな言語(~= 得意な言語)について紹介します。


Languages

Ruby

純粋なオブジェクト指向・省略できる括弧・メタプログラミングの柔軟性 の三拍子が揃っているため、最も自由度が高く、効率的にプログラムが書ける言語の1つだと思っている。 優秀な正規表現を持つ点もポイント。

Elixir

Ruby風な構文で書ける関数型言語。ErlangのVM上で動く。 関数型言語の考え方と、Erlangのシステムと、Rubyのように扱えるオブジェクトが合わさった素晴らしい言語。 macroによるメタプログラミングも強力。

Python

「やりかたは明確な一つの方法にすべき」という考え方が強い。ただし完全ではない。 お気に入りの点は、関数やクラスに対して docstring を書けるところ。 機械学習プログラミングのときによくお世話になっている。

C#

静的かと思えば var を使って型の推論もできる。 デリゲート(ラムダ式)は + 演算子を使って1つのデリゲートにすることも可能だし、 - 演算子を使って特定のデリゲートを削除することも可能。この時点でイベント駆動開発待った無し。

Bash

様々な環境で標準で用意されている言語。 awk, sed, make はGNU拡張を除いて使える所謂FreeBSD派。 複雑なことをさせようとするとコードが途端に汚くなるので、複雑な場合は python にやらせた方が良いと思うよ。

Learned Languages


今まで勉強した言語の一覧を散布図で表しました。横軸が開発スピードを、縦軸が好みの度合いを、円の大きさは言語の使用頻度を表しています。 開発スピードは、個人的な判断ですが、僕がその言語に使い慣れているかどうかで判断しています。 なお、言語の使用頻度が高いからと言って、開発スピードが早くなるとは限りません。


Contact


GitHub Twitter