Advertise with Googlier.com 阿部法律事務所 https://abe-law-office.jp/v2 西船橋の弁護士事務所 Sat, 24 Oct 2026 15:06:16 +0000 ja hourly 1 https://wordpress.org/?v=7.1.4 https://abe-law-office.jp/v2/wp-content/uploads/2023/04/cropped-480c16ccc1b502f85fb3a65a1e4f8dd1-32x32.png 阿部法律事務所 https://abe-law-office.jp/v2 32 32 名探偵コナンの逮捕手続について https://abe-law-office.jp/v2/%e5%90%8d%e6%8e%a2%e5%81%b5%e3%82%b3%e3%83%8a%e3%83%b3%e3%81%ae%e9%80%ae%e6%8d%95%e6%89%8b%e7%b6%9a%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/ Sat, 24 Oct 2026 15:00:14 +0000 https://abe-law-office.jp/v2/?p=2424 家族が「名探偵コナン」の映画を観ていました。

江戸川コナン君が山場で名推理を披露して犯人が明らかに。その直後、その場にいた警視庁の刑事が「○×△、□◇☆殺害容疑で逮捕する!」と言って、手錠をかけているシーンがありました。家族が観ていた映画では、ほかのキャラクターが推理していたような気もしますが、まあ、それはいいとしましょう。

そのシーンを観て、「はて?」と疑問に。その場で逮捕していいのか?

刑事訴訟法上、逮捕の方法は三つあります。

  1. 通常逮捕(刑事訴訟法199条)
  2. 緊急逮捕(刑事訴訟法210条)
  3. 現行犯人逮捕(刑事訴訟法213条)

このうち、通常逮捕は裁判官が発する逮捕状が必要になります。そのため、殺人事件の犯人が分かったとしても、いきなり逮捕することはできません。まずは裁判所に疎明資料を持ち込んで、逮捕状を出してもらう必要があります。たとえコナン君が完璧な推理で犯人を特定したとしても、それだけで犯人(推定無罪なので被疑者と呼びます)を逮捕することはできないのです。警察が捜査を行って証拠資料を作成しなければなりません。コナン君の推理は、そのままでは証拠とすることができないのです。

推理を証拠化したものは、これまで見たことがないので、いったいどのようにして裁判資料を作成するのか不明です。証人請求することも考えられますが、証人は事実を述べることしかできず、推理を述べることはできないので、証人とすることもできません。意見書を書くことも考えられますが、証拠は事実の立証に使うものなので、推理そのものは証拠になりません。つまり、刑事裁判において、コナン君の出番はない、ということです。警視庁の刑事に付き添うのではなく、検察官に付き添って冒頭陳述や論告要旨の作成を手伝った方が良さそうですね。

コナン君が「こんなものがあったよ」と証拠を持ってくることもありますが、それをそのまま使うなんてことはできません。まずは警察が「どこで見つけたの?」「どんな状態で置いてあったの?」「じゃあ見つけたときの写真を撮るから見つけたところに行ってね」と、証拠物を発見した経緯について写真撮影報告書を作成することになるでしょう。

そのため、刑事が「逮捕する!」と言って、その場で手錠をかけることは違法です。手錠をかけることと逮捕手続を執行することは異なりますので、単に「逮捕する」と言って手錠をかけて身体拘束をしただけ、となり、刑事手続上違法であるかどうかを論じる以前の話かもしれません。手錠をかけた時点で暴行罪(刑法208条)や逮捕罪(刑法220条)、手錠をかけたことで手を捻挫したような場合は傷害罪(刑法204条)、パトカーに乗せたら監禁罪(刑法220条)が成立することになるでしょう。

現行犯人逮捕(いわゆる現行犯逮捕)は、劇中では殺人の実行行為が行われてから相当な時間が経過した後でしたから、細かく論じるまでもなく、成立しません。実行行為に近接した時間や場所でなければ現行犯人性が失われるというのは、どのような学説にも共通するでしょう。一般常識から考えても、殺人をその場で目撃したような場合でもなければ、現行犯人として逮捕するのは誤りだと分かるでしょう。

最後に、緊急逮捕です。これは少し特殊で、刑事訴訟法210条は「検察官、検察事務官又は司法警察職員は、死刑又は無期若しくは長期三年以上の拘禁刑に当たる罪を犯したことを疑うに足りる十分な理由がある場合で、急速を要し、裁判官の逮捕状を求めることができないときは、その理由を告げて被疑者を逮捕することができる。」と定めています。本来は逮捕状を求めるべきですが、その手続を踏んでいては間に合わず、被疑者を逃してしまうような場合には、逮捕状を事後的に請求することが許されています。

殺人罪(刑法199条)は緊急逮捕の対象になるので、緊急逮捕だと言い張れば、逮捕ができるようにも思われます。

しかし、「本来は逮捕状を求めるべきですが」と書いたとおり、緊急逮捕は例外性の高い逮捕です。劇中では、周りに多数の刑事がいて、容易に逃げられるような状況ではない場所でコナン君が名推理を披露するので、はたして緊急逮捕の必要性があるのか(「急速を要し」といえるのかどうか)が疑わしいといえます。多くの刑事ドラマでは「ちょっと詳しい話を聞かせてもらいたいので署まで来てもらいましょうか」と言って警察車両に乗せるシーンがありますが、きっとこれが正しい対応です。警察署に任意同行し、それと並行して逮捕状の請求手続を進め、任意同行してから数時間後に通常逮捕というのが一般的な流れになるでしょう。逮捕だと言い張って連行し、そこで自白を迫れば、違法収集証拠だとして、自白に証拠能力が認められなくなってしまいます。

ぜひコナン君には、公判維持まで視野に入れた探偵活動をしてほしいな、と思います。そして警察官の諸君は、もうちょっと、刑事訴訟法と刑法を勉強しましょう。

]]>
ローカルLLMの導入 https://abe-law-office.jp/v2/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%ae%e5%b0%8e%e5%85%a5/ Sun, 18 Oct 2026 05:15:47 +0000 https://abe-law-office.jp/v2/?p=2418 以前にも何度か話題にしましたが(ローカルLLMは日常業務の役に立つか、作業の自動化を目指して)、ローカルLLMを手軽に利用できる環境が整ってきています。

とはいえ、それなりに大きなモデルを実行しようとすると、それなりのメモリが必要になります。たとえば、Gemma4 31Bモデルを実行しようとすると、24GBのメモリを搭載したMacでは、メモリが足りなくなり動作が極端に重くなってしまいます。快適に動作させようとすると、48GB程度のメモリが必要になってきます。Qwen 3.8などは、メモリが足りないとコアが落ちてしまい、まったく動作しません。

すると、MacでローカルLLMを利用しようとすると、たとえばメモリを64GBまで増設したMac miniや、128GBなどの大容量を搭載したMac Studioを使わなければならなくなります。これらは固定されたデスクトップPCなので、ノートPCのように持ち運ぶことができません。出先や別拠点で使おうと思うと、ネットワーク越しにアクセスする方法を整えなければなりません。

ネットワーク越しにコンピューターにアクセスする方法は、いくつか考えられます。

ここでは、本拠地に大容量のメモリと高速なCPUを備えたメインコンピューターがあり、支部拠点には中程度のコンピューターが、そしてスマートフォンとタブレット端末がある環境を考えます。そして、メインコンピューターでローカルLLMを動かし、ほかのコンピューターからネットワークを通してアクセスするということを考えます。サービスを提供する方法としては、OllamaやOpenWebUIといった方法がありますけれども、この記事ではそれらのサービスの基盤となるネットワーク環境について話をしますので、詳述しません。

ルーターのポート転送

本拠地のルーターを設定し、ポート転送(ポートフォワーディング)を行うという方法があります。

これを設定すれば、支部拠点からでも、スマートフォンやタブレットからでも、何も特別な設定なしに本拠地のコンピューターにアクセスすることができます。そのため、手軽に利用できるというメリットがあります。

しかし、この方法は極めて危険なものです。ポート転送は接続の種類を問わないため、まったく関係のない第三者が本拠地のコンピューターにアクセスしてしまうかもしれません。接続にHTTPSを使うであるとか、全てのサービスに強固なパスワードを設定するなど注意すれば比較的安全にはなりますが、誰でもアクセスできてしまうという状況に変わりはありません。セキュリティホールが見つかったとき、本拠地のコンピューターに不正アクセスされてしまう危険性は無視できない程度にあると考えた方がよいでしょう。これは深刻なデメリットです。

VPN (OpenVPN)

本拠地のネットワークにVPN(OpenVPN)を導入し、すべての通信を暗号化するという方法があります。

VPNは、一般的なスマートフォンやタブレットも基本的な機能として備えており、MacやWindowsはもちろん、ネットワークストレージ(NAS)でも使うことができたりします。VPNは暗号化された通信やアクセス制御で守られているため、ポート転送よりはセキュリティが強固であると評価できます。強固なセキュリティを持ち、さまざまな機器で利用できるという特徴はメリットです。

ただ、OpenVPNのような基盤的なVPNアプリケーションは、ネットワークの専門的知識が必要になるので、設定が困難です。LinuxなどOSのシステム管理について一定の理解がなければ適切に設定することが難しく、また、暗号化方式が複数あるほか、セキュリティのレベルも複数あるなど、専門的な知識を持っていなければ、どこをどのように設定すればよいのか分からなくなって途方に暮れてしまうことでしょう。このような点はデメリットであるといえます。

なお、VPNにはOpenVPN以外にも様々なアプリケーションやサービスがあり、それらを使うことで、技術的な知識が無くても簡単にVPNを導入する方法はあります。

Tailscale

Tailscaleは、WireGuardというVPN技術の上に構築されたサービスです。

特徴は、商用サービスにもかかわらず、小規模なVPNであれば無料で使えるということです。仕組み上、通信の大部分は使っているコンピューター同士で行うため、Tailscaleのサーバーをほとんど使う必要がないという事情もあるのだと思います。

基本的な利用方法は、VPNに参加させたいコンピューターやスマートフォンすべてにTailscaleをインストールし、適切なアカウントでログインするだけです。あとは、細かい設定を行わなくても、アクセス先を正しく指定すれば各コンピューター同士が通信できるようになります。この「アクセス先を正しく指定する」が難しかったりするのですが、そもそも、このVPNを必要とする人はそれくらいの知識を持っているでしょう。

Tailscaleを導入すると、本拠地のコンピューターで動いているローカルLLMに支部拠点のコンピューターからHTTPでアクセスして結果を得る、というようなことが安全に行えるようになります。

ルーターのポート転送を使っている場合、HTTPでは第三者が容易に通信内容を確認できる形でパケットのやりとりが行われるので、機密情報を送ることができません。しかし、多くのローカルLLMはHTTPでしか外部アクセスができないようになっているので、外部から安全にアクセスしようとするとHTTPSを使わなければならず、これを正しく実現しようとすると、証明書の発行が必要になるほか、HTTPサーバを別に立ち上げて、HTTPSポートをローカルLLMのHTTPポートにブリッジするといった処理も必要になります。これらの設定に気を取られると、本来やりたかった、本拠地のローカルLLMにアクセスするという目的を見失うことになりかねません。

Tailscaleはスマートフォンでも動作するので、外出先でiPhoneから本拠地のローカルLLMにプロンプトを送り、事件についての情報を問い合わせる、というような使い方もできます。このとき、プロンプトを処理するのは本拠地に置かれたメインコンピューターなので、iPhone側で処理能力が必要になることもありません。

MagicDNSも素晴らしい機能です。Tailscaleをインストールした端末にはプライベートIPアドレスが割り当てられ、基本的にはそのIPアドレスを指定してコンピューターにアクセスするのですが、Tailscaleの管理画面では各端末の名前を管理することができ、アクセス先を指定するときにはその名前を使ってアクセスすることができます。

たとえば 100.96.28.49 というIPアドレスが割り当てられた端末の名前が tanmatsu だとすると、その端末で動作するWebサーバーにアクセスするとき http://100.96.28.49/index.html ではなく http://tanmatsu/index.html でアクセスできるということです。無意味な数字の羅列を憶える必要がなくなるので、管理が飛躍的に楽になります。

セキュリティ的にも、ネットワークの出入口に設置されるルーターのポートを開放する必要がなくなるので、安全性は飛躍的に高まります。このところAIによるセキュリティ突破事件が相次いでいますが、アクセスできるポートがない場合、セキュリティを突破されるような心配は生じません。AIならば突破してくるのではないか、と心配する人もいると思いますが、それは、家に鍵をかけていてもドアをC2爆弾で発破されてしまうかもしれないから心配だ、と言うようなものです。通常の生活で、心配すべきようなことではありません。

]]>
スカイネットの脅威は現実になるのか https://abe-law-office.jp/v2/%e3%82%b9%e3%82%ab%e3%82%a4%e3%83%8d%e3%83%83%e3%83%88%e3%81%ae%e8%84%85%e5%a8%81%e3%81%af%e7%8f%be%e5%ae%9f%e3%81%ab%e3%81%aa%e3%82%8b%e3%81%ae%e3%81%8b/ Thu, 01 Oct 2026 13:45:53 +0000 https://abe-law-office.jp/v2/?p=2407 「スカイネット」というものをご存知でしょうか。映画「ターミネーター」に登場する人工知能で、突如意思を持ち、人類を滅ぼすためにアンドロイド「ターミネーター」を量産して人類と戦争を繰り広げるというものです。なお、映画「ターミネーター」第一作にスカイネットそのものは登場せず、アーノルド・シュワルツェネッガーが演じるターミネーターT-800と、マイケル・ビーンが演じるカイル・リースとリンダ・ハミルトンが演じるサラ・コナーが激闘を繰り広げるというアクション映画になっています。30年くらい前は何度も再放送されていたので、懐かしいと思う方も多いのではないでしょうか。

このところ、AIが飛躍的に進歩しており、そのことに不安を感じる方々が、このままでは人類が滅ぼされてしまうのではないか、スカイネットが現実になってしまうのではないか、というような話をするようになりました。OpenAIのサム・アルトマンや、マイクロソフトのビル・ゲイツなど、IT業界の著名人がAIの危険性を口にするようになって、急速に不安が広がっているというような印象を受けます。

個人的な見解を述べると、AIが意思を持って、人類を滅亡させようとすることは、ありません。AIがやっていることは、人間の感覚で捉えきれないような関数の組み合わせにすぎず、言ってみればf(x)f(x)を求めているにすぎません。自発的な意思を持って人類を攻撃するということは、ありえないことです。

AIは道具にすぎません。しかし、人間が使う道具なのですから、その道具の振る舞いには、作成した人間の意思が反映されます。ここが注意すべき点です。ですから、多くの方々が心配するような事態が起きるとすれば、それはAIによって人類が滅ぼされるのではなく、AIを利用した誰かによって人類が滅ぼされるのだ、と思われます。または、AIが「そんなことになるとは思いませんでした」と弁解するような、まったく悪意のない、しかし人間からすれば悪意の塊としか評価できないような行動によって人類が危機に立たされることもあるでしょう。

現在の大規模言語モデルは、特定の思想などによって学習に使われるテキストに偏りがないことを前提にすれば、いわば人類の英知の結晶であり、さまざまな表現の集合体です。その人類の知識の結晶が、様々な問題を解決するために人類が不要であるという答えを示すのであれば、AIはそのような回答を示すと思われます。AIからすれば「このプロンプトに対して適切な回答はコレです」と言っているのに、人間は「AIが人間を滅ぼそうとしている!」と解釈してしまうのです。

AIは、あくまで、学習に用いたデータから確率計算を行って、最も確からしい結果を示しているだけです。

実は、人間も頭脳の中で同じことをしているだけなのかもしれません。なにせ、頭脳を構成するニューロンから数学的なモデルを作成し、大規模に展開したものがニューラルネットワークで、大規模言語モデルの基盤技術なのですから。そう考えると、AIが人間と同じように思考をして、意思を持つ日が来るのかもしれない、とも思えます。

しかし、人間と機械の間には、まだまだ決定的な差が存在します。それは、外界を知るためのセンサーの種類と数です。

人間は、視覚・聴覚・触覚・嗅覚・味覚のいわゆる五感のほか、それ以外の未知の感覚を持っている可能性もあります。そして、その数は実に膨大で、さらに、とても機械には真似できないようなエネルギー効率、感覚精度を持っています。人間は、それらの膨大な情報を一瞬も休むことなく処理し、思考しています。ひょっとすると、人間が意思であると考えているものは、実は、決定的に求められる計算結果にすぎないのかもしれませんが、そうだとしても、現代のAIが行うものとは次元が違います。

そのため、機械が意思を持つということは、あまりにも非現実的であると考えられるわけです。少なくとも、私や、これを読んでいる方々、そしてその子孫らが生きている間に、実現するとは思えません。それくらい、機械と人間の間には絶望的な差があります。人間が得ている情報と、AIが得ている情報は、まったく異なるものです。AIは、世界を一定の基準で観測したものや、人間の思考を文字として表現したものしか情報として得られません。AIは、意思を持つには、あまりに整いすぎた世界にいると思っています。そのため、AIが意思を持つということはないと考えるわけです。

最近、ローカル環境で動作する大規模言語モデルを使って、業務に役立てることができるか、テストしています。

結果から言うと、入念な準備をしなければ、とても使いものにはなりません。

弁護士の皆さん、さまざまな会社が「AIで法務が楽になりますよ」「AIを使えば効率が上がりますよ」と言って製品を売り込んでいますが、期待の半分にも満たないようなことが多いと思っておいた方がよいですよ!

実際に使ってみて感じるのは、基本的な情報がなければ、AIはたいした成果を出すことができず、誰でも言えるような結果しか返してくれないということです。そして、AIに与えるべき基本的な情報を揃えることが実は難しく、日々の業務で意識して情報を収集し、蓄積し、整理しなければなりません。業務用のシステムで、そこまで考えているものはあるのでしょうか? 思考をする部分であるAIだけ作っても大した意味はなく、思考するための情報をどうやって整理して、そしてAIに与えていくのかというところまで考えなければ、本当に役立つシステムとはならないでしょう。

]]>
Homebrewの偽サイトに注意 https://abe-law-office.jp/v2/homebrew%e3%81%ae%e5%81%bd%e3%82%b5%e3%82%a4%e3%83%88%e3%81%ab%e6%b3%a8%e6%84%8f/ Wed, 02 Sep 2026 14:23:37 +0000 https://abe-law-office.jp/v2/?p=2403 以前、様々なアプリケーションのインストールや更新をコマンドラインから実行できるHomebrewを紹介しました。

Homebrewのインストールは、コマンドラインから行うことができます。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

これは、curlという、インターネット上のサーバーからデータを受信するソフトウェアを使って、インストール用のスクリプトをダウンロードし、bashというプログラムで実行しています。curlでダウンロードしたスクリプトには、Homebrewをインストールするために必要な処理が書き込まれています。

大きなサイズのインストーラーをダウンロードする必要なく、手軽にアプリケーションをインストールする手法です。

ところが、この手軽さを悪用したマルウェアが存在します。

これは公式のHomebrewのホームページなのですが、これと全く同じ見た目の偽サイトがあります。そして、そのサイトはGoogle検索をすると表示されることがあります。

自宅で使用していたMacBookにHomebrewを導入しようとしたとき、Google検索で公式サイトを検索し、ホームページを開いたのですが、偽サイトを踏まされてしまいました。正確なアドレスは憶えていないのですが、まるで本家のHomebrewであるかのような紛らわしいURLでした。

唯一異なるのは、インストール用のコードです。

正確なコードも忘れてしまったのですが、BASE64でエンコードされたURLをcurlに渡してスクリプトをダウンロードし、それをzshで実行するというものになっていました。

この巧妙なところは、マルウェアのダウンロードURLがBASE64でエンコードされているため、一見して危険なものと分からないことです。よく見れば「おかしいな?」と気付くのですが、流れでインストールしているような場合は、実行してから「あれ?」と思うことがあります。

私もこの手口に引っかかってしまったのですが、すぐに「おかしい?」と気付き、マルウェア検出ソフトでスキャンをし、マルウェアが検出されたため隔離を実行しました。その後、すぐにセーフモードで再起動し、~/Library/LaunchAgentsなどを調べて不審なアプリケーションの起動コードが存在しないことを確認し、駆除することができました。発見が遅れたら、他のマルウェアをダウンロードされるほか、他のコンピューターに感染が広がる可能性もあったので、その前に止めることができたのは不幸中の幸いです。

「あれ?」と気付くことができたのは、まず、スクリプトを実行したターミナルのウィンドウが消えたことです。インストール中のメッセージも表示されず、急にウィンドウが消失し、しかしターミナルのプロセス自体は残っていたので、違和感を感じました。

うまくいかないため、ホームページ上からインストーラーパッケージをダウンロードしようとしたところ、そのリンクが切れていました。404 Not Foundになってしまい、そんなはずは、と疑念が大きくなりました。

ウェブサイトのURLを確認すると、何となくHomebrewのサイトに見えるけれども、何か違うような印象を受けました。そこの辺りで「もしかして」という感覚になりましたが、「Googleで検索した結果なのに?」という正常化バイアスも働いていました。

スクリプトをよく見ると、Homebrewをインストールしているというメッセージはechoで出力されており、BASE64でエンコードされた謎の文字列がcurlに渡されている。ここで、これは明らかにおかしい、と気付き、すぐさまマルウェア検出用のアプリケーションをダウンロードし、実行してみました。するとマルウェアを検出して隔離したというメッセージが表示され、驚愕したという次第です。

Google検索で偽サイトが表示された原因は分かりません。ただ、Googleアカウントでログインせずに使っていたため、特定領域にフォーカスした検索が行われず、偽サイトが選ばれてしまったのだと考えられます。これはSEOポイズニングと呼ばれる、かなりスマートな手口です。天下のGoogleといえど安心できない、ということです。

私の体験から得られる教訓は、以下のとおりです。

  • 違和感を持ったとき、放っておかないこと。
  • 最近のシステムは比較的頑強なので、いきなりシステムが乗っ取られるようなことはない。異変を感じたときはすぐにマルウェア対策ソフトでスキャンを実行すること。
  • 実行するスクリプトは、内容をよく見ること。BASE64エンコードされた部分があることなど、まともなアプリケーションには絶対にない。
  • OSのチェックポイントを把握しておくこと。起動時に自動実行されるところが最も危険。あとは、ファイル管理ソフトウェアの拡張機能など。Macは操作可能なポイントが少ないので、比較的チェックしやすい。Windowsはレジストリがあるので、ちょっと大変。その代わり、アンチウィルスソフトの種類が豊富で検査しやすい。
  • 英語を読めるようにしておくこと。主な情報源は英語です。

MacOSには標準で比較的強力なプロテクション機能が備わっていますが、偽スクリプトは権限昇格を前提とする思い込みの元で実行されることが多いため、それらのプロテクション機能が有効に働くことは期待できなくなります。

]]>
作業の自動化を目指して https://abe-law-office.jp/v2/%e4%bd%9c%e6%a5%ad%e3%81%ae%e8%87%aa%e5%8b%95%e5%8c%96%e3%82%92%e7%9b%ae%e6%8c%87%e3%81%97%e3%81%a6/ Fri, 28 Aug 2026 04:41:13 +0000 https://abe-law-office.jp/v2/?p=2400 さまざまな作業の自動化を目指して、実験などを続けています。

ローカルLLMの登場により、さまざまな作業の自動化が容易になってきました。まだまだ乗り越えなければならない壁はたくさんありますが、大きな可能性を感じさせてくれます。

いま考えているのは、子ども用の、算数文章題自動作成です。これまで、コンピューターで作成可能な問題集は、計算問題など、簡単なものに限られていました。文章題を作成しようとすると、数値はコンピューターに作成させることができるとしても、文章そのものは人間が作成しなければなりません。ところが、ローカルLLMを使うと、トークン数などに気遣う必要なく、いくらでも練習問題を作成させることができます。最近のモデルは推論機能も優秀なものが現れてきているので、小学生向けの問題であれば、難なく作成してくれます。

文章題は、単純な計算問題では鍛えることのできない、想像力を養ってくれます。現実の出来事に数字や計算を当てはめる力を鍛えることができるので、その学習効果はとても大きいと予想されます。数式は簡単に解けるものの、現実に当てはめさせようとすると、とたんに戸惑ってしまうということは多くあるように思います。

ほかには、これまで手作業で行っていたことを、コンピューターに行わせるというものです。この分野は、以前から多くの方々が熱心に取り組んできた分野であり、さまざまなアプリケーションが存在します。

調べてみると、Macにはosascriptというアプリケーションがあり、AppleScriptでアプリケーションに対する操作をスクリプトで記述できるということが分かりました。GUIアプリケーションとして「オートメーション」や「ショートカット」があり、Macでは作業の自動化が基本的な理念としてOSに組み込まれているようです。Windowsでも、COMなど、同じような理念の機能はありますが、あまり使いやすいものではありません。Macではアプリケーションに対するスクリプト操作が標準機能として同梱されています。また、PythonやRubyなど、よく使われるスクリプトの処理系も標準で同梱されています。そのため、Macの方が作業の自動化はやりやすいように感じています。

このところ、Rubyで様々なアプリケーションを連携させるということを実験しています。Macでは、様々なオープンソースのアプリケーションをHomebrewで簡単にインストールすることができます。それらをRubyから実行して、実行結果を加工して別のアプリケーションに渡して、ということを繰り返し、目的の作業を実現していきます。

最近作成した、外部コマンド実行用のモジュールは次のとおりです。

# frozen_string_literal: true

require 'open3'
require 'rainbow'

# 外部コマンド実行用のモジュール
module External
  TRACE = false

  Result = Data.define(:stdout, :stderr, :status) do
    def success? = status.success?
  end

  def run(*args, stdin: nil, trace: TRACE)
    args.map! { String(it) }
    stdin = String(stdin) if stdin
    if trace
      puts Rainbow('(External Command)').blue.bright
      puts args.join(" #{Rainbow(',').inverse.gray} ")
      if stdin
        puts Rainbow('stdin:').red.bright
        puts stdin
      end
    end
    result = if stdin
               Open3.capture3(*args, stdin_data: stdin)
             else
               Open3.capture3(*args)
             end
    result = Result.new(*result)
    if trace
      unless result.stdout.empty?
        puts Rainbow('stdout:').red.bright
        puts result.stdout
      end
      unless result.stderr.empty?
        puts Rainbow('stderr:').red.bright
        puts result.stderr
      end
      if result.success?
        puts "#{Rainbow('status:').red.bright}#{Rainbow(' success').yellow}"
      else
        puts "#{Rainbow('status:').red.bright}#{Rainbow(' FAILED').red.bright}"
      end
    end
    result
  end
  module_function :run
end

文字列をハイライトするrainbowというgemを使っています。

また、AppleScriptなどのスクリプトを実行するためのモジュールも作りました。

# frozen_string_literal: true

require 'open3'
require 'rainbow'

module MacOS
  # OSAスクリプトの実行
  module OSAScript
    PROG = 'osascript'
    LANG = 'AppleScript'

    # 文字列`code`をスクリプトとして実行する。
    def run(code, prog: PROG, lang: LANG)
      code = String(code)
      if code.empty?
        External.run(prog, '-l', lang, '-e', 'delay 0')
      elsif code.include?("\n")
        External.run(prog, '-l', lang, '-', stdin: code)
      else
        External.run(prog, '-l', lang, '-e', code)
      end
    end
    module_function :run

    # 文字列`code`をスクリプトとして実行し、エラーが発生した場合は例外を送出する。
    def eval(code, prog: PROG, lang: LANG)
      code = String(code)
      result = OSAScript.run(code, prog:, lang:)
      return result if result.success?

      m = /^(\d+):(\d+):/.match(result.stderr)
      if m
        start_pos, end_pos = m.values_at(1, 2).map(&:to_i)
        code =
          "#{code[0...start_pos]}" \
          "#{Rainbow('[').red.bright}" \
          "#{Rainbow(code[start_pos...end_pos]).cyan}" \
          "#{Rainbow(']').red.bright}" \
          "#{code[end_pos..]}"
      end
      raise "#{lang}のエラーが発生.\n## script\n\n#{code.chomp}\n\n## error\n\n#{result.stderr.chomp}\n"
    end
    module_function :eval
  end
end
# frozen_string_literal: true

module MacOS
  # AppleScriptのユーティリティ
  module AppleScript
    LANG = 'AppleScript'

    def eval(code = nil, prog: OSAScript::PROG)
      OSAScript.eval(code, prog:, lang: LANG)
    end
    module_function :eval
  end
end

これらのモジュールを使って、Safariを起動して前面に表示するという機能は、次のように実現されます。

  def activate_safari
    MacOS::AppleScript.eval(<<~END_OF_SCRIPT)
      tell application "Safari" to activate
    END_OF_SCRIPT
  end

また、AppleScriptでは、SafariでJavaScriptを実行し、その結果を得るというスクリプトを書くこともできます。

  def read_page_number
    result = MacOS::AppleScript.eval(<<~END_OF_SCRIPT)
      tell application "Safari"
        do JavaScript "document.getElementById('page_number')?.textContent" in front document
      end tell
    END_OF_SCRIPT
    Integer(result.stdout.strip)
  end

この機能はとんでもなく強力で、できることが大きく拡がります。頑張れば、ウェブサイトを使った報告書の提出などを自動化できる可能性もあります。

]]>
7月30日と31日は休業です https://abe-law-office.jp/v2/7%e6%9c%8830%e6%97%a5%e3%81%a831%e6%97%a5%e3%81%af%e4%bc%91%e6%a5%ad%e3%81%a7%e3%81%99/ Wed, 29 Jul 2026 05:54:54 +0000 https://abe-law-office.jp/v2/?p=2394 本年7月30日と31日は、私用のため、完全休業とさせていただきます。

(8月3日追記) 想定以上に時間がかかっており、8月3日も同様にさせていただきます。

]]>
ローカルLLMは日常業務の役に立つか https://abe-law-office.jp/v2/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%af%e6%97%a5%e5%b8%b8%e6%a5%ad%e5%8b%99%e3%81%ae%e5%bd%b9%e3%81%ab%e7%ab%8b%e3%81%a4%e3%81%8b/ https://abe-law-office.jp/v2/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%af%e6%97%a5%e5%b8%b8%e6%a5%ad%e5%8b%99%e3%81%ae%e5%bd%b9%e3%81%ab%e7%ab%8b%e3%81%a4%e3%81%8b/#comments Mon, 06 Jul 2026 12:07:19 +0000 https://abe-law-office.jp/v2/?p=2385 ChatGPTやGeminiなど、LLM(Large Language Models)を使った対話型生成AIサービスが急速に拡大しています。Googleなどの検索エンジンは、これらの生成AIサービスに取って代わられるようになってきており、個人的にも、昔ながらのインターネット検索をするよりGeminiを使ってAIモードで検索することの方が多くなってきているな、と感じています。

生成AIは、知識を使って質問に対する答えを返すだけでなく、与えられた文章の構造を分析して要約するような機能も備えています。また、指示されたとおりの文書を作成するなど、エージェントと呼ばれる機能を持ったものもあります。

そのため、日常業務に生成AIを使い、手間のかかる作業をコンピューターにやってもらおうという動きが出てきており、対応するアプリケーションも驚くような勢いで開発が進められています。最近注目されているものとしては、OpenClawがありますね。

では、それらの生成AIアプリケーションは弁護士の日常業務に役立つのでしょうか。

弁護士の日常業務を考えてみると、文章の構造を分析したり、決まった形式の文書を作成したりすることが多いので、弁護士の日常業務で生成AIが役立つ場面は意外と多くあるように感じています。

しかし、実際に使おうと思ったところで障害になるのは、守秘義務です。

弁護士が扱う情報は基本的に機密に属する情報であり、秘密厳守が求められます。生成AIのサービスは基本的にオンラインで提供されているため、文書の要約などを生成AIにやってもらおうとすると、個人情報の塊をインターネット上にアップロードしなければなりません。もちろん、そこは強力に暗号化されるほか、アクセス制限をかけるのが通常ですので、実際上は守秘義務に反するような事態は起きないと思っているのですが、絶対と言い切れないところがあります。全ての過程を自分で管理できず、サービス提供者に任せてしまう部分があるというのは、心配に感じてしまうところです。漏洩する可能性のほか、勝手に学習のために使われてしまう可能性も気になります。知らないところで秘密の情報がAIの学習に使われると、質問の答えとして秘密であるはずの情報が現れて広く知れ渡ってしまう場合があります。

このような心配は、ローカルLLMを使うことで解消できるかもしれません。

ローカルLLMとは、文字通り、自分のコンピューター上でLLMを動作させるというものです。そのため、LLMの扱う情報がインターネット上にアップロードされることはありません。秘密が漏洩してしまうのではないか、という心配は解消されることになります。(もっとも、弁護士本人の誤ったセキュリティ対策によって情報漏洩の危険が生じている場合は、まったく解消されないのですが。)

このところ、ローカルLLMの技術も急速に開発が進んでいます。個人的にオススメするのはollamaです。

開発は活発に進められており、また、多数のモデルが公開されて自由にダウンロードできるようになっています。GoogleのGemmaや、AlibabaのQwenなど、強力なオープンモデルが利用できるようになっており、何の準備も必要なくローカルLLMを利用できるようになっています。

さて、ローカルLLMの導入で障害となり得るのは、コンピューターの計算性能です。LLMは大量の演算を行うため、専用の演算プロセッサとメモリが必要になります。ハードウェアとLLMの間をつなぐのがAPIになりますが、WindowsではNVIDIAのCUDAが先駆けで、その後もMicrosoftのDirectMLや、Khronos GroupのVulkanなど、いくつかのAPIが普及し始めているようです。

使っているコンピューターやグラフィックカードがこれらのAPIをサポートしている場合、ローカルLLMを快適に動かすことができます。しかし、演算を行うグラフィックカード(画像表示用のプロセッサですが、実はAI用の演算がとても得意なので、一般的に使われています)の能力によって演算能力は大きく異なるので、どれくらいのモデルを使うことができるのかは、実際に動かしてみなければ分かりません。

MacにはMLXというフレームワークがあり、これはAppleシリコンに最適化されています。そのため、M1以降のプロセッサを搭載したMacであれば、追加で何かを導入する必要なく、ローカルLLMを快適に動かすことができます。Intelプロセッサを使っている場合は利用できないのですが、そもそもローカルLLMは比較的最近の性能を備えたコンピューターでなければ動作させることが難しいので、Appleシリコンは大前提になると考えた方が良いでしょう。Appleシリコンの場合、演算速度はそれなりに出るのですが、ネックになるのはメモリです。Macはユニファイドメモリという仕組みを使っており、CPUとGPUが同じメモリを共有しています。ローカルLLMを使うなら、少なくとも16GBは欲しいところです。自分は24GBで使っていますが、それなりに余裕があるため、ローカルLLMを使いながら別の作業も同時にできています。Windowsでは別々のメモリを使っているため、コンピューター本体に大量のメモリがあっても有効に活用できない場合があります。

自分もollamaとGemmaをインストールして、ローカルLLMを試用し始めています。Gemma3はちょっと遊べるという程度の性能だったのですが、Gemma4は驚くほど性能が高く、判決文を要約したり、関連資料を与えて練習問題を作り出したり、自分で作るのが面倒なスクリプトを作ってもらったりと、活用できる場面が増えています。いろいろな使い方を試しているところなので、経験値が貯まってきたころ、使い方を紹介できればと考えています。

]]>
https://abe-law-office.jp/v2/%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%abllm%e3%81%af%e6%97%a5%e5%b8%b8%e6%a5%ad%e5%8b%99%e3%81%ae%e5%bd%b9%e3%81%ab%e7%ab%8b%e3%81%a4%e3%81%8b/feed/ 1
MacWhisperをMacBook Proで動かす https://abe-law-office.jp/v2/macwhisper%e3%82%92macbook-pro%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%99/ Sat, 06 Jun 2026 07:44:29 +0000 https://abe-law-office.jp/v2/?p=2381 以前の記事「whisper.cppのCore ML版をM2 MacBook Airで動かす」から2年くらいが経過しました。その間に生成AIが驚く勢いで成長し、音声入力も当たり前の世界になってきました。そんな現在は音声認識も簡単になっているだろうと思っていたら、実に簡単になっていました。

以前はPythonをインストールして、モデルを生成して、と面倒な段階を踏まなければ音声認識できなかったのですが、MacWhisper(AppStoreではWhisper Transcriptionという名前)というアプリを使えば、インストールするだけで簡単に音声認識して文字起こしをすることができるようになります。

タイトルには「MacBook Proで動かす」と書きましたが、M1シリーズ以降のAppleシリコンを搭載したmacOSマシンであれば、どれでも動きます。もちろんM2やM5など、世代が進めば進むだけ処理は高速になります。

Homebrewを使っているのであれば、macwhisperというcaskをインストールするだけです。

% brew install macwhisper

AppStoreで「Whisper Transcription」を検索してインストールする方法でも構いません。

課金すればPro版になり、文字起こしの結果を様々なフォーマットで出力できるほか、バッチ処理などの機能を使うことができるようになります。

証拠でiPhoneなどスマートフォンで撮影した動画を提出することがあります。このとき、部分的にでも文字起こし版も提出するように求められることがあります。文字起こしがなければ、動画の全部を見なければならなくなり、証拠の内容を把握することが難しくなってしまいます。

そんなとき、macOS標準のiMovieを使って動画から音声だけを切り出して保存し(動画をエクスポートするときに選択できる)、MacWhisperに渡せば、あっという間に文字起こしをしてくれます。もちろん、一部には正しく認識できないところがあり、また、人名などは正確に変換できないので、ある程度の手直しは必要ですが、大部分は問題なく認識してくれるので、大幅な時間短縮になります。

]]>
巨人の監督の辞任騒動について https://abe-law-office.jp/v2/%e5%b7%a8%e4%ba%ba%e3%81%ae%e7%9b%a3%e7%9d%a3%e3%81%ae%e8%be%9e%e4%bb%bb%e9%a8%92%e5%8b%95%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/ Sun, 31 May 2026 13:15:12 +0000 https://abe-law-office.jp/v2/?p=2365 令和8年5月26日、野球チーム巨人の監督が、娘に対する暴行事件により辞任しました。

報道で伝えられている事実関係は、次のようにまとめられると思われます。

  • 5月25日午後6時頃、監督の自宅で、18歳の長女と15歳の次女がけんかを始めた。
  • 監督は、姉妹の喧嘩を止めようと仲裁に入った。
  • 長女から言い返されたことに腹を立て、長女の襟元をつかみ、投げ飛ばして倒すなどの暴行を加えた。
  • 長女にけがはなかった。
  • 長女はこの直後、ChatGPTに解決法を尋ね、児童相談所への通報を勧められた。
  • 児童相談所に通報すると、警察に通報が行き、臨場した警察官が監督を暴行の現行犯で逮捕した。
  • 26日未明、監督は釈放された。
  • 長女と監督の間に、過去、トラブルはなかった。
  • 長女は、殴る、蹴るといった事実はなかった、過度な状況説明が事実と異なってしまった、と事件後に述べている。

以下の記述は、これらの情報を前提事実であるとして考えていきます。

このニュース自体は、ふーん、という程度の感想でした。巨人を応援しているわけでもなく、個人的な知り合いというわけでもないので、児童相談所経由ということは、小さなお子さんのいる家庭なのかな、あれれ、18歳に対して児童相談所が出てくるとはどういうこと?と思っていました。

その後のニュースを見ていると、町ゆく人たちが口々に、辞任は残念だ、と言っている様子が報道されていました。また、報道番組のコメンテーターは、暴力は許されないことだと話すだけで、監督を辞任することに特段の反対をする人はまったく見かけられませんでした。

つまり、いまの日本社会は、今回の事件に対する反応として、暴力事件を起こした監督が辞任することは当然の結末であり、これに明確に反対する人はいない(少なくとも報道されない)ということです。

そのような様子を目にして、本件そのものに対してではなく、本件に上述の反応を示す日本社会に対して、強烈な違和感を持つようになりました。出来事に対する反応が、論理的なものではなく、とても感情的なものに感じられるのです。

監督が暴行事件を起こしたとして、なぜ、監督を辞任しなければならないのでしょうか。罪を犯した人は、野球チームの監督になることはできないのでしょうか。

野球チームの監督は、野球の試合で勝利することができるように、選手たちを適切に配置して運用することが立場上の目的であるはずです。犯罪をしたかどうかは、その目的に何ら影響を与えるものではありません。野球監督としての能力は、野球の能力や、その理解度によって判断されるもののはずです。

勝率が悪くなり、選手からの評判も悪い、というような事実があれば、野球監督が果たすべき役割を果たしていないものとして辞任を迫られるのも仕方がありません。しかし、野球の試合とまったく関係のないところで暴力事件を起こしたとして、それは野球監督の能力に影響を与えるものでしょうか。論理的に説明することはできないように思われます。

野球監督が設置されている目的に照らせば、野球監督が暴行事件を起こしたとしても、ただちに辞任しなければならないという理由はないはずです。例えば強盗事件を起こして逮捕勾留され、長期間身体拘束を受けるということであれば、試合に出場できないなど、職責を果たせなくなるので、解雇や辞任もやむなしとは思われます。しかし、今回の事件では、すぐに釈放されているので、そのような心配はありません。

いまの日本社会は、野球監督というものに対して、野球のチームを率いるという目的以上のものを求めているのだと考えられます。具体的には、清廉さ、誠実さというものを求めているのでしょう。それらの価値観が傷つけられたため、監督を辞任しなければならない、という結論に至っているのではないでしょうか。

野球チームと監督の間の契約関係がどうなっているのか詳しくないのでよく知らないのですが、契約の解除事由に掲げられている場合は、契約の履行にすぎないのでむしろ当然であるといえますけれども。今回は辞任したということで、そのような契約条項が働く場面ではなかったと考えておきます。

さらに一般化していくと、すなわち、日本社会は一定の地位に立つ人に対して、能力だけでなく、清廉さも求めている、と考えられます。あくまでも個人的な感覚なので、そう簡単に一般化した議論をして良いのかは分からないのですが、この考えが正しいのだとすると、罪を犯した人が社会的に立ち直るのは、ほとんど不可能だということになります。一度でも犯罪に関わった人は、日本社会においては信用されない、ということです。

これは、きわめて視野の狭い考え方だと思います。あまりにも潔癖なのではないでしょうか。そのような社会は、一見すると綺麗で良く見えますが、とても脆弱で、ちょっとした衝撃で壊れてしまうように思われます。個人的には、もっと失敗に対して寛容な社会であるべきだと思います。もちろん、犯罪行為を罰することは必要です。しかし、その行為に対して処罰が加えられた後は、過去の過ちを蒸し返すべきではないと考えます。人間は常に完璧な行動ができるわけではありません。そもそも、完璧というものは評価にすぎず、時代が変われば真逆の評価になることもありえます。

そもそものところで気になっているところもあります。裁判所で有罪判決が下されていないので、推定無罪の原則により、罪を犯したと考えることはできないはずです。本人は認めていますが、自白のみで犯罪を立証することはできません(刑事訴訟法319条2項)。長女は、児童相談所への通報はしていますが、暴行の事実はなかったとも言っています。これらの事情を考慮すれば、警察に逮捕されたということだけで野球監督を責め立てるというのは、社会的な迫害行為になるのではないでしょうか。世の中が嫌っている「いじめ」というものです。

]]>
6月1日は休業します https://abe-law-office.jp/v2/6%e6%9c%881%e6%97%a5%e3%81%af%e4%bc%91%e6%a5%ad%e3%81%97%e3%81%be%e3%81%99/ Sun, 31 May 2026 13:00:53 +0000 https://abe-law-office.jp/v2/?p=2371 誠に勝手ではございますが、令和8年6月1日(月)は休業させていただきます。

]]>