Yの技術ブログ

Yちゃんの技術関連のブログ

GUIアプリケーションを作っているというお話

セキュリティキャンプを終えて

私、セキュリティキャンプ全国大会2019のOS開発ゼミを修了していて、低レイヤーなお話をしたいと思っていたのですが、残念ながら私は低レイヤー興味あるけどほとんどわからんのまま修了していまして、あまり低レイヤーなお話が出来ないのです... 今回の話はどちらかというと技術的なお話はあまり無いです。

今何してるの

最近はPython3とPyQt5を用いてGUIアプリケーションを開発しています。というわけでこちらの近況報告をしたいと思います。

atomicswap-qt

これはGoで書かれたatomicswapというCLIアプリケーションをPythonで書き直し、GUIを付け加えたものです。ベースとなる機能は全て標準ライブラリのみを用いて書き直し、可読性をできる限り重視してコードを書いています。これがどういうアプリケーションなのかはこちらを読んでいただければと思います。

低レイヤーを諦めたわけでは無い

低レイヤーに手をつけることを諦めたわけではありません。実のところ、私は今まで自分でコードを書いてものを作り上げるだとか、そういった類のことをほとんどしたことがなく、コーディング経験が浅い上に知識も浅いのです。よくまぁこんなんでセキュリティキャンプに参加できたなぁと今でもすごく思います。じゃあ何をしていたのかと言いますと、既存のGitHub上にあるOSSを自分なりにいじって遊んでいただけで、パラメータいじったりだとか、ちょっとソースコード書き換えたりだとかそういうことばかりやってきたわけなのです。ただの遊びです。というわけで、コーディング経験を積んで、人のコードを読んで理解できるようになろうということで、他言語で書かれたソースコードを読んで自分の書き慣れたPythonで再実装し、完全な互換性を保ったアプリケーションを作った上で、それを更に人が使いやすいようにGUIで使えるようにしようというのが現状です。もちろん、いろんなアルゴリズムを知るだとか、そういった類のことも必要なので、これから取り組んでいこうと思っています。

既存のものと自分のもの

今回、新しくものを作るには既存のものを理解して自分のものにする必要があると思い、既存OSSのコードを一つ一つ読んで再実装し、そこに自分のつけたい機能、今回であればPyQt5によるGUIを実装するという形を取りました。一見とてもめんどくさいですし、実際とてもめんどくさいです。ですが、これは確実に自分の力になっていると思っていますし、実際に力になっています。私はとてもめんどくさがりで、今までコーディング経験が浅かったわけなので、少しぐらい自分に難しい課題を課して取り組んでやる方が力になるのかもしれませんね。これがいい方法なのかは正直自分にもわかりませんが、自分の力になっているのならそれでいいか、ってなってます(笑)。
更に、今回は可読性と理解のしやすさを重視してコーディングを行なっています。他人から見て理解しやすいかはわかりませんが、自分なりに意味を理解しやすいコードを書くことで自分が読んだ他言語のコードを理解出来ていること、他言語のコードと自分の書くPythonのコードが同じ挙動をすることを示せるからです。

私が目指すもの

今特に興味を持つ分野は暗号通貨やブロックチェーンといった分野で、低レイヤーとは言い難い分野です。いずれ低レイヤーなOS自作をもっと深めていきたいと考えていますが、今は好きなことをやって、経験を積みたいと考えています。今はまだ、小さなプロジェクトの再実装に過ぎません。でも、今後はもう少し大きなプロジェクトの再実装をしたいと考えていたり、私自身のオリジナルなプロジェクトの作成をしたりしたいと考えています。まだまだ未熟な私ですが、伸ばせる部分はたくさんありそうなので、頑張って取り組んでいきたいと思います。