Daichi Suzuki

OQTOPUS

OQTOPUSという量子計算のためのソフトウェア群がある。 阪大の人たちを中心にOSSとして開発されていてジョブを投げるスケジューラーだったりトランスパイラだったり様々なものが開発されている。

ふと暇だったので参加した量子エレクトロニクス勉強会でOQTOPUSを知り、興味が湧いたので少し開発に参加させてもらえないか尋ねて、tranquというソフトウェアを少し触ることになった。 これは様々あるトランスパイラのラッパーとして機能する。つまり量子回路のトランスパイラは様々な実装があり、それをできるだけ一つの枠組みで使えるようにしようというもの。 まああとは単純に回路を書くのもQiskitだったりquri-partsだったり様々なライブラリが使えるしで便利そうである。 現状は対応しているトランスパイラがqiskitとouqu-tp(阪大で開発しているもの?) の二つだけなので少ないと言えば少ないのだが徐々に育っていってほしい。

やることとしてはQiskitの対応バージョンが古く1.xだったのを2.xに対応するというもの。 バージョンを上げてテストで壊れるところを直すだけと言えば直すだけなのだが、調べ始めると結構考えることが多くて思ったより悩んでしまった。いや悩むのはいつものことかもしれない。

例えばバージョンを上げるときのライブラリ側のお作法として何があるべき姿なんだっけか......と考えていた。 つまり、Qiskit2.xをサポートしますという時それは>=2.0.0を意味するべきなのか、現状の最新の>=2.2.3であるべきなのかとか。 こういうことを考えるたびにソフトウェアエンジニアとしてまだまだいろんなお作法に疎いことを感じさせる。 結局一旦安牌というかサポート範囲を広くするために>=2.0.0を選択したがどうなんだろうな。正直どうでもいい話なんだろうか。

またpytketは今回触るつもりはなかったが結局これもバージョンを上げることになる。これはpytket-qiskitというpytketの回路をqiskitに変換するライブラリの都合で これがQiskit 2.0に対応しているバージョンではpytketも2.xに上げざるを得ずこうなった。 開発あるあるIssueをやっていると当初想定していなかったものまでやらざるを得なくなる案件。

今回は必然性を伴って同時にやらなければいけない作業だったのでいいが、そうではない場合一回のISSUEでどのぐらい関連項目まで同時にやってしまうかも悩ましいところ 例えばリンターの設定だったりテストのちょっとした修正だったりちょっとしたリファクタリングだったり。世の中ではこのあたりどうやって考えているんだろうか、

まあそんなこんなで公式ドキュメントのChangelogを見たり色々しながら一応PRは投げたところ。 休職中の過ごし方としてこれが正しいのかはあまり自信がないが、まあ、一旦良しとしよう。 先月はとてもコーディングどころかドキュメントも読める状態ではなかったこと路考えると本当に回復してきたと思う。