AtlassianのJiraがチューリング完全であることが証明される
原題: Jira Is Turing-Complete
なぜ重要か
企業向けツールが予期しない計算能力を持つことで、自動化やワークフロー設計に新たな可能性を示した。
プロジェクト管理ツールJiraがチューリング完全であることをMinskyレジスタマシンを用いて実証。Epicのステータス変更とリンクされたIssueの数をプログラムカウンタとレジスタとして活用し、自動化ルールで計算を実行。加算とフィボナッチ数列の計算を実際のJiraインスタンスで動作させることに成功。
エンジニアリング界では長らくJiraがチューリング完全であるとの都市伝説が存在していたが、具体的な証明は示されていなかった。今回、Nicolas Seriotがこの理論を実証し、Jiraの自動化機能を使ってMinskyレジスタマシンを構築することでチューリング完全性を証明した。Minskyマシンは2つの無制限カウンタと有限のラベル付き命令セットのみでチューリング完全性を達成できることが1967年にMinskyによって証明されている。JiraではEpicのステータスをプログラムカウンタとし、BugやTaskなどのリンクされたIssue数をレジスタとして利用。自動化ルールが各命令状態に対応し、条件分岐はJQLクエリで実装される。実装例として、BACKLOG、TODO、DEV、PRODのワークフローを持つEpicを作成し、TODOとDEVに対応する自動化ルールを設定。TODOルールではリンクされたBugが存在する場合はBugを1つ削除してDEVに遷移し、存在しない場合はPROD(終了状態)に遷移する。DEVルールでは新しいTaskを作成してEpicにリンクし、TODOに戻る。初期状態で2個のBugと3個のTaskをリンクしたEpicをTODOに遷移させることで、2+3=5の加算計算が実行され、最終的にEpicは0個のBugと5個のTaskにリンクされた状態でPRODに到達した。さらに高度な例として、3つの状態でフィボナッチ数列を計算するマシンも実装し、実際のJira Cloudインスタンスで動作することを確認している。