弁護士・司法修習生のPython入門|e-Gov法令APIで条文を取得するコードと、守秘義務・修習専念義務の注意点

弁護士や司法修習生がPythonを学ぶなら、最初の題材は「条文の取得」と「手元の文書の検索・整理」がおすすめです。e-Govの法令APIを使えば、標準ライブラリだけで最新の条文を取り出せ、手元のファイルの検索はネットに送らずにパソコンの中で完結します。

この記事では、法律の仕事に関わる人がPythonで最初に作れる2つのプログラムを、実行結果つきで紹介します。あわせて、学ぶときに気をつけたい守秘義務と、司法修習生の修習専念義務についても条文で確かめます。生成AIやリーガルテックのサービスを業務に使う話は弁護士・法律事務所のAI活用で扱っているので、ここでは自分でコードを書く場合に絞ります。

コードはPython 3.14.8で実行しました(2026年10月18日)。外部のパッケージは使っていません。

法律の仕事でPythonが役立つ場面

場面 Pythonでやること この記事の例
条文の確認・比較 e-Gov法令APIから条文を取得し、キーワードで探す 例1・例2
手元のメモや書面の検索 フォルダ内のテキストから語句を含む行を一覧にする 例3
ファイル整理 案件フォルダのファイル一覧や名前の付け替え (例3の応用)
表データの集計 CSVやExcelの件数・期日の集計 (標準ライブラリのcsvやpandas)

どれも、Pythonの基本文法(変数、for文、if文、関数、辞書とリスト)とファイルの読み書きが分かれば書けます。最初から機械学習や自然言語処理に進む必要はありません。

例1:e-Gov法令APIで条文を取得する

政府の法令データベースであるe-Gov法令検索には、プログラムから法令データを取得できる法令API Version2があります。法令名から法令IDを調べ、条番号を指定して本文を取り出すプログラムです。

import json
import urllib.parse
import urllib.request

API = "https://laws.e-gov.go.jp/api/2"

def get_json(url):
    with urllib.request.urlopen(url, timeout=30) as r:
        return json.load(r)

def find_law_id(title):
    url = f"{API}/laws?law_title={urllib.parse.quote(title)}"
    for law in get_json(url)["laws"]:
        if law["revision_info"]["law_title"] == title:
            return law["law_info"]["law_id"]

def texts(node):
    if isinstance(node, str):
        yield node
    else:
        for child in node.get("children", []):
            yield from texts(child)

def article(title, num):
    law_id = find_law_id(title)
    data = get_json(f"{API}/law_data/{law_id}?elm=MainProvision-Article_{num}")
    print(title, "施行日:", data["revision_info"]["amendment_enforcement_date"])
    for node in data["law_full_text"]["children"]:
        print("".join(texts(node)))

if __name__ == "__main__":
    article("裁判所法", 67)
裁判所法 施行日: 2026-05-21
第六十七条
(修習・試験)
司法修習生は、少なくとも一年間修習をした後試験に合格したときは、司法修習生の修習を終える。
司法修習生は、その修習期間中、最高裁判所の定めるところにより、その修習に専念しなければならない。
前項に定めるもののほか、第一項の修習及び試験に関する事項は、最高裁判所がこれを定める。

ポイントは3つです。

  • /laws?law_title= で法令名を検索すると、名前に「裁判所法」を含む法令が複数返るので、名前が完全に一致するものの law_id を使います。
  • /law_data/法令ID?elm=MainProvision-Article_67 のように elm を付けると、本則の第67条だけが返ります。「第六十七条の二」なら Article_67_2 です。
  • 本文は入れ子の構造(タグと子要素)で返るので、texts() で文字列だけを順に取り出しています。amendment_enforcement_date は、そのデータに反映されている最後の改正の施行日です。

同じ関数で、article("弁護士法", 23) のように別の法令も取り出せます。紙の六法やWebの画面で探すより、複数の条文をまとめて確認したり、改正の施行日を記録したりするときに便利です。

例2:法令の全文からキーワードを含む条文を探す

elm を付けずに取得すると法令の全文が返ります。例1の関数を読み込み、全条文から「秘密」を含む条を探します(例1のファイル名を jobun.py として保存しておきます)。

from jobun import API, get_json, find_law_id, texts

def articles(node):
    if isinstance(node, dict):
        if node["tag"] == "Article":
            yield node
        else:
            for child in node.get("children", []):
                yield from articles(child)

def search(title, word):
    law_id = find_law_id(title)
    data = get_json(f"{API}/law_data/{law_id}")
    for a in articles(data["law_full_text"]):
        body = "".join(texts(a))
        if word in body:
            print(body[:60] + "…")

search("弁護士法", "秘密")
(秘密保持の権利及び義務)第二十三条弁護士又は弁護士であつた者は、その職務上知り得た秘密を保持する権利を有し、義務を負う…

弁護士法では、附則まで含めた全文で「秘密」を含む条は第23条(秘密保持の権利及び義務)だけでした。search() の引数を変えれば、ほかの法令や語句でも同じように探せます。articles() は本則だけでなく附則の条もたどります。

APIには短時間に大量のリクエストを送らないようにし、取得した結果は手元に保存して使い回すのが行儀のよい使い方です。

例3:手元のメモや書面をパソコンの中だけで検索する

案件ごとのフォルダにあるテキストファイルから、ある語句を含む行を一覧にするプログラムです。標準ライブラリの pathlib だけで書けます。

from pathlib import Path

word = "解除"
for path in sorted(Path("docs").rglob("*.txt")):
    for no, line in enumerate(path.read_text(encoding="utf-8").splitlines(), 1):
        if word in line:
            print(f"{path}:{no}: {line}")

練習用に、架空の内容のファイルを3つ作って実行しました。

docs/案件A/メモ1.txt:1: 賃貸借契約の解除について協議した。
docs/案件B/メモ1.txt:1: 売買契約の解除通知を送付した。

このプログラムはファイルをどこにも送信しません。外部のサービスに文書をアップロードせずに済むことは、法律の仕事でPythonを使う大きな利点です。WordやPDFを対象にする場合は、それぞれを読むための外部パッケージが必要になります。pathlib の基本はPython pathlibでファイルを作成・読み書き・削除する方法で説明しています。

学ぶときに気をつけること:守秘義務と修習専念義務

練習には架空のデータを使う

例2で取り出したとおり、弁護士法第23条は、弁護士または弁護士であった者が職務上知り得た秘密を保持する義務を定めています。学習の途中でエラーの原因を調べようとして、実際の事件の文書を生成AIや翻訳サイト、コード共有サイトに貼り付けることは避けてください。練習には、例3のように自分で作った架空のデータを使います。プログラムの不具合を人に相談するときも、固有名詞や数字を差し替えた最小限のコードだけを見せる習慣をつけておくと安全です。

司法修習生は修習専念義務の範囲で学ぶ

例1の実行結果のとおり、裁判所法第67条第2項は、司法修習生は修習期間中、最高裁判所の定めるところにより修習に専念しなければならないと定めています。Pythonの学習は修習の時間外に自分で進めるものと考え、学んだ技術を使って報酬を得るような活動は、最高裁判所の定めに照らして可能かを修習の担当窓口で確かめてからにしてください。修習中は、例1〜3のような小さなプログラムを作れるようになることを目標にすると無理がありません。

条文の原文は裁判所法(e-Gov法令検索)と弁護士法(e-Gov法令検索)で確認できます(2026年10月18日確認)。

どこまで学べばいいか:3段階の目安

段階 できるようになること 学ぶ内容
1. 基本文法 例3のような数行のプログラムを読んで直せる 変数、if文、for文、リストと辞書、関数、ファイルの読み書き
2. データの取得と整理 例1・例2のようにAPIから取得し、必要な部分を取り出せる JSON、HTTP通信、CSVの読み書き
3. 業務への応用 自分の事務作業の一部を自動化する小さな道具を作れる pandas(表の集計)、Excel操作、正規表現

法律の専門家にとってPythonは、プログラマーになるためではなく、手作業を減らし、データを自分で確かめるための道具です。段階1と2までで、条文や手元の文書を扱う作業の多くはカバーできます。段階1でよく使う組み込み関数やメソッドはPython基本関数・メソッド完全一覧で確認できます。AIが法律の仕事をどこまで代替できるかという議論はAIで弁護士は不要になる?で、弁護士法と法務省のガイドラインをもとに整理しています。

独学で詰まったら

例1のような入れ子のデータの扱いは、独学で最も詰まりやすいところです。テックジムは東京本校(永田町)にある対面・通学型のプログラミングスクールで、自分のペースで学びながら、詰まったところをその場でトレーナーに質問できます。料金は入会金33,000円+月額22,000円で通い放題(学生は月額16,500円)で、まず試せる無料Python講座もあります。

よくある質問

Q. 弁護士や司法修習生がPythonを学ぶメリットは何ですか?

条文の取得や比較、手元の文書の検索、表データの集計といった事務作業を自分で自動化できることです。e-Govの法令APIを使えば、標準ライブラリだけで最新の条文を取り出せます。

Q. e-Govの法令APIは無料で使えますか?

登録なしで、プログラムからHTTPで呼び出して法令の一覧や条文を取得できます。この記事のコードも登録や鍵の設定をせずに動きました。短時間に大量のリクエストを送らないようにしてください。

Q. 実際の事件の資料で練習してもいいですか?

避けてください。弁護士法第23条は職務上知り得た秘密の保持義務を定めています。練習には架空のデータを使い、文書を外部のサービスに貼り付けないようにします。

Q. 司法修習中にPythonを勉強しても問題ありませんか?

裁判所法第67条第2項は修習期間中の修習専念義務を定めています。学習は修習の時間外に自分で進め、学んだ技術で報酬を得る活動をする場合は、事前に修習の担当窓口に確認してください。

対面・無料|東京・永田町で毎週土曜日13時

1回の参加で、プログラミングの構造がわかる

ゼロからはじめるPython入門講座

8年間・累計600回開催/これまで全国で2万人以上が参加

「やはり対面で聞けるのはとても気づきがあり、価値があると思います」

参加者の声

  • 本当に初心者からの講座です。プログラミングに触ったことがなくて大丈夫です
  • 対面だから、その場で聞けます。つまずいた所を持ち帰らずに解決できます
  • 講座は1時間。そのあとも残って学習を続けられ、講師にも質問できます
  • 独学で挫折した方も。糸口が見つかって、講座のあと会員になる方が多くいます

無料で参加する|開催日程を見る

参加費は無料です