個人開発でモチベーションが高まった方法《法令.app》

誰でも楽しく法律が読める[《法令.app》](https://jplaws.app)というWebアプリを作っています。

https://qiita.com/hibarisoft/items/423cd885435a911bc287

## :no_good_tone1: アプリへのアクセスがありません！

予想と覚悟はしていたことですが、アプリへのアクセスがありません:persevere:「アクセスが増えない」とかではなく、ほとんど無いです！アクセス解析ツールの設定ミスかと思いましたが、違うようですね。。（アクセス無いのに、なぜか「ダウンロード量」はすごくて無料枠をすぐに突破しました。わからない。。）

気を取り直して、今は法令データの「更新ツール」を作っています。完全に自律して動かすには、それまで手打ちでごまかしていた部分を全体的に見直すことになり、結構時間がかかっています。

### これまで

1. e-Govダウンロードサイトから、法令データXMLと画像などをダウンロード
1. 法令データ前処理：
    1. ひとつの法令について複数バージョンが含まれているので「最新のバージョン」だけにする
    1. 「漢数字・カタカナ変換」など、テキストの処理
1. メディアファイルの前処理：
    1. メディアファイルは複雑なフォルダ構造なので、１つのフォルダにまとめる
    1. PDFを画像ファイルに展開
    1. ファイル形式の変換 AVIF形式に
1. 「メタデータ」作成（呼び方メタデータで合っているかは不明）
    1. 文中の法令名にマッチするための「辞書」
    1. 「関連法令」を抽出して辞書を作る（法タイトルが似ているか調べるだけ。。）
    1. ブラウザ側で法令名検索するための「辞書」
1. 法令データ後処理：
    1. 参照先条文とのリンク付け、内容の差し込み
    1. 「略称」と「定義部分」のリンク付け
    1. メディアファイルのリンク付け
    1. 「本則・附則・別表」の３ファイルに分割、保存
1. （以下デプロイ作業）ファイルの圧縮（シェルスクリプト。バンドルツールを使いたいのですが、ツールの設定が分かって無くて、リンクなどが必ず壊れてしまいます）
1. 開発用ホストにアップロード
1. 本番用にアップロード

「大項目」のところは全て手作業でした。

### 更新の自動化をした場合

<font color="blue">青字</font> は新しい処理です。

1. <font color="blue">更新未確認の「日付」をリストアップ</font>
1. <font color="blue">e-Gov 法令API: 各日付ごとに問い合わせ</font>
1. e-Govダウンロードサイトから、法令データXMLと画像などをダウンロード
1. <font color="blue">Zip形式なので展開する</font>
1. 法令データ前処理：
1. メディアファイルの前処理：
1. 「メタデータ」作成
1. 法令データ後処理：
1. <font color="blue">本番データフォルダに移動。古いファイルは退避</font>
1. ~~ファイルの圧縮~~ ⇠ 更新は画像とhtmlファイルのみなので圧縮なし
1. 開発用ホストにアップロード
1. 本番用にアップロード

ちょっと甘く見ていました。でも、これが自律して動くようになると、バグ取りやインターフェースの改善以外の、「定型作業」はなくなるので、宣伝やSEOなどに時間を使えるようになります。

むしろ、「アクセスがない」ことよりも「定型作業で消耗してしまう」ことの方が怖いです。なるだけコストも労力も減らして「長期戦ができる」体制を作っておきたいです。

今はクラウドサービスの無料枠もたくさんあって、アクセスが多くない時期はドメイン管理料が年間1000円ちょっとだけで済みます。競合は増えたと思いますが、趣味でやる分にはとてもいい時代だと思いました。

ふと、「自動処理ルーチンを書かないと、数週間後の自分は消耗してヤル気を失っている」という「危機感」から作業してる気がしてきました。「誰も使ってないサービスのために労力を使う」のはメンタルに響きますので。「モチベーションを保つために作業する」というのは「順序が逆」な気もしますが、人間のヤル気というのはそういうものなのかもしれません。

## :muscle_tone1: モチベーション維持に役立ったこと

（注：誰も知らないアプリで「自分語り」をするのは早すぎる気もしましたが、個人開発につきまとうテーマのようですので、今の段階で感じたことを書いてみます）

モチベ維持の手法を積極的に試したことはなくて「タイトル詐欺」と思った方はすみません。「モチベーションが続くテーマを選んだ」ことに尽きます。「続かないテーマ」では続かなかった（当たり前）。「生存バイアス」ではありますが、それ以外の「ヤル気が出たイベント」についても紹介します。

私の場合の、「個人開発の目的」は「趣味の充実」だったりします。ふつうだと「収入を上げる」や、人の役に立ちたい・スキルを高めたい・評価されたいという目的があって、それを達成するための「モチベーション管理」なんだと思います。私も、上に挙げた目的を少しづつ持ってはいますが、「モチベーションが続く（楽しい）」のが一番の目的です。

・・何かユニークな意見を書いたつもりでいましたが、誰もが多かれ少なかれ「人生を豊かにしたい」という「大目標」は同じく持っている「ふつうの」意見だったかもしれませんね！

ともあれ、今回初めて最後（使える段階）までサービスを作り切りました。これまでもQiitaなどを読んで、新しい言語やツールのサンプルを書いては止めてと、遊んでいました。それだけでも楽しかったです。たまたま、仕事で少し触ったことがあったので「法律アプリ」をテーマにしました。

その昔は、Pythonを触ってみたくて、題材として「省庁の通知・通達」をスクレイピングするスクリプトを書いていました。これが大変で、元のデータはWord（昔の役所は一太郎？）をHTMLに強引に変換したようなものが多く、さらに各省庁で形式はバラバラでした。その点、法令データは「[法令XMLスキーマ](https://elaws.e-gov.go.jp/docs/law-data-basic/419a603-xml-schema-for-japanese-law/)」というのが整備されていて、作りやすそうでした。「通知・通達」よりはユーザーも多いハズで、「競合」も少なく、小さくても何かインパクトを残せそうでした。


## :ok_woman_tone1: スランプ脱出の秘策（結果論）

「（自称）他にはないアイデア」が思いついた時などは、分かりやすくテンションが上ります。そりゃあそうだ、と思いますし、だいたいアイデアは尻すぼみになることが多いです。その他に、すごく地味に見えて、すごくモチベーションを底上げしてくれて、しかも持続してくれることがありました。

### :keyboard: スマホアプリ開発を触ってみた

初期は、とにかく「表示速度」が大事だと思っていて、「ボタンのアイコン」にすら画像を使わない変な「こだわり」がありました。Unicodeの絵文字（「✏️」みたいなの）を駆使してました（多分多くの機種で文字化けしたでしょう笑）。

見た目が貧相だと、無意識にヤル気を削がれていくようです。飽きてしまって「スマホアプリ開発」に手を付けました。開発ツールを触っていると、Web開発との違いが面白かったです。知識がないのでツールの指定通りに作っていると、いい意味で「単純明快」です。パーツをパカパカとはめて画面を作っていく。小さい画面なので要素はパッと見て分かって余計なものは入れられない。Webだと、スクリーンはTVくらいの大画面まであるので「何を選んでいいか分からない」→ 「謎のこだわりの世界にはまる」状態になっていたようです。

スマホアプリに飽きて（＝ 難しくて諦めた）、Webに戻ってくると変なこだわりは消えて、すんなりアイコンセットを導入して、不要な要素をばっさり外して作業が楽しくなりました。デザインはまだまだ自己満足のひどいものですが、だいぶマシになりました。

### :v:ドメイン名がいけてる

何回目かのスランプに入ってパソコンも閉じたままの時に「ドメイン名」を取ってみました。.com や .net といった有名どころでは、思いつく名前はほとんど取られていました。"law", "hou", "hourei" などは、後ろに何かくっつけても大体が使用済みでした。

<ins>jplaws.app</ins>

"jp" を付けると、短い名前でも空きがあることを発見しました。それだけの理由でしたが、そこから色々と決まっていきました（・・本来は「ユーザーがどう感じるか」を考えて決めるべきなんでしょうけど、そういうのは全くなしでした）。でも決まるとなぜかコーディングも捗りました。成果物がまとう「雰囲気・イメージ」が決まると急に作業が楽しくなりました。

### :name_badge: 名前が決まった

appドメインを取ったら「そうか、これは（法令サービス、検索サイトではなく）アプリなのか」と、ドメイン名に教えられました。それで「法令.app」になりました。「そのまま」の名前です。名前として良いのか悪いのか、判断できないのと、考えるとドツボにはまりそうで「考えたくない！」というのが正直なところです。

・・成功を収めたあとでこれを書くなら誰かの参考になりそうですが、「ほぼ誰も使っていないサービスで何を書いてるんだろう:tired_face:」と赤面モノですが、、モチベーションが上がったのは事実なので気合で最後まで行きます！

名前付けは、「まったく分からない」というか、決定的にセンスがないので、とりあえず「決まる」だけでホッとしました。「読める！法律」、「たのしい法律」、「みんなの法律」など色々考えました。実際使われている名前もあって、名前が悪いわけではないですが、まだ見ぬユーザーを想像して考えるのは、ブランディングなどの「訓練」がされてないと必ず変な出来になる気がします。

### :paintbrush: カラーテーマが決まった！

結果的にドメイン名に "jp" が付きました。短くて意味も明確で、我ながら良いドメインです（ドメイン名を愛でる感覚は、もしかすると最近のスマホ世代には理解されないかもしれませんね・・）。作業に疲れて、登録サイトのマイページを開いて取ったばかりのドメイン名を眺めていました:relaxed:

> "jplaws" "jp" か・・、法律体系は国際基準だけど、ほぼ100%日本国民が日本国内で日本語で使う「超ローカル」なシステムだった。いっそもう「ジャパン推し」でいいのでは？

試しに、一番苦手なカラーテーマを「日本ぽさ」から考えてみる

1. 日の丸 ・・２色しかない
1. 和の色彩「浅葱色」みたいな淡い・くすんだ配色 ・・固い、かしこまった感じが出てしまうのでは？
1. 桜 ・・青い空と桜のピンク、明るくていいけど、色数少なくないか？

「桜:cherry_blossom:でいこう！」と決めました。公的サービスではないので、何か「ひとクセ」持たせたい。法律の持つ「正義・不偏・厳格」というイメージによって、既存のサービスでは「色が少ない」か「六法全書」のイメージで「茶系」（革の背表紙？）が多い印象でした。「慣れない方にこそ使ってほしい」と思っていたので何か変化させたかったです。

見方を少し変えると、これほど「ローカルで、ドメスティックな」システムはないと思いました。世界共通の原則に従いつつも、その国土や国民（例外有り）に限って適用されています。「条約」は扱っていないですし。他のだいたいのもの、服も家電も文化も輸出され輸入されますが、法律でそれをやると戦争になりかねません:gun:

国のアイデンティティそのもの、と見ることもできます。ならば、、「愛国保守」の人が好きな「桜」くらい行くと面白いのでは？保守的な側には「桜」をアピールしつつ、女性や若い人には柔らかい印象を与えて「カタい」イメージの法律に触れやすくなるかもしれない。

しかし、ソメイヨシノの淡いピンクは扱いづらい。アクセントには薄すぎるし、濃くするともうソメイヨシノではない。。かといって背景にすると、「[サンリオ・ピューロランド](https://www.puroland.jp/)」のＨＰみたいな印象になってしまうし。


![未保存の画像 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801207/d64e70a3-60a4-bf01-5dee-70e66880573f.png)


「ヤマザクラ」なら、濃い色もあるし緑もバリエーションが選べる。どんな色を使っても「言い訳」もしやすい。ということで『山桜テーマ』になりました。

### :yin_yang: ロゴが決まった！

『山桜テーマ』が決まってロゴに取り掛かりました。過去に作られた「法律アプリ」の尊敬する先輩たちですが、それらの「ロゴ」が、どうもしっくりこなかったんです。

1. 「正義の天秤」
1. 「六法全書の本」
1. 「法」漢字一文字

だいたいこれなんです。他に、ロゴ配布サイトやロゴ生成サービスを使ってみても「裁判官風の服装」、「裁判所風の建物」、「ギリシャ神話的ななにか」とかが出てくるけど「何かちがう」気がする。法律とは、社会に遍在し、究極に抽象的な概念なので表しにくいのだと思います。それに正義や分厚い本のイメージには「重さ・固さ」があります。

『山桜テーマ』のロゴはどうなるか、イラストソフトで適当に描いてみました。技術がなさすぎて、「いわゆるフラットデザインです」と（本職の人に怒られそうな）言い訳をして使ってます。今回はモチベーションの話ですので許していただいて、（人に受け入れられるかはさておき）自分なりの素材ができたことで、テンションが上がって一気にスランプ脱出しました。

初期案 → 最新版。結局、何のひねりもない「法」の一文字にしました。白抜きと明度の高い色で「軽さ」だけは出したかった。「良いロゴ」でもなんでもありませんが、「先行サービスにないものを作っている」という「気分」にさせてくれると、他の作業が楽しくなる「効果」があります。

<img width=200 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801207/cf2d36c7-2694-6228-bdd9-8bb44f477ef3.png">

<img width=200 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801207/64a33fff-f49d-ce89-e140-3af5d19f4547.png">

「山桜テーマの」サイトもぜひ見てみてください！ :point_right:[《法令.app》](https://jplaws.app)
時間が経つとヤマザクラ関係なくなってきて、色も増えてまとまりがなくなっています。どこかで揃えようと思います。順調に進めば、いずれ本職のデザイナーにお願いするのが今の目標です。

:bird:ひばりソフト（ひばり）