2022年を振り返って

#76
2022.12.28

気付けば、2022年ももう終わりということで、ここらで2022年の振り返りをしておきたいと思います。思考の大掃除とでも言いましょうか。来年になってしまってから、今年のことを思い返すのでは遅いと思いますのでね。

やったことのまとめ

まず、今年やったことをざっと書き出してみようと思います。とは言っても、大体が作った物の紹介ではあるのですが。

ウェブサイトの公開

今年やれたことの中で挙げたいのは、やはりこのサイトを作り上げることができた、ということでしょうか。ちなみに、このサイトは、すでにある静的サイトジェネレータには頼らずに、ジェネレータを自作して作りました。ツールを使わずに、一からサイトを作り上げてみる、というのは決して簡単なことではありませんでしたが、このサイトを作り上げていく中で、様々な学びを得ることができました。

React、JavaScript、CSSなどに触れること自体は全く初めてではなかったのですが、これらを組み合わせて、それなりな規模のソフトウェアを作ったことが今までには無かったのです。そういう意味では、私にとっては初のプロダクト、であると言えるのかもしれません。技術を知ること以上に、それを使って実用に堪えるものを作る、ということの難しさというのを実感させられました。技術はパーツなのであって、ものを作るにはそれらを綺麗に繋ぎ合わせなければなりません。

このウェブサイトを作り上げた過程に触れますと、このサイトは当初はただの静的HTMLでしかありませんでした。コンテンツの拡充に伴って、HTMLを生成するようなプログラムを書いていったわけです。どういう言葉で表すのが適切かはわかりませんが、真っ先に最低限必要な機能、すなわちプリミティブな部分を作ってから拡張する、というアプローチが私に合っていると感じたのです。

実を言うと、ウェブサイト自体は去年の10月ごろに公開したのが初めてなのですが、そのサイトはまともに使えるというレベルには到達してはいなかったのです。そのため、ある種のリベンジを果たすことができたというわけです。

しかし、今のサイトに関して言っても、これで完成というわけではなくて、まだ改修したい部分がかなりあります。特に、デザイン面についてです。それに、タグ付けをする機能もまだ実装できていません。これらに関しては、来年に持ち越すことになるでしょう。

頓挫したWYSIWYGエディタ"Fractal"

4月から5月にかけて、Fractalという、Electronを使ったWYSIWYGエディタを作ろうとしていました。コンセプトとしては、contenteditableとかをうまく使ってクロスプラットフォームなリッチテキストエディタを作ろう、というような感じでした。

しかし、最初から色々な機能を実装しようとしたために、全く使い物になるところまで到達しなかったのです。この開発のアプローチは、先に述べたウェブサイトの例とは正反対と言えるでしょう。最初からなんでもやろうとすると、迷走してしまうということを実感させられました。

自分用メモアプリ"Notist"の開発

8月5日の投稿にあるように、私は8月5日からは、一日一枚の形式の日記を書くことをやめました。しかしそれでも、私はメモ魔のようで、思いつきを書き残せるアプリケーションを求めてしまいました。そこで生まれたのがNotistというメモアプリです。これも、Fractal同様、Electronで書かれています。

これはどういうものかと言いますと、記述に自動的にタイムスタンプが付与されて保存されるという代物です。それまでは、わざわざ一日一枚テキストファイルを作成してそこにメモを残すということをしていたのですが、このアプリがあればその必要がなくなるというわけです。実際、毎日ファイルを作っていると、2年もすれば700枚を超えますし、管理がえらく面倒だったのです。また、タイムスタンプがあることで、記述がなされた正確な時刻を知ることもできるのです。

さらに、GUIアプリケーションにしたことによって、画像を挿入することが可能になりました。それまでの日記は、あまり形式が定まっていないプレーンテキストであり、画像を挿入することはできなかったわけです。メディアを挿入すること自体は、Markdownでも可能ではあるのですが、Markdownはやはりプレーンテキストなので、ファイル単位のタイムスタンプしか得ることができません。

コンセプトとしては、どんなことであってもとりあえず書き残せるようにすること、です。このアプリでは、全ての記述は一つのツリー上に書き込まれるようになっており、うまく階層構造を作ることによって、情報を管理することができるのです。巷ではグラフ型のノートアプリが流行っているようですが、個人的にはこのツリー構造の方が気に入っています。

Notistはまだまだ未完成ではありますが、個人的にはかなり良いと感じています。来年は表示の最適化や、インラインのマークアップを実装するつもりでいます。さらに、モバイル版があってもいいような気がしています。

ちなみに、Notistでは、前述したFractalのコードをいくつか拝借したりもしています。そういう意味では、Fractalは完全に無駄になったわけではありませんでした。

それ以外に作ったソフトウェア

  • Chronicler

    ファイルにタイムスタンプを付けたり、圧縮してバックアップしたりするためのツール。元々は日記ファイルを作るために開発しました。しかし最近は使っておらずお蔵入りとなっています。ファイルを作る機能はともかく、ファイルやディレクトリを圧縮して日付を付ける機能は割と便利ではあるはずなので、もしかしたら復活させるかもしれません。

  • Kotonoha

    単語学習アプリです。要するにAnkiのようなものです。自分で作った単語帳フォーマットを直接使えるアプリがあれば便利だということで作りました。しかし最近はあまり英語の勉強に力を入れているわけではないので半ばお蔵入りとなってしまっています。英語以外での活用方法を模索するのも手かもしれません。

  • Mural

    SVGで綺麗なパターンを生成するツールです。割と綺麗な柄が生成できるのですが、使い所がいまいち見つかっていません。

  • Kyōka

    React向けの状態管理周りを扱うライブラリです。Reactの関数コンポーネントと、オブジェクト指向プログラミングをいい感じに繋げてくれるという代物で、私がReactを使う時にはほぼ毎度このライブラリを使っています。NotistとKotonohaでも、このライブラリを使っています。

  • Toolbox

    開発でよく使うようなちょっとしたツールをまとめた道具箱、のはずなのですが全然完成していません。作らない理由もないのですが、わざわざ自分で作る必要が果たしてあるのだろうか?という疑問があります。

  • Scoresheet

    問題集の正答を記録するためのアプリです。なのですが、私は最近問題集を使うような勉強をあまりしていない為に使いどころが見出せていません。資格勉強などに役立ちます。

  • Chronograph

    時間を可視化する試みその1です。タイムスタンプとメモを記録できるというものです。

  • Timeline

    時間を可視化する試みその2です。Chronographよりは見た目を面白い感じにできたのですが、まだ開発途中です。

思えば、2022年はTypeScriptか、JavaScriptばかり書いていました。これは、私がJavaScriptが好きというよりは、JavaScript周りのエコシステムが理由です。Electron、React、Node.jsで大体のことができてしまうのです。JavaScriptには必要最低限の言語機能が備わっていますし、TypeScriptは柔軟で強力な型システムを提供してくれるので、他の言語を使う理由が生じないのです。

それ以外にやったこと

英語

夏休みには英語の勉強をしていました。そのおかげもあってか、10月のTOEIC IPで900点の壁を突破することができました。なので個人的には、もうTOEICのリーディング、リスニングの勉強はおしまいで良いかなという気がしています。もちろん900点台後半を取得するに越したことはないのですが、個人的には英語はあくまで手段であって目的ではないと思っているので、これからは英語を活用して何か他のことを勉強する、ということにフォーカスしたいと考えています。

MacBook Pro購入

4月には、使っているコンピュータを、5年間使った自作PCからMacBook Pro (14-inch, 2021)に乗り換えました。以前使っていた自作PCは、Intel Core i7 6700K、NVIDIA GTX 1080、DDR4 32GBというスペックで、そこまで性能不足というわけではありませんでした。しかし、Windows 11には対応しておらず、またノートPCを主軸に使った方が取り回しが良く、そしてやはりMacの方が個人的に好きなどなど諸々の理由で、MacBook Proを購入するという選択に至ったのです。

MacBook Proは安い買い物ではありませんでしたが、毎日使うものであるので、買って良かったと感じています。私は今までWindows、macOS、Linuxをそれなりに使ってきたわけなのですが、やはり私にとってはmacOSが一番しっくりくると感じるのです。UNIXコマンドがネイティブで使えますし、メディアを扱うのにも長けているからです。

イラスト

10月頃に液タブを購入したのですが、あまりイラストを描くことに注力することができていません。一応、1枚完成させるに至ることができたのですが、それ以外は落書きばかりです。

ブログ

このサイトを作ったことをきっかけとして、ブログを書き始めました。以前はTwitterを使うことがありましたが、Twitterで何かをつぶやいていても全く埒が明かないということで、ブログに移行したのです。

個人的には、TwitterなんかのSNSよりはブログの方が気楽です。結局のところ趣味でしかないので、他人の反応を窺うだけ無駄だと思いますし。

こうやって、今年やったことを書き出してみると、多いような少ないような、そんな印象です。もっと色々できたのではないかという思いはありますが、それでも結構トライ&エラーを繰り返しているなという感じです。ですが、もっと自分を追い込むこともできたように思うのです。やりたいと思っても、できていないことが山ほどあるのです。

来年すること

さあこの年を終えて、2023年は何をすれば良いのでしょう。やるべきことは少なくありません。

ゲーム開発

私が究極的にやりたいことは何かと問われれば、それはゲームを作ることではないだろうかと思うのです。思えばプログラミングも、ゲームを作りたいが為に覚えたようなものなのです。私はある程度のプログラミングスキルを有しているとは思うのですが、ゲーム開発とは、プログラミングスキルだけではないのです。

まず、ゲームにはグラフィックスが不可欠なわけですが、グラフィックスを実装する為には、OpenGLなんかのAPIを触る、あるいは、ゲームエンジンに頼る必要があるのです。確かに、Unityのようなエンジンに頼ればすぐにそれっぽいものはできます。しかし、むしろ私はOpenGLのようなAPIを操ることに興味があるのです。

私はずっと前にOpenGLに挑戦したことがあるのですが、その時は英語も数学も大してできず、挫折してしまいました。ですが、今では英語の本であっても(日本語ほどにではありませんが)読むことができますし、線形代数も難なく理解できるのです。ですので、2023年こそは、OpenGLを攻略したいと考えています。

グラフィックスAPIの次に必要なのは、描画する素材です。全てのグラフィックを自分で用意できるかは定かではありませんが、オリジナルのゲームにする以上は多少のグラフィックを自作する必要があります。加えて、ゲーム内の音楽についても自作したいと考えています。しかし、私は作曲経験が乏しいため、これには困難を極めることでしょう。

SNS開発

二つ目にやりたいと考えているのが、SNSの開発です。もちろんMastodonのような既存のソフトウェアを使うこともできますし、以前にPleromaインスタンスを作ったことはあるのですが、独自SNSを一から作る方が面白いのではないかと思うのです。

しかし、SNS開発の優先度はそこまで高いわけではありません。欲しいには欲しいですし、バックエンドの知識が付くとは思うのですが、これもまたWeb開発なので、そこまで大きな経験が得られるわけではなさそうなのです。文章だけのやり取りならまだしも、画像や動画を扱うとなると、一筋縄ではいきませんし、試行錯誤が必要になることは明白です。

ブログ

来年もブログをそれなりに書いていくつもりです。今は自分用のメモ帳に書いて終わり、ということが多いのですが、そうではなくて、ブログに載せることでしっかりアウトプットしていきたいと考えています。その方が、情報としての価値が高まりますし、誰かの役に立つと思うのです。

ブログをもっと書きやすくするソリューションに関しても、検討の余地があります。Markdownエディタを導入するべきかもしれません。

2023年やることをざっと挙げてみるとこんなものでしょうか。正直やることが多くて、時間が全然足りないと思うのです。これら以外にも授業と研究があるわけで(むしろそちらが本業)、一体どうしたら良いのでしょう。一つ思うことは、考えている暇はなくて、手を動かすべきだということです。考えるだけの時間を過ごすべきではないと思うのです。

さてさて、まだ今年も3日ありますし、OpenGLの勉強でもしようかと思います。それでは良いお年を。