名古屋出身ソフトウェアエンジニアのブログ

プログラミング

.NET (C#) で複数オブジェクトをストリームに JSON シリアライズ

.NET (C#) で複数オブジェクトをストリームに JSON シリアライズ
BinaryFormatter が将来的に .NET から削除されるようです(つい最近まで知らなかった勢)。 Python の pickle 同様、低レイヤ API としてあくまでリスクがあっても使えるようにしてあるし、これからもそうであろうと思っていたので驚きました。 …

Python でジェネリック型の型パラメータを実行時に取れるようにする Mixin 作った

Python でジェネリック型の型パラメータをランタイム時に取得できる抽象を提供するライブラリ Reification を作りました。前回記事「Python のジェネリック型から実行時に型パラメータを取得する方法」の内容を綺麗に実装した感じです。 このライブラリを使用すると、ジェネリックなクラスにランタイムでその型パラメータを認識させ、それに基づいた動作をさせることができます。具体的なユースケースとしては、コードの動的型検査の強化や、型パラメータを動作上の意味付けとして利用することなどが考えられます。 …

Python のジェネリック型から実行時に型パラメータを取得する方法

Python の型ヒントには、ジェネリック型も存在します。しかし、現在の Python の実装では、ジェネリック型のインスタンスやクラスには、実行時に型パラメータの情報は一切残っていない(型消去的動作)です。 本記事では、Python のジェネリック型の型注釈で実行時に型パラメータを取れるようにする方法を紹介します。 …

JavaScript: コールバック関数を Promise に変換する

WEB フロントエンドの JavaScript 開発では、非同期の操作を行う必要が多々あります。コールバック関数はそれらシナリオで頻繁に使われますが、複雑になりがちで、複数のコールバック関数が絡まる問題、通称「コールバック地獄」と呼ばれる状況を生成します。 JavaScript は ES6 で Promise を導入し、ES7 では async/await 構文を提供しました。これらの新機能により、非同期コードをより一貫して読みやすい形式で表現することが可能です。この記事ではコールバック関数を Promise に変える方法を示します。 …

pip-licenses で Python プロジェクトの OSS ライセンスをまとめて確認

OSS を活用したクラウドサービス開発では、使用する OSS のライセンス管理が重要です。中でも、クラウド提供を頒布行為とみなす AGPL ライセンスの OSS が混入すると法律的な問題に発展する可能性があるため、これを確実に避ける必要があります。 今回は Python 開発において、ライセンス管理を助けてくれるツール pip-licenses について具体的な使用方法を紹介します。 …

Unity でエディター拡張の設定をソースコードからオーバーライドする方法

Unity でエディター拡張パッケージを作成していて、パッケージ利用者がソースコードから設定(定数)を変更できる仕組みを考案しました。partial クラスを用いて実現しています。 純粋な C# スクリプトのみで動作するので、設定ファイルを読み込むロジック作成が不要になります。 Unity 以外でも、使い所はないかもしれないですが応用可能です。 …

Mypy による型チェック入門

元所属していた研究室の方が Mypy を使っているのを観測し、今はどの程度使えるようになっているのか、使用感などを体験してみることにしました。 …

Debian に Python をソースからインストールする

VPS の Debian に最新の Python をインストールする必要があり、初めて Python をソースからビルドしました。 ビルド自体は非常に簡単で、既存の Python を壊さず共存インストールまでできるので良かったのですが、依存パッケージの選定にやや苦労したのでメモを残します。 …