このページの本文へ

遠藤諭のプログラミング+日記 第20回

人工知能とPythonで書いたBOTとジャパニメーションことはじめ

2017年06月22日 22時00分更新

文● 遠藤諭(角川アスキー総合研究所)

  • この記事をはてなブックマークに追加
  • 本文印刷

自家中毒的悦楽読書BOTのたのしみ

 ひさしぶりに自分の書いた本を読んでみた。1991年に単行本で出させてもらった『近代プログラマの夕』(ホーテンス・S・エンドウ著、アスキー刊)である。なぜ、そうなったのかというと本の中身をそのままつぶやくマストドンBOTを作りたいと思ったのだ。マストドンなら1回500文字つぶやける。日本語の本では、1つの段落が500文字を超えることは滅多にない。だったら本をつぶやくBOTを作るとどうなるか? やってみたいとなったわけだ(このコラムの「いちばんやさしい「マストドン」(Mastodon)の話」でも書きました)。

 マストドンのBOTは、RubyやPythonで作っている人が多いようだが、私の場合はいま勉強中のPython向けに用意されている「Mastodon.py」を使ってみた(本当に簡単に書けてしまうのでこの原稿の最後に紹介しておくことにしよう)。

 ところで、本は、その人の頭の中にあるものをコピーしたようなものなので、書いて何年かしてから自分で読んでみると、現在の自分の頭の中との違いで軽いクラクラ感を覚えることがある。同じ人間なので基本は変わらないのだが、わずかな違いが「干渉縞」のような効果をもたらすのだと思う。今回は、それが『近代プログラマの夕』という25年も前に書いた本である。しかも、それがBOTになったので、昼間であろうが夜中であろうが一定時間ごとにボソボソボソとつぶやいてくる。

 なんとなく、25年前のコピーされた自分がどこかの端末に向かってカタカタとキーボードを叩いてつぶやいているような感じである。これってちょっと、なんとなく自分が人工知能になったようなチューリングテストの対象プログラムになったような気分である。

 さて、そんな「近代プログラマBOT」のつぶやきを見ていて、ちょっとクラクラ感の大きかったお話がいくかあったので紹介したいと思っている。完全に忘却の彼方にあったわけではないが、そもそも、ここで書いている状況が大きく変わっているのがその理由だろう。たとえば、「青い目のオタッキーに気をつけろ!」(Act.32:1989年8月号掲載)を、以下にそのまま引用してみる。インターネット商用化以前のことなので、ちょっと古いテレビ番組でも見るような気持ちで読んでいただきたい。

それは、友人Hのアクセスから始まった

 半月ほど前のこと、私のサバイバルゲームのコンペティターにして、古い友人でもあるH氏が編集部をたずねてきた。それよりも1週間ほど前に会ったときに、通信の話をしたのを覚えていて、自分でも海外ネットにアクセスしてみたいのだという。

 彼は、かつてアレクサンダー長谷川という名前で『MSXマガジン』に登場したという過去を持つ。私がパソコンのパの字も知らなかったときに、AplleⅡのコンパチで、バリバリとゲームをやりまくっていたこともある。なお、サバイバルゲームにおける彼のいでたちは、中国人民解放軍は僻地担当部隊がご愛用の耳ダレ付き人民帽である。

 さて、話はここからだ。まず、手始めにというわけで、CompuServeにアクセスしてみたのである。ご存じのようにネットワークは、いろいろな横丁(これをSIGという)に枝分かれしているというのが基本的な構造だ。自分の読み/書きしたい分野のSIGを自由にたずねて見れるようになっている。

 ふだん、もっぱらコンピュータ関係のSIGにしかアクセスしないから、ほかのSIGを目の当たりにすることがなかったのだ。思えばCompuServeが、そのような、ほとんど『月刊アスキー』誌のような内容だけで塗り固められているはずもないのである。数あるSIGの隅っこ、“Hobbies/Lifestyles/Education”の下の“Arts/Music/Literature”の下に“Comic/Animation Forum”というSIGがあるのはよいとして、さらにその中に“Japanimation”というセクションがあるとは知らなんだ。

 この“Japanimation”という言葉、日本では聞きなれないが、容易に「日本」の「アニメ」というふうに理解できる。友人Hは、音楽関係のSIGを覗いてみたいなどと言っていたのだが、たまたまここに寄ってみたところ、某マンガ週刊誌編集という職業意識が目を覚ましたのか、まずはここを探検してみようということになったのだ。

 COMICSのSIGは、通常の書き込みが行なわれる“Message”と、プログラムやグラフィックスデータ、ニューズレターなどがあげられている“Libraries”の2つのメニューについて、それぞれ10個ほどのセクションに分かれているのだが、それぞれに“Japanimation”がある。

その全体像は計り知れない

 JapanimationのLibrariesには、ニューズレターの類がいくつもアップされているのが目につく。たとえば、“San Diego C/FO Newsletter”や、そこからドロップアウトしてできた“Southern California Anime Network”(SCAN)、“ANIMANGA NUZU”などだ。前者2つは、日本のアニメ関係らしいタイトルが付いていないが、中身は“Urusei Yatsura”や“Orange Road”や“Saint Seiya”はじめ、Japanimation一色だ。また、このグループは、オフラインミーティング(いわゆる“オフミ”ですな)も盛んなようで、下手をすると、噂に聞くアメリカンにおけるコスプレのJapanimation版に侵されている可能性が十分にある。

 “ANIMANGA NUZU”もなかなか強力である。この“ANIMANGA”という単語も“Japanimation”と同じく日本にはない表現だ。アニメキャラクターのスペックリストなどから始まって、Japanimation関係の書籍の入手できるところや、Japanimation関連の情報が得られるBBSなど、コレクター色が濃い。

ANIMANGA NUZUのタイトルより。

 最もアクティブな活動をしているのは、Tom Mitchell氏率いる“ANIME STUFF”であろうか。1989年4月に出された10号では、“Anime Stuff Special-First Anime Poll”の結果が報告されている。いわゆる人気投票である。“Favorite 3 Anime Feature Film”(結果:① Nausicaa  ② Macross Movie  ③ Laputa)から始まって、

Favorite 3 Anime TV Shows
 (結果:① Dirty Pair  ② Kimagure Orange Road  ③ Urusei Yatsura)
Favorite Female Anime Charactor in a TV Series
 (結果:① Ayukawa Madoka  ② Lum  ③ Kei)
Favorite Supporting Female Anime Charactor in a TV Series
 (結果:① Hiyama Hikaru/Shinobu  ③ Benten)
Favorite Female in a Feature Film
 (結果:① Nausicaa  ② Lum  ③ Minmei)
Favorite Supporting Female Anime Charactor in a Feature Film
 (結果:① Chen Agi  ② Dola  ③ B-ko)
Best Animation Quality in a TV Series
 (結果:① Dirty Pair  ② Maison Ikkoku  ③ Kimagure Orange Road)

 などなど、33項目にわたる投票結果が掲載されているのだ。

 ニューズレターのボリュームは、10Kbytesから60Kbytesにおよぶものもあり、日本から、すべてをダウンロードするには勇気がいる。その他の内容は、スクリプトの翻訳やレビューで、レビューの内容はアニメ作品から飯島真理など周辺ジャンルへ飛び火しつつある! そして、ファンクラブの紹介などだ。“ANIME STUFF”6号では、

American Alliance for Japanese Animation
 (AAJA: Robert Napton/1236 Euclid Street #201 Santa Monica, CA 90404)
The MACROSS Fan Club
 (P.O. BOX 2566, Costa Mesa, CA 92628-2566)

 を紹介している。また、BBSでは、

Valley of The Wind BBS
 (300~1200bps、(415) 341-5986)
The Chachamaru Snack Bar
 (300~1200bps、(313) 884-0418)

 などを紹介している。

静かにしかし確実に侵攻中だ

 これだけの組織があるとなると、当然のことながら、彼らの一部が日本に流れてくるということも起こってくるようだ。“San Diego C/FO Newsletter”では、Patti Duffieldなる人物が、日本からのレポートを寄せている。彼は、冒頭、「いま、私はシーフード・カップヌードルを食べている。これは、タコの入ったものでアメリカでは見られないタイプのものだ」などと、日本カゼを吹かせている。彼は、University of Arizonaの学生で、exchange studentで日本に来ていると書いている。亜細亜大学との間で大量の交換学生を実施したのは、このUniversity of Arizonaではなかったか…。もっとも、Japanimationのファンに学生が多いのは確かだろう。アメリカの大学や研究機関のUNIXユーザーを結ぶネットワークであるUsenetのニューズグループ“rec.arts.anime”のダイジェストなども、JapanimationのLibrariesにはアップされている。あるいは、CompuServeなどよりも、こちらのほうがはるかに高度にオタッキーな会話がなされている可能性が大きい。

Usenet newsgroup rec.arts.animeより。

 ニューズレターのほか、変わったところでは“Hokuto No Ken”の“ATA”、“ATATATATATATATATATATA”などのサウンドデータがアップロードされていた。Amiga、Macintosh、Atari STの3機種用のデータがあり、それぞれ、PDSなどのプログラムで聴くことができるようだ。Amiga、Macintosh、Atari STという3台の青い目のコンピュータを並べて、いっせいに“ATATATATATATATATATATA”と声をあげさせたりしたら、さぞ異様なことだろう。

 さて、Messageと呼ばれる一般の書き込みや文字による会話(Conference)もなかなか強力である。Messageは、1日数件は確実に書き込まれており、ここ数日間は、“Shinobu in ST: TNG?”というタイトルで議論が続いている様子だ。内容は、どれも興奮気味で、私の貧弱な英語力では意味がよく分からない。6月17日の書き込みでは、やはり登場するのではないかと思われていたADULT oriented programについてのものがある。“CLEAM LEMON”を推薦しているこの人物は、US Air Forceにいるとのことだ。今後、この種のグラフィックスが、米軍機のノーズアートとしてペイントされる可能性もまるでないわけではないと言ってよいだろう。

 もう1つ、最近の書き込みに、なかなかインパクトのあるものがあった。Sacramentoに住むMark Newton-Johnなる人物が、“singer of the Urusei Yatsura”に街で会ったというものだ。ある日、彼は、ポータブルステレオで、「Urusei Yatsura/Juke Box 2」を鳴らしながら、電気店に入っていった。テープが“Rock the Planet”を演奏しているところで、2人の人物が彼のところに寄ってきたのだという。そのうちの1人が、なんと“Rock the Planet”を歌っているSteffanie Borgesその人だったというのだ! 彼女もまた、Sacramentoに住んでいるのだという。しかし驚いたのは、むしろSteffanie Borges嬢のほうかもしれない。そもそも、青い目のアメリカ人が、アメリカの電気店に、うる星のテーマ曲を鳴らしながら入っていくというだけで、なかなか凄い光景である。その後のアーティクルでも、Mark Newton-John氏は、“She's pretty cute”とかなんとか続けている。

 そして、いちばんリアルだと思われるのが、毎週、Japanimationセクションのオンラインミーティングが開かれているという事実だ。それは、毎週日曜日のアメリカ東時間夜9時(日本時間の月曜朝)から行なわれているという。日曜の夜のひとときを“Urusei Yatsura”や“Kimagure Orange Road”について語りあかすアメリカ人というのは、いったいどういう人たちなのだろう。遥か2000万メートル遠方の異国の地のネットワークで交わされるチャットのことを静かに想うと、意識が遠くなりそうだ。我々は、ただちょっとこのセクションを覗いてみただけである。ほんの少しダウンロードしてみただけだ。静かに、このSIGをあとにすることにしよう。

Pythonで書いたBOTはこのようなものだ

 この話の冒頭に出てくる友人Hくんは、その頃、『週刊少年ジャンプ』の編集部にいて、いまはS社の新書編集部にいる。要するに、原稿の中で書かなかったことも時間とともにほどけてきて、本というものに閉じ込めた情報とそれ以外のものが溶け出すように頭の中にひろがってくる。そして、いまやジャパニメーションは、その言葉自体が意味をなさないくらいフツーのものになっている。

 ということで、私が書いたBOT、といってもMastodon.pyのサンプルコードに原稿ファイルを読み込む部分を追加しただけなのだが、以下に紹介しておくことにする(この程度のことで書けてしまうのだというのを見ていただければと思う=実際に動かしているものをちょっと直したけどたぶん動くと思う)。まず、最初にやっておく必要があるのは、アプリのレジストレーションである。これは1回だけ実行するればよい(サンプルコードからアプリ名をmymstdnbotに変更、インスタンスは私の使っているmastodon.cloudに変更してある)。


from mastodon import Mastodon

Mastodon.create_app(
     'mymstdnbot',
     api_base_url = 'https://mastodon.cloud',
     to_file = 'pytooter_clientcred.secret'
)

 次に、実際にトゥートする前にマストドンにログインするコードを実行する(メールアドレスとパスワードは自分のものに)。


from mastodon import Mastodon

mastodon = Mastodon(
    client_id = 'pytooter_clientcred.secret',
    api_base_url = 'https://mastodon.cloud'
)
mastodon.log_in(
    'my_login_email@example.com',
    'incrediblygoodpassword',
    to_file = 'pytooter_usercred.secret'
)

 これで準備ができたので、あとは、本の中身(といっても電子書籍とかではなくてテキストファイルで1つのフォルダーの中に複数のファイルで入っている)を段落を1つずつ取り出しては、マストドンにつぶやいていくプログラムである。


# -*- coding: utf-8 -*-
#

from mastodon import Mastodon
import re, sys, io, codecs, glob, time

def line_proc(line):
  out_data = line
  mastodon.status_post(status=out_data, visibility='unlisted')

mastodon = Mastodon(
    client_id="pytooter_clientcred.secret", access_token="pytooter_usercred.secret", api_base_url = "https://mastodon.cloud")

files = glob.glob('*.txt')
for  file_n in files:
  datafile = codecs.open(file_n, 'r' , 'utf-8')
  for line in datafile:
    line = line.rstrip()
    if line == '' or re.search(r'^#', line):
      continue
    elif line == '■■■終了■■■':
      sys.exit(0)
    else:
      line_proc(line)
      time.sleep(1800)
  datafile.close()

 ここでは、いわゆる非収載トゥートを1800秒おきに行うようになっている。「■■■終了■■■」の行がきたらすべての処理を終了する。なお、「いちばんやさしい「マストドン」(Mastodon)の話」でも書いたように、BOTは、ミニブログにとって大変に可能性を秘めたものだというのが私の意見だが、スパム認定されるようなものは作らないようにしたい。

こちらは同じタイミングで作った『計算機屋かく戦えり』のBOT。

お知らせ

 角川アスキー総研でやっている宮川大輔さんのPython講座、好評につき3回目のリピート開催を行います。いま人気のプログラミング言語Pythonをキッチリと身に付けたいに方は、以下の情報をご覧ください。受講後1週間までのアフターサポート付きなど充実した内容となっています。

道具としてのPython ~最適なカリキュラムで学ぶ2日間~/ディープラーニング、データ解析に必須のプログラミング言語Python講座

【開催概要】
日時:2017年6月24日(土)、25日(日)
会場:角川第3本社ビル 14F(東京都千代田区富士見1-8-19)

主催:株式会社角川アスキー総合研究所
講師:宮川大輔(敬称略)
講座内容:
■ステップ1
 まずは「道具としてPython」を使えるようになることを目指します。実際に普段そのまま使えるアプリケーションを作っていきます。
・Python入門
Pythonのインストール
・Pythonプログラミング(1)
 「Webスクレイピング」(ウェブを探索してデータを収集、加工、出力する例題です)をテーマに、基本的な文法やその応用を学びます。
■ステップ2
 Pythonの入門に加えて、今後、実践的に使っていくときに役立つ技術に触れて理解することを目指します。
・Pythonプログラミング(2)
 Pythonの基本に続いて、拡張機能を導入して、データ解析やテキスト処理、画像処理、EXCELとの連携などを学びます。ディープラーニングやビッグデータ解析など、Pythonで広がる応用分野についての概説を行います。
・Pythonで開発をするために必要なこと
対象者:
 企業における業務・研究・クリエイティブ分野などで、Pythonの活用を考えている方。ソフトウェア開発に従事している方でなくてもプログラミングとは何かに関して一定の理解があり、今後、Pythonを使った開発を行うことに明確なモチベーションをお持ちの方。
募集人数:30名(予定)
参加費:40,000円(税込)
 ※懇親会は軽食と飲み物となります。費用は講座参加費に含まれています。
機材等:
 Pythonをインストール可能なノートPCを持参して使用していただきますが、適切なマシンが用意できない方にはPC(Windows 10ノート)をご用意します。

参加登録はコチラから!
==>http://lab-kadokawa27.peatix.com(Peatixの予約ページに遷移します)。


遠藤諭(えんどうさとし)

 株式会社角川アスキー総合研究所 取締役主席研究員。月刊アスキー編集長などを経て、2013年より現職。角川アスキー総研では、スマートフォンとネットの時代の人々のライフスタイルに関して、調査・コンサルティングを行っている。また、2016年よりASCII.JP内で「プログラミング+」を担当。著書に『ソーシャルネイティブの時代』、『ジャネラルパーパス・テクノロジー』(野口悠紀雄氏との共著、アスキー新書)、『NHK ITホワイトボックス 世界一やさしいネット力養成講座』(講談社)など。

Twitter:@hortense667
Mastodon:https://mstdn.jp/@hortense667

カテゴリートップへ

この連載の記事
ピックアップ