diff --git a/Cargo.lock b/Cargo.lock
index 0de50b1..56404c3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,625 +2,6 @@
 # It is not intended for manual editing.
 version = 3
 
-[[package]]
-name = "aho-corasick"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bumpalo"
-version = "3.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
-
-[[package]]
-name = "cast"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "clap"
-version = "2.34.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
-dependencies = [
- "bitflags",
- "textwrap",
- "unicode-width",
-]
-
-[[package]]
-name = "criterion"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f"
-dependencies = [
- "atty",
- "cast",
- "clap",
- "criterion-plot",
- "csv",
- "itertools",
- "lazy_static",
- "num-traits",
- "oorandom",
- "plotters",
- "rayon",
- "regex 1.11.1",
- "serde",
- "serde_cbor",
- "serde_derive",
- "serde_json",
- "tinytemplate",
- "walkdir",
-]
-
-[[package]]
-name = "criterion-plot"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876"
-dependencies = [
- "cast",
- "itertools",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
-dependencies = [
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
-
-[[package]]
-name = "csv"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf"
-dependencies = [
- "csv-core",
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "csv-core"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "either"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
-
-[[package]]
-name = "half"
-version = "1.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403"
-
-[[package]]
-name = "hermit-abi"
-version = "0.1.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
-
-[[package]]
-name = "js-sys"
-version = "0.3.77"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
-dependencies = [
- "once_cell",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
-
-[[package]]
-name = "libc"
-version = "0.2.169"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
-
-[[package]]
-name = "log"
-version = "0.4.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
-
-[[package]]
-name = "memchr"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.20.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
-
-[[package]]
-name = "oorandom"
-version = "11.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
-
-[[package]]
-name = "plotters"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
-dependencies = [
- "num-traits",
- "plotters-backend",
- "plotters-svg",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "plotters-backend"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
-
-[[package]]
-name = "plotters-svg"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
-dependencies = [
- "plotters-backend",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.93"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rayon"
-version = "1.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
 [[package]]
 name = "regex"
 version = "0.1.0"
-dependencies = [
- "criterion",
-]
-
-[[package]]
-name = "regex"
-version = "1.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
-
-[[package]]
-name = "rustversion"
-version = "1.0.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
-
-[[package]]
-name = "ryu"
-version = "1.0.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.217"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_cbor"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
-dependencies = [
- "half",
- "serde",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.217"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.138"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
-dependencies = [
- "itoa",
- "memchr",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.98"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-dependencies = [
- "unicode-width",
-]
-
-[[package]]
-name = "tinytemplate"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
-dependencies = [
- "serde",
- "serde_json",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
-
-[[package]]
-name = "unicode-width"
-version = "0.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
-
-[[package]]
-name = "walkdir"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
-dependencies = [
- "cfg-if",
- "once_cell",
- "rustversion",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
-dependencies = [
- "bumpalo",
- "log",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "web-sys"
-version = "0.3.77"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
diff --git a/Cargo.toml b/Cargo.toml
index 0e7abd3..a398be0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,10 +4,3 @@ version = "0.1.0"
 edition = "2021"
 
 [dependencies]
-
-[dev-dependencies]
-criterion = "0.3.5"
-
-[[bench]]
-name = "benchmark"
-harness = false
\ No newline at end of file
diff --git a/benches/benchmark.rs b/benches/benchmark.rs
deleted file mode 100644
index d8fff2e..0000000
--- a/benches/benchmark.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-//! # パフォーマンス計測
-//!
-//! ## 計測方法
-//! a?^n a^nという正規表現を、a^nという文字列にマッチさせる。
-//! ただし、a?^nとa^nは、a?とaのn回の繰り返し。
-//! 計測は幅優先と深さ優先で行う。
-//!
-//! ## n = 3の場合の例
-//!
-//! - 正規表現: a?a?a?aaa
-//! - str: aaa
-//!
-//! ## 実行方法
-//!
-//! cargo-criterionをインストール後、cargo criterionと実行。
-//!
-//! ```text
-//! $ cargo install cargo-criterion
-//! $ cargo criterion
-//! ```
-//!
-//! 実行後は、target/criterion/reports/index.htmlというファイルが生成されるため、
-//! それをWebブラウザで閲覧する。
-use criterion::{criterion_group, criterion_main, Criterion};
-use regex::do_matching;
-use std::time::Duration;
-
-/// (計測のid、a?^n a^nという正規表現、文字列)というタプル
-const INPUTS: &[(&str, &str, &str)] = &[
-    ("n = 2", "a?a?aa", "aa"),
-    ("n = 4", "a?a?a?a?aaaa", "aaaa"),
-    ("n = 6", "a?a?a?a?a?a?aaaaaa", "aaaaaa"),
-    ("n = 8", "a?a?a?a?a?a?a?a?aaaaaaaa", "aaaaaaaa"),
-    ("n = 10", "a?a?a?a?a?a?a?a?a?a?aaaaaaaaaa", "aaaaaaaaaa"),
-    (
-        "n = 12",
-        "a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaa",
-        "aaaaaaaaaaaa",
-    ),
-    (
-        "n = 14",
-        "a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaa",
-        "aaaaaaaaaaaaaa",
-    ),
-    (
-        "n = 16",
-        "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaa",
-        "aaaaaaaaaaaaaaaa",
-    ),
-    (
-        "n = 18",
-        "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaa",
-        "aaaaaaaaaaaaaaaaaa",
-    ),
-    (
-        "n = 20",
-        "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaa",
-        "aaaaaaaaaaaaaaaaaaaa",
-    ),
-];
-
-fn depth_first(c: &mut Criterion) {
-    let mut g = c.benchmark_group("Depth First");
-    g.measurement_time(Duration::from_secs(12));
-
-    for i in INPUTS {
-        g.bench_with_input(i.0, &(i.1, i.2), |b, args| {
-            b.iter(|| do_matching(args.0, args.1, true))
-        });
-    }
-}
-
-fn width_first(c: &mut Criterion) {
-    let mut g = c.benchmark_group("Width First");
-    g.measurement_time(Duration::from_secs(12));
-
-    for i in INPUTS {
-        g.bench_with_input(i.0, &(i.1, i.2), |b, args| {
-            b.iter(|| do_matching(args.0, args.1, false))
-        });
-    }
-}
-
-criterion_group!(benches, width_first, depth_first);
-criterion_main!(benches);
diff --git a/src/engine.rs b/src/engine.rs
index 54d3822..6cd06f3 100644
--- a/src/engine.rs
+++ b/src/engine.rs
@@ -1,12 +1,10 @@
 //! 正規表現エンジン
+
+use std::fmt::{self, Display};
 mod codegen;
 mod evaluator;
 mod parser;
 
-use crate::helper::DynError;
-use std::fmt::{self, Display};
-
-/// 命令列
 #[derive(Debug)]
 pub enum Instruction {
     Char(char),
@@ -25,58 +23,3 @@ impl Display for Instruction {
         }
     }
 }
-
-/// 正規表現をパースしてコード生成し、
-/// ASTと命令列を標準出力に表示。
-///
-/// # 利用例
-///
-/// ```
-/// use regex;
-/// regex::print("abc|(de|cd)+");
-/// ```
-///
-/// # 返り値
-///
-/// 入力された正規表現にエラーがあったり、内部的な実装エラーがある場合はErrを返す。
-pub fn print(expr: &str) -> Result<(), DynError> {
-    println!("expr: {expr}");
-    let ast = parser::parse(expr)?;
-    println!("AST: {:?}", ast);
-
-    println!();
-    println!("code:");
-    let code = codegen::get_code(&ast)?;
-    for (n, c) in code.iter().enumerate() {
-        println!("{:>04}: {c}", n);
-    }
-
-    Ok(())
-}
-
-/// 正規表現と文字列をマッチング。
-///
-/// # 利用例
-///
-/// ```
-/// use regex;
-/// regex::do_matching("abc|(de|cd)+", "decddede", true);
-/// ```
-///
-/// # 引数
-///
-/// exprに正規表現、lineにマッチ対象とする文字列を与える。
-/// is_depthがtrueの場合は深さ優先探索を、falseの場合は幅優先探索を利用。
-///
-/// # 返り値
-///
-/// エラーなく実行でき、かつマッチングに**成功**した場合はOk(true)を返し、
-/// エラーなく実行でき、かつマッチングに**失敗**した場合はOk(false)を返す。
-///
-/// 入力された正規表現にエラーがあったり、内部的な実装エラーがある場合はErrを返す。
-pub fn do_matching(expr: &str, line: &str, is_depth: bool) -> Result<bool, DynError> {
-    let ast = parser::parse(expr)?;
-    let code = codegen::get_code(&ast)?;
-    let line = line.chars().collect::<Vec<char>>();
-    Ok(evaluator::eval(&code, &line, is_depth)?)
-}
diff --git a/src/lib.rs b/src/lib.rs
index b39f73c..47da32c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,4 +12,4 @@
 mod engine;
 mod helper;
 
-pub use engine::{do_matching, print};
+// pub use engine::{do_matching, print};
diff --git a/src/main.rs b/src/main.rs
index 4fe2503..e7a11a9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,102 +1,3 @@
-mod engine;
-mod helper;
-
-use helper::DynError;
-use std::{
-    env,
-    fs::File,
-    io::{BufRead, BufReader},
-};
-
-fn main() -> Result<(), DynError> {
-    let args: Vec<String> = env::args().collect();
-    if args.len() <= 2 {
-        eprintln!("usage: {} regex file", args[0]);
-        return Err("invalid arguments".into());
-    } else {
-        match_file(&args[1], &args[2])?;
-    }
-
-    Ok(())
-}
-
-/// ファイルをオープンし、行ごとにマッチングを行う。
-///
-/// マッチングはそれぞれの行頭から1文字ずつずらして行い、
-/// いずれかにマッチした場合に、その行がマッチしたものとみなす。
-///
-/// たとえば、abcdという文字列があった場合、以下の順にマッチが行われ、
-/// このいずれかにマッチした場合、与えられた正規表現にマッチする行と判定する。
-///
-/// - abcd
-/// - bcd
-/// - cd
-/// - d
-fn match_file(expr: &str, file: &str) -> Result<(), DynError> {
-    let f = File::open(file)?;
-    let reader = BufReader::new(f);
-
-    engine::print(expr)?;
-    println!();
-
-    for line in reader.lines() {
-        let line = line?;
-        for (i, _) in line.char_indices() {
-            if engine::do_matching(expr, &line[i..], true)? {
-                println!("{line}");
-                break;
-            }
-        }
-    }
-
-    Ok(())
-}
-
-// 単体テスト。プライベート関数もテスト可能
-#[cfg(test)]
-mod tests {
-    use crate::{
-        engine::do_matching,
-        helper::{safe_add, SafeAdd},
-    };
-
-    #[test]
-    fn test_safe_add() {
-        let n: usize = 10;
-        assert_eq!(Some(30), n.safe_add(&20));
-
-        let n: usize = !0; // 2^64 - 1 (64 bits CPU)
-        assert_eq!(None, n.safe_add(&1));
-
-        let mut n: usize = 10;
-        assert!(safe_add(&mut n, &20, || ()).is_ok());
-
-        let mut n: usize = !0;
-        assert!(safe_add(&mut n, &1, || ()).is_err());
-    }
-
-    #[test]
-    fn test_matching() {
-        // パースエラー
-        assert!(do_matching("+b", "bbb", true).is_err());
-        assert!(do_matching("*b", "bbb", true).is_err());
-        assert!(do_matching("|b", "bbb", true).is_err());
-        assert!(do_matching("?b", "bbb", true).is_err());
-
-        // パース成功、マッチ成功
-        assert!(do_matching("abc|def", "def", true).unwrap());
-        assert!(do_matching("(abc)*", "abcabc", true).unwrap());
-        assert!(do_matching("(ab|cd)+", "abcdcd", true).unwrap());
-        assert!(do_matching("abc?", "ab", true).unwrap());
-        assert!(do_matching("((((a*)*)*)*)", "aaaaaaaaa", true).unwrap());
-        assert!(do_matching("(a*)*b", "aaaaaaaaab", true).unwrap());
-        assert!(do_matching("(a*)*b", "b", true).unwrap());
-        assert!(do_matching("a**b", "aaaaaaaaab", true).unwrap());
-        assert!(do_matching("a**b", "b", true).unwrap());
-
-        // パース成功、マッチ失敗
-        assert!(!do_matching("abc|def", "efa", true).unwrap());
-        assert!(!do_matching("(ab|cd)+", "", true).unwrap());
-        assert!(!do_matching("abc?", "acb", true).unwrap());
-    }
+fn main() {
+    println!("Hello, world!");
 }