Si vous souhaitez consulter les lois et règlements sur Internet, e-Gov Law Search publié par le ministère des Affaires intérieures et des Communications. Et Law api, mais la mise en page est subtile et la feuille de style xml n'est pas fournie. Ni l'un ni l'autre n'est très facile à utiliser.
Pour tenter d'utiliser la loi api dans un article précédent de qiita,
Si vous voulez voir les lois et règlements dans l'environnement en ligne, vous pouvez vous y référer, mais il y a des moments où vous voulez utiliser les lois et règlements dans l'environnement hors ligne ou les imprimer et les utiliser sur des supports papier, donc je l'ai obtenu de l'api de la loi J'ai créé un script pour transformer la loi en pdf avec une mise en page appropriée comme suit. Cette mise en page est organisée en référence au pdf publié dans Loi japonaise PDF + XML PDF et XML de la loi japonaise. Depuis que la mise à jour de la page d'accueil s'est arrêtée en 2016, j'ai décidé de la faire moi-même.
L'utilisation, etc. est décrite en détail ci-dessous, mais si vous souhaitez simplement l'utiliser, consultez [Construction de l'environnement (pour les étudiants en droit)](# Construction de l'environnement (pour les étudiants en droit)) et [Utilisation](# Utilisation). Je pense que ça suffit. [Explication du code](# Explication du code) est également écrit pour référence si vous souhaitez gérer vous-même l'API de loi ou modifier mon code. Veuillez également noter que Attention décrit le cas où cela ne fonctionne pas correctement.
Fondamentalement, il est conçu pour être utile pour les apprenants en droit, mais je pense qu'il n'y a pas beaucoup d'apprenants en droit qui connaissent Python et TeX, donc je vais expliquer la construction de l'environnement un peu plus en détail. Si vous pouvez utiliser Python et TeX, vous n'en avez pas besoin, veuillez donc l'ignorer.
Téléchargez la dernière version de Python sur le site officiel de Python (https://www.python.org/). Sélectionnez celui de votre système d'exploitation (je pense que c'est Windows ou Mac OS) dans l'onglet Téléchargements de la photo. Si vous avez des questions sur le processus détaillé, il existe de nombreuses pages Web qui expliquent l'introduction (par exemple, https://gammasoft.jp/blog/python-install-and-code-run/), veuillez donc vous y référer également.
Une fois téléchargé et installé, Python est prêt.
Veuillez installer TeX Live (voir https://texwiki.texjp.org/?TeX%20Live etc.). Quant à TeX, il semble que plus d'apprenants en droit l'utilisent que Python, donc si vous pouvez sélectionner LuaLaTeX comme méthode de composition dans votre environnement d'utilisation TeX actuel, c'est très bien. Une fois l'installation terminée, démarrez TeXworks, sélectionnez "Paramètres" dans l'onglet "Edition" et définissez le paramètre "Par défaut" pour la méthode de composition de l'onglet "Typeset" sur LuaLaTeX.
Ceci termine les réglages pour TeX.
Je décrirai en détail la partie de Usage qui peut trébucher.
Allez sur https://github.com/tbyuunagi/make_lawtex et appuyez sur Cloner ou téléchargez sur la photo.
Ouvrez une invite de commande pour Windows ou un terminal pour Mac (voir https://techacademy.jp/magazine/5318 et https://techacademy.jp/magazine/5155) et entrez "pip install requests" Veuillez exécuter.
Si vous double-cliquez sur le fichier make_lawtex.py téléchargé et que vous l'exécutez (comme décrit dans [Comment utiliser](# Utilisation)), il n'y a pas de problème. Si vous double-cliquez pour ouvrir le Bloc-notes etc., https://boukenki.info/python-py-file-doubleclick-kidou-jikkou-houhou/ etc. pour Windows, https: / pour Mac Veuillez vous référer à /yutori-gi.com/pythonscript-run/ etc. et configurer pour ouvrir le fichier .py à partir de Python.
Le code est ci-dessous. https://github.com/tbyuunagi/make_lawtex
Cela devrait fonctionner correctement si vous pouvez utiliser Python et LuaLaTex. Nous avons confirmé l'opération sous Windows10 et Ubuntu18.04.
Installez la bibliothèque Python requêtes.
$ pip install requests
Lorsque vous exécutez make_lawtex.py
Veuillez saisir le mot-clé que vous souhaitez rechercher
Sera imprimé, alors entrez une partie ou la totalité du nom de loi que vous recherchez. Puis
1 Droit civil
2 Extrait de la loi d'application du code civil
3 Loi relative aux dispositions spéciales du Code civil concernant les conditions de lutte contre le transfert de marchandises en mouvement et les créances
4 Loi relative aux exceptions spéciales au droit civil concernant les contrats de consommation électroniques
5 Ordonnance ministérielle sur la surveillance des sociétés spéciales de droit civil relevant de la compétence du Ministre de l'intérieur et des communications
6 Loi concernant les dispositions spéciales du Code civil concernant la période pendant laquelle l'héritage doit être approuvé ou abandonné en raison du grand tremblement de terre de l'est du Japon
7 Une ordonnance ministérielle qui fixe le montant fixé par l'ordonnance du ministère de la justice prévue à l'article 909-2 du code civil
8 Ordonnance ministérielle concernant la notification du ratio standard en vertu de l'article 404, paragraphe 3 du Code civil et de l'article 404, paragraphe 5 du même article
laquelle?
Les choix sont affichés avec un nombre sous la forme de (par exemple, lors de la recherche de «droit civil»), alors entrez la loi que vous recherchez par numéro. Ceci termine le processus Python et génère "nom de loi" .xml (obtenu à partir de l'api de loi) et "nom de loi" .tex dans le répertoire des lois (dans le cas du droit civil, du droit civil.xml et du droit civil. Texas).
Si vous composez le fichier .tex généré ici avec LuaLaTeX, vous obtiendrez un fichier pdf avec la mise en page indiquée au début. Par exemple, lors de l'utilisation de TeXworks après l'installation de TeXLive, la partie entourée de bleu dans la figure ci-dessous sera définie sur LuaLaTeX. De plus, il est nécessaire d'effectuer le type défini trois fois afin d'afficher le tableau sur la bonne page (voir https://cns-guide.sfc.keio.ac.jp/2000/8/3/5.html etc.) .. Pour être honnête, j'ai l'impression de faire quelque chose de mal, mais je ne connais pas TeX, donc je ne sais pas. Je serais reconnaissant à quiconque connaissant une méthode plus appropriée de le signaler.
Si vous voulez utiliser l'api de loi dans le même but, bien sûr, si vous voulez utiliser l'api de loi à d'autres fins, je pense qu'elle peut être détournée dans une certaine mesure, alors je vais expliquer la partie d'achoppement et c'était un peu compliqué. Les Spécifications de l'API Law (Version 1) seront désignées comme appropriées, veuillez donc préparer ceci si vous souhaitez lire en détail. Veuillez penser que cela fait référence à cela lorsque vous vous référez aux "spécifications" sans préavis ci-dessous.
import requests
import os
import xml.etree.ElementTree as ET
Ce qui précède est la bibliothèque utilisée.
#Utilisé uniquement lors de l'acquisition de la liste de lois et de l'enregistrement et de la mise à jour du fichier xml
def get_lawlist():
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawlists/1')
root = ET.fromstring(r.text)
tree = ET.ElementTree(element=root)
if not os.path.exists('laws/'):
os.mkdir('laws')
tree.write('laws/lawlist.xml', encoding='utf-8', xml_declaration=True)
return
Accédez à l'API d'acquisition de la liste des noms de lois (pages 5 et 10 des spécifications) pour acquérir le fichier xml de la liste des noms de lois. Ce fichier xml est utilisé lors de la recherche du nom de loi ci-dessous. Par défaut
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawlists/1')
Cependant, si vous n'avez pas besoin d'une ordonnance ministérielle, veuillez vous reporter à la section 4.2 de la page 10 des spécifications et changer la fin de l'url.
#Une fonction qui renvoie le nom officiel et le numéro d'une loi après avoir recherché une loi spécifique dans la liste des noms de lois par mot-clé.
def search_Laws(key):
tree = ET.parse('laws/lawlist.xml')
root = tree.getroot()
LawName_list = []
LawNo_list = []
for child in root[1]:
if child.tag != 'Category':
if key in child[0].text:
LawName_list.append(child[0].text)
LawNo_list.append(child[1].text)
return LawName_list, LawNo_list
Comme commenté, il s'agit d'une fonction qui prend un mot-clé comme argument et renvoie une liste de lois et réglementations qui incluent le mot-clé. Par mesure de précaution lorsque vous traitez avec l'API de loi, comme vous pouvez le voir à partir du contenu du XML obtenu à partir de l'API d'acquisition de liste de noms de loi mentionnée ci-dessus, une certaine loi est ce que nous reconnaissons comme un nom (LawName tel que "Civil Law") En outre, des attributs tels que la loi n ° m de l'année civile japonaise n (loi n °, telle que la «loi n ° 89 de Meiji 29») sont donnés. Bien sûr, les êtres humains ne savent pas en quoi consiste la loi en regardant le numéro de loi, mais dans l'api de la loi, ce numéro de loi est une clé unique pour spécifier une loi spécifique ( (Voir get_LawContent ()) donc nous devons être en mesure de gérer ces LawNos avec les LawNames que nous pouvons facilement reconnaître.
#Entrée sortie
def get_Law(search_Laws):
LawName_list = search_Laws[0]
LawNo_list = search_Laws[1]
if len (LawName_list) == 0:
print('Il n'y a pas de loi applicable')
return None
if len(LawName_list) == 1:
return LawName_list[0], LawNo_list[0]
for i,x in enumerate(LawName_list):
print(i+1,x)
print('laquelle?')
input_num = int(input())-1
LawName = LawName_list[input_num]
LawNo = LawNo_list[input_num]
return LawName, LawNo
Il s'agit de la partie entrée / sortie qui énumère et sélectionne les lois et réglementations qui correspondent aux mots-clés. Il n'y a pas de limite au nombre de lois répertoriées, donc la recherche par «loi» peut être une tâche ardue. Si une telle opération est désagréable, veuillez la limiter de manière appropriée.
# get_Obtenez le contenu en utilisant le résultat de la loi et enregistrez-le sous le nom légal pertinent
def get_LawContent(get_Law):
LawName = get_Law[0]
LawNo = get_Law[1]
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawdata/'+LawNo)
root = ET.fromstring(r.text)
tree = ET.ElementTree(element=root)
if not os.path.exists('laws/'):
os.mkdir('laws')
tree.write('laws/' + LawName + '.xml', encoding='utf-8', xml_declaration=True)
return LawName
Obtenez la loi souhaitée à l'aide de l'API d'acquisition de lois (page 6 de la spécification). Comme je l'ai mentionné un peu
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawdata/'+LawNo)
Veuillez noter que ce que vous devez spécifier à la fin de l'url de la ligne est une loi No.
De plus, comme indiqué dans Notes, certaines lois et réglementations ne peuvent pas être obtenues par cette fonction car elles ne peuvent pas être obtenues par l'API loi en premier lieu.
def main():
get_lawlist()
Law_Name = search_get_LawContent()
result = xml_to_tex(Law_Name)
return result
C'est pour l'exécution. J'ai décidé d'exécuter get_lawlist () à chaque fois du point de vue de toujours utiliser la dernière liste, mais le traitement est un peu lent car lawlist.xml a une taille de données raisonnable. Puisque get_lawlist () est un processus qui n'a pas besoin d'être fait plusieurs fois une fois qu'il est exécuté, je pense qu'il est normal de commenter cette ligne à partir de la deuxième fois.
Ce qui précède est l'explication de la fonction. Vous pouvez voir ce qui n'est pas expliqué. Si vous n'aimez pas la mise en page générée, comparez le fichier TeX résultant avec la fonction xml_to_tex () et apportez les corrections nécessaires. C'est inutilement long, mais le préambule est tout écrit au début (ligne 79 de make_lawtex.py), il devrait donc suffire de le modifier par rapport à la mise en page.
Certaines lois et réglementations ne peuvent pas être obtenues par la loi api en raison de la taille des données. Plus précisément, je voudrais que vous voyiez la partie de restriction de https://www.e-gov.go.jp/elaws/interface_api/index.html, mais ce qui semble être nécessaire pour l'apprentissage juridique et ne peut pas être obtenu Il y a la loi de l'impôt sur le revenu et la loi sur les mesures fiscales spéciales. Nous prévoyons de répondre dans un proche avenir, mais veuillez noter que nous ne pouvons pas obtenir ces lois et règlements pour le moment.
La redistribution, la modification et les remarques faites par vous-même sont gratuites, alors n'hésitez pas à les utiliser. Si vous avez des bogues ou des suggestions d'amélioration (non seulement sur le code mais aussi sur cet article), veuillez nous en informer dans les commentaires ici, pull request sur github, ou My Twitter. ..
Recommended Posts