C96参加&新刊告知

ご無沙汰しています。私です。 来る夏コミ(C96)の3日目(8/11)にサークル参加して、サークル:ポストモダンのポリアネスの新刊を出す運びになりましたので告知させていただきます。

新刊概要

  • 頒布場所:C96 3日目 西こ-01b(お誕生日席!)
  • タイトル:ポストモダンのポリアネス tech. ~ 4コマ漫画のデータ収集と分析による評論の可能性(with Python) ~
  • 頒布価格:1000円
  • サイズ、ページ数:A5 72ページ(表紙込み)
    • 後書き・謝辞を書かないまま入稿したので後付ペーパーが挟まる予定です
  • 頒布数:多め
  • 新刊以外の頒布:なし。無料配布ペーパーは作るかも
  • 通販:コミックZIN様を検討中。電子版は未定
  • 3日目以外の委託頒布:現在予定なし

以下に書影および、1章全部を載せるので、購入の判断材料にしてください。

表紙

新刊の内容について

1章の内容と被りますが、弊サークルは2015年冬コミから4コマ漫画評論とプログラミングの力をかけ合わせて新しい分析・評論の可能性を探る『tech.』を刊行し、コマの切り出し、セリフの抜き出し、分析等の技術を向上してきました。

今回の新刊では4年分の成果を1冊にまとめ、データ収集から分析・評論までを一気通貫に行う方法を紹介しています。

内容は同人誌以外にPythonのカンファレンスや勉強会、ゆゆ式Advent Calendarのブログ記事などで発表してきたものをブラッシュアップし、セリフデータの分析など新たに書き下ろしたものになっています。

また、技術書というよりは、技術を基にした評論本として書いたため、詳細なプログラミングのコードが出てくるというよりは、それぞれの処理がどんな考え方で実行されていくのか、どのくらい便利になっていくのかを説明するものになっています。ただし、この本で使用したコードなどはすべてGitHubのリポジトリで公開しますので、だれでも同様の成果を得られるでしょう。

今後の展望

今回の本で表データをゆゆ式1〜9巻、セリフデータを1,5,9巻分データ化していますが、それをもっと楽にデータ化する手法の開発や、もっとゆゆ式の本質に迫る分析ができるといいと思っています。特にセリフデータをいい感じに形態素解析・ベクトル化して発話者特定とかしたいですが、いまいち方法がわからんので詳しい人にアイデアもらいたいです。

4コマ漫画の自動生成できかもですねえと、言われることも多いのですが、あまり面白いものができる未来は現状見えません。「三上先生を納得させるレベルのゆゆ式チューリングテストを考案し、それを突破する会話劇をGANかなんかで生成する」というよくわからないアイデアならあります。よろしくおねがいします。

また、コミック工学と呼ばれる漫画やアニメを主体とした技術研究の界隈があることを、本プロジェクトで参考にできそうな技術情報・論文を探すうちに知りました。詳しくは https://www.ai-gakkai.or.jp/MY-BOOKMARK_VOL32-NO6/ を一読いただけると良いかと思います。様々な研究で本プロジェクトはのようにコマ抜き出し、セリフ抜き出しなどが考案・実施されています。私とは進む道やモチベーションは違えど、技術やアイデアなどで協力できる部分があればと考えています。(先日行われたキックオフイベントがすごいから見て https://sig-cc.org/?p=22 )

Twitter関連サービスを10年作ってきて思ったこと

ご無沙汰してます、私です。 最近、Twitterに関連するサービスをシュッとリリースしたのですが、そういえば2008年あたりからTwitter関連サービスを作り続けて、10年くらい経っとるなと気付いたので、その振り返りとサービス告知をしておくか、という文章です。

2008年頃:Tweetまとめ支援ツール

TwitterのつぶやきURLをまとめて入力すると、status_idたちを取り出し、APIに投げてname,screen_name,img_url,text,あたりを取得して、はてなダイアリーに貼るとまあまあいい感じに見えるhtmlのテーブルタグを吐き出すというツールをPHPで雑に作っていました。 つぶやいたものをまとめたいという欲求がこの頃からあったことが伺えますね。まなめさんに褒めてもらって承認欲求を満たしていた記憶があります。

2012年頃:RT直後のつぶやきを見に行くやつ(RtRT)

リツイート(RT)という機能が公式に実装されて幾ばくかしたころ、RTの後に自分の意見を言うユーザーが増えてきました。Replyと違ってその意見が通知として上がってくるわけではないので、ある程度バズった(数RTされた)つぶやきの反応が気になった場合、RTしたユーザーのタイムラインをそれぞれ見に行くということをしていました。 この動きはAPIを使えば自動化できそうだなーと思ったので、PHPでめちゃくちゃ雑に作りました。動いていたのが今では奇跡に思えます。 自分が使う用に実装して動かしたのをTwitterにつぶやいてみたら1000RTされて作るしかないなーという気持ちになって作りました(当時の1000RTは現在の10000RTに相当する…と思う)

ねとらぼさんにも取り上げていただき、今となっては当時を振り返る貴重な資料となっています。本当にありがたい。

その後、TwitterAPI変更や借りていたサーバーの閉鎖に伴い、サービスは終えることになりましたが、@jz5さんが同等以上の機能を持ったリツイート直後のツイートを表示するやつを運営されることになり、今は私もこちらを使うようになりました。便利です。

2014年頃:コミケやらコミティアに出る人のサークルスペースをがっとまとめるやつ(subcatalog)

コミケの時期が近づくと、Twitterの名前に3日目東A01-aみたいにサークルスペースを入れてくれる人が多くなります。どうせカタログチェックをするときにはフォローしてる人やリストに入れてる人も見たりするので、このへんががっと取れると楽だなーとコミケ会場で知り合いの名前を検索窓に入れながら思ったので作りました。

最初はPython2系を使いGoogle App Engineで作ってましたが、2015年夏コミの頃には利用者が増加し、高負荷でGAEの無料枠を使い果たす事態に陥ったため、リニューアルも兼ねてherokuに引っ越して、Djangoとmithril.jsで作り直しました。

さらに去年にはフロントをVue.jsに刷新し、誰でもイベントを作れるようにしました。私がイベントの時期に合わせてイベントデータを作って運用するのが辛すぎたためです。

新しいサイトのURLはこちらです。今でも大きめのイベントが近づくと、↑のつぶやきがRTされたり紹介するのでちょっと悲しいです。

https://www.subcatalog.net/

2018年:Twitterリストに入ってる人達のReplyの応酬だけ抜き出してSlack等に投稿する(relationship)

Virtual YouTuberが隆盛した2018年。オタク活動として推しのTwitterアカウントをフォローするのは当然ですが、推し同士のやりとりから関係性を見出すことも重要になってきます。そういった関係性は時にとてつもない輝きを放つため、絶対に見過ごせないのですが、告知などに埋もれてしまうのもよくあることです。そのため、濃縮された関係性を効率的に味わい、Slackのチャンネルに投稿することで抜けなくチェックできる体制を作りました。

事前準備としてTwitterリストに対象のアカウントを入れておくと、バッチが叩かれる度にリスト内のつぶやきをチェックし、Replyがあれば対象のつぶやきとReplyのURLを指定したSlackのチャンネルに投げます。

f:id:esuji5:20190121181721j:plain

(実行された様子)

公式WEB・クライアントで使われている、特定のつぶやきへのReplyが取得できるAPIを使えればいいのですが、一般には開放されていないのでin_reply_toなんかの情報を駆使してまとめるのがなかなか大変です。

ツールのおかげ化Slack内の人々が関係性に敏感になったことで、30分に1度の起動より先にURLが書き込まれてしまうことが何度かありました。それだけ速報で伝えたいほどに関係性は強烈なのです。

Pythonバッチを雑に作ったものなので、需要があればコード公開したいと思います。

最近のやつ:Twitterに画像を4枚ずつ貼ったものをリプライツリーで読めるようにしてるをWEBの1ページでまとめて読むやつ(sucrose)

最近、漫画家や同人作家の方が過去に描いた漫画などを4枚ずつ貼ったリプライツリーを形成することでTwitterに投稿されるものをよく見ます。つぶやきが2、3個ならさっと読んでしまいますが、けっこう長いものもあり、ありがたいのだけど読むの大変で、でもリプライツリーを辿ればウェブサービスでなんとかまとめて読めそうだなと思ってとりあえずの実装を行いました。とりあえず、以下のリンクから読んでもらうと話が早いです。

リプライツリーと言いつつ、前述の通りリプライを取得するAPIは使えないので、起点になるつぶやきIDを投げると、ユーザータイムラインをsince_id=つぶやきIDよりちょっと過去で指定して取得、画像がないつぶやきがあるまでまとめていくという感じになってます。 とりあえずの実装なのでドメインはsubcatalogに間借りし、画像が何十枚あってもサーバーサイドレンダリングしてますが、需要があれば逐次読み込みなどの高速化をやっていくかという気持ちです。こんなんでも意外と体験がいいのでしばらくは運用する予定です。

この10年で気付いたこと

まとめツール以外は、そもそもなんでこのツールが必要なのかを他人に説明するのが大変で、色々と込み入った使い方をされるTwitterはすごいなあと改めて思いました。

とはいえ、最後のsucroseなんかは、私がツールを作るよりも、Twitterの機能としてユーザーが画像をまとめられるアルバムを作れるようにすれば良さそうな話でもあります。Facebookを例に上げると、こちらには既にそういった機能がありますし、有用なサービスは買収し、それができなければより良い模倣サービスを開発することで大きく成長してきました。もっとも、Twitter社が同様のことをしなかったからこそ私達はTwitterを使い続けてきたのかもしれないので、それは良いとも悪いとも言えません(モーメント機能については見なかったことにします。APIもないですしね…)。

Flickr等の外部サービスを使えばよいとTwitterの経営陣は思っているのかもしれませんが、私はとにかくTwitter外部に遷移したくない・Twitter内で全てを済ませたい人間です。画像を上げたらすぐにRTやFav(現在のLike)で反応がもらえますし、見る側のときは画像や漫画を見るのにpixivにさえ飛ばされたくないです。そしてまあまあの割合で同様に考えているユーザーがいるのではないかと思っています。

sucroseを公開した時に、「ジャンプルーキー等の然る場所にシュッと応募しつつ、Twitter上では最初の4ページを簡単に確認できるようになっている状態があると、作家も読者もプラットフォームも嬉しいのではないか」という意見およびお気持ちをいただきました。 これはけっこうハッとさせられるもので、僕が真に解決すべきはTwitterのしょぼくれた機能を補助することではないと気付いてしまいました。とはいえ、Mastodonを改造して最高のプラットフォームを作るという気持ちがあるわけでもなく、今のTwitter社にAPIの拡充や制限解除など期待するのも無駄だと思うので、せめて現状維持を願うのですが、それもどうかと思うことがなくもなく、なんとも言えない気持ちになりました。

まとめ

  • なんだかんだ使われ続けるTwitterすごい
  • でも、もうちょっとユーザーの声を反映した機能追加があっても良いと思う
  • Twitter関連ツールを作るのは楽しいけど、しょぼくれた機能を補助することが真のゴールじゃないよ
  • 期待もできないが、諦めてばかりいるのもなんだかなあ、なんとも言えねえ

ところでこれはいい感じのsucroseページなので読んでくださいお願いします。 www.subcatalog.net

ゆゆ式Advent Calendar2017オープニングと年表まとめ

オープニング

私です、こんにちは。 今年もゆゆ式Advent Calendarの時期がやってまいりました。

ゆゆ式 Advent Calendar 2017 - Adventar

募集開始からすぐに埋まった去年と違って、今年はまだ空席がある程度のゆったり進行となっております。2017年は、ゆゆ式にとって色んなイベントがあった(公式からの供給があった)1年だったので、みんなの気持ちが満たされているのかもしれません。そんなわけで、今年のオープニング記事としてはこの1年の出来事を振り返り、色々あったことを確かめたいと思います。

年表

  • 2/20 OVA発売記念で「ゆゆ式」のニコ生一挙放送
    • 今年前半の話題といえばやはりOVAですね
    • OVAに関しては秋葉原での看板広告を始めとして、売ってやろうという気持ちが伝わってきたのが良かったです
  • 2/22 OVA発売日
    • TVシリーズに続く13話目のような形でOVAが発表がされました
    • 4年ぶりのアニメ化にも関わらず「ゆゆ式」の雰囲気が出ていて素晴らしい作品でした
    • オリコン情報では2週間で9千枚強が売れたと伝えられ、界隈がざわつく
      • 実際、中身がまったく分からないアニメがこんなに売れるのはとんでもないと思います
  • 3/19 文芸部イベントとして新宿ロフトプラスワンでイベント開催
    • OVA脚本を手掛けたかおり監督、高橋ナツコさん、小倉Pによるトークイベント(飲み会)
    • チケットはなかなかの争奪戦となりました
      • (発売開始時間にUSJハリーポッターブースにいたのでそこからデザリングを駆使して取った思い出)
    • ロフトならではの距離が近い雰囲気でゆったりまったり楽しい時間を過ごせました
    • OVAでの北川隆之さんパートは冒頭のゆずこがくるくる回るところ という情報をゲットしてきました
    • (時間があればもうちょっとちゃんとしたイベントレポートも付けたかったです……)
  • 3/24 ゆずこ&弘崎真史さんの誕生日
    • 三上先生の相方でおなじみの弘崎真史さんとゆずこの誕生日
    • めでたい
    • 作品の登場人物の誕生日を忘れないように、ゆずこは弘崎さん、縁さんは三上先生と同じにしてあるとのこと(参考:マンガルカvol.1)
  • 4/14 お母さん先生の誕生日であることがまんがタイムきらら2017年6月号(5/9発売)にて発覚
    • 誕生日が分かっているのが単行本1巻に出てきたゆずこたち3人のだけだった
    • って5/9に分かっても誕生日もう今年過ぎとるやんけ! というアレ
  • 5/1 唯ちゃんの誕生日
    • ここは特に知り合いの誕生日とかではないらしい(この前のコミケで直接質問してくれた友人情報)
  • 5/7 情報処理部イベント
    • 多分3回目の情報処理部イベント
    • 開演前にかおり監督と小倉Pと観客みんなでOVAを実況する時間があって楽しかった
    • イベントはまあそんなにいいかな……と思ってはいても、やっぱり行ってみると最高という気持ちになりました
  • 6/25 きららファンタジアと初期参加作品にゆゆ式があることが発表される
  • 8/27 原作9巻発売
    • 8巻からは1年2ヶ月ぶり
    • 毎月8P掲載だと1年1ヶ月毎に出るが、この時期は縮小掲載が多かったので致し方なし
    • 表紙の唯ちゃんとおかちーを見るだけで、あーーっとなれる逸品
  • 10/6 種田梨沙さんが仕事への復帰を報告
  • 10/22 きららファンタジア事前登録記念でニコ生一挙放送
    • 1年で2回もあるだと……
  • 11/1

  • 11/4 三上カルデアのタマモキャットが絆レベル10になる

  • 11/11 縁さんと三上先生の誕生日
    • めでたい
  • 12月中 きららファンタジア稼働開始
    • らしいです
  • 12/1-12/25 ゆゆ式Advent Calendar2017開始
    • めでたい
    • 今年もよろしくお願いします
  • 12/31 冬コミにて三上先生と弘崎さんのサークル、クラスメイトショック出展
    • 冬コミは久しぶりに私がサークル申し込みしてないので帰省の予定を立てたらこれだよ
    • 行かないのでちゃんと調べてないけど多分3日目なんじゃない?

そして、来年の1月にはなんと、ゆゆ式連載10周年!(平成20年2月号かららしいので合ってると思う)

縮小掲載はあれど、ここまで(多分)休載なしで続いてきた漫画として存在感がすごいことになっていますね。これからもゆゆ式の世界を拡充していってもらいたいです。3年生に進級してもいいのよ……?

2017年のゆゆ式まとめ

f:id:esuji5:20171201010854p:plain

それでは、今年もゆゆ式を、きららファンタジアを、Advent Calendarをよろしくお願いします。

夏コミ及びPyCon Jp 2017に参加してきました

私です。どっこい生きてます。今更ですが、夏コミ及びPyCon Jp 2017に参加してきましたのでご報告エントリです。

夏コミはサークル参加で「Google Cloud Vision APIOCR結果を『日本語』にする技術」という件で新刊を発行しつつ、ゆゆ式合同誌の『ゆゆすき 4期』には「『OVA の絵柄は原作の何巻に似てるのか?』を深層学習で確かめる」というタイトルで4ページ寄稿させていただきました。

また、PythonのカンファレンスであるPyCon Jp 2017ではPythonで実現する4コマ漫画の分析・評論 2017というタイトルで30分のトークセッションをさせていただきました。

これらの資料を作る際に使用したJupyter notebookを公開しつつ簡単に説明をしていきます。

夏コミ:「Google Cloud Vision APIOCR結果を『日本語』にする技術」

4コマ漫画のデータ化をしていくにあたって、セリフの抜き出しをGoogle Cloud Vision APIOCRで行っています。縦書きの日本語に対して良い結果が得られますが、そのままで「日本語」として扱えるかというと微妙なので様々なクリーニングを行います。その手法について説明した本になります。

ただ、結果をそのまま使うと以下の点で問題があります。
- 文字ではない絵の部分が余計な文字として認識される
- 言語を指定しなくても日本語縦書きを認識するが、逆に横書きとして認識される場合もあって煩わしい
- 吹き出し外の手書き文字がの精度が悪い
- 上下で2つの吹き出しに分かれている場合、右上から下に向かって走査されるため、順番がおかしくなる
- 特殊なフォントでは文字列の誤検出になる確率が高い
- 傍線やリーダー点のような記号の区別精度が悪い

下2つはOCRそのものの性能ということで諦めますが、それ以外はプログラムでなんとかなりそうなので頑張ったというものです。方針は以下の様なものです

- ルールベースでとにかく余分なものを排除していく
  - 無効な文字の設定(例:英数記号のみ)
  - 横長の検出部を排除
  - 細すぎる検出部は除外文字(例:1, へ, ー等)以外なら排除
  - 吹き出し外の文字を判定して除外
- 吹き出しの結合
  - 吹き出し判定を行い、真ならそのエリア内の文字列を結合
  - 縦に吹き出しが分かれている場合も頑張る

以下が一般的な画像とOCR結果です

'野々原家\n独特の\n(ヘ\nなんか?\nあつやだ\n恥ずかしい!) e®\nし!\n家の事\n恥ずかしい\nし!\n'

これが上の処理を行うことで

1: 野々原家独特のヘなんか?
2: あつやだ恥ずかしい!家の事恥ずかしい!

のようなまあまあマシな日本語になりました。よかったですね。

コードはこちらのgistを参照してください。

ゆゆすき 4期:「『OVA の絵柄は原作の何巻に似てるのか?』を深層学習で確かめる」

毎年恒例になりつつあるサークルLavenderBlue様主催のゆゆ式合同誌である『ゆゆすき』に参加させていただきました。他の方がイラストや漫画を描かれている中、ドーンと文章が出てくるのはご愛嬌。

自分のサークルでは漫画に絞って4コマ×プログラミングをやっているので、こちらではフリースタイルということでアニメにも手を伸ばしてみました。執筆時期的に私が簡単なCNNを扱えるようになっていたのとOVAの発売があったことからこのネタを思いつきました。 f:id:esuji5:20170919153831p:plain
1巻から7巻まで、このように原作の絵柄が変化していくので、 f:id:esuji5:20170919153838p:plain
アニメのTVシリーズ(1,7,12話)及びOVAの絵柄がどこに近いのかを原作1~7巻までに分類しようという試みです。詳しくは同人誌の中身を参照してください。 コミックZINさんの店舗及び通販で委託されています。

コードはこちらのgistを参照してください。

PyCon Jp 2017: Pythonで実現する4コマ漫画の分析・評論 2017

昨年に引き続き、PyCon Jpでのトークセッションを行いました。Pythonのカンファレンスなのに4コマ漫画の話がたくさんでてくる変わり種トーク部門になります。4コマ漫画の分析・評論をプログラムで行うためには画像処理、機械学習、深層学習、自然言語処理(まだたいして使ってない)、分析等が扱えると良いのですが、Pythonならライブラリが揃っているので一気通貫にできるよ!というロジックでプロポーザル(こんな内容でトークするよという提案)を通していただけました。今年は100個以上のプロポーザルがあった中で、最初の選考である40個に選ばれたので、いい具合に需要を喚起できたのかなと思いました。 内容は、上記の「Google Cloud Vision APIOCR結果を『日本語』にする技術」に加えて、人物検出をdlibでやったけどうまくいったかよくわからんねという話、人物分類をCNNでやってみたけどデータが少なすぎてどうにもならなかった話、それにかこつけてゆゆ式を布教してきたという感じです。

コードはこちらのgistを参照してください。

東北ずん子のアニメデータ(原画+中割14000枚)で何ができるか考えてみた

概要

  • 3万円でアニメの原画+中割14000枚+着色後中割14000枚が6月12日までの支援で入手できる
  • 着色、中割の作画、エフェクトについて自動化できないかという期待があるらしい。まあまあできそうな気はする
  • 圧倒的ボリュームのデータを使っての画像処理やら機械学習やら深層学習やらで色んなことができるね、たーのしー、になりたい

東北ずん子のアニメとは

東北ずん子とは

  • 東北復興を応援する2次元キャラクター。 東北ずん子 公式HP
  • f:id:esuji5:20170609002643p:plain
  • 東北ずん子は東北企業であればイラストを無償で商用利用出来るキャラクターです。 を始めとした様々な利用ガイドラインがある。

ずんだホライずんとは

よくわかるアニメ業界の現状とこのデータセットにかける関係者の思い

が、こちらのTogetterにまとまっていますのでご一読ください。

アニメ技術開発の研究材料に。東北ずん子がデータ28000枚提供 - Togetterまとめ

支援するためのクラウドファンディングのページはこちら

取得したデータでどんなことができそうか

取得できるデータ

  • 原画
  • 中割絵(いわいる動画)の未着色のもの:14000枚
  • 中割絵(いわいる動画)の着色後のもの(仕上げ処理まで?):14000枚
  • 容量については100GBほど、何らかのサーバーからダウンロードする形式になるらしい

やってみたい

  • 着色の自動化:カット毎の1枚目の着色後中割を基点にしてその後の未着色中割に適切な色を塗る
    • 画像の輪郭群を取得して、重心毎に色を記憶しておき、次のフレーム画像に対して近い位置にある重心に同じ色を塗っていくような画像処理の範疇で実装できるのでは
  • 中割の自動化:原画と原画のモーフィングのような手段しかアイデアがない。既存手法も似たようなものではなかろうか。CNNで上手いことやればどうにかできるのかもしれないが、私には知見がない

完成動画から抜き出したデータを含めてどんなことができそうか

完成後の動画を使ったアレコレも許されるのであれば、以下のようなデータを生成して追加で試してみたい。

生成

  • 完成動画(撮影処理後)のコマ毎の画像に切り出す
  • 画像を線画化したものを作成する

やってみたい

  • エフェクトの自動化?:着色後中割とコマ毎の画像の差分でどんな撮影処理が入っているかを見る
    • GohhoChainerのような画風変換処理でエフェクトの感じを抜き出せないだろうか
  • 以下、制作側を助けるものではなく、ファン側が悦に入るための仕組みについて
    • カット数を数える:場面の移り変わりを検知してカット数を数える。作品の予算感が分かる部分である
    • 動画枚数を数える:単純に差分のある枚数だけ数えても、炎のCGエフェクト等で毎フレーム差分がある箇所があったりする。そういうのは除外して作画してある動画枚数を数えたい。カット数と同じく、作品の予算感が分かる。
      • 正解として14000枚という目安があるのはとてもありがたい
    • OP・EDに出てくるスタッフ一覧をOCRでデータ化する:あの原画の人がここでもーみたいなのを色んなアニメ作品を横断して知りたい
      • 作品によってフォーマットが違いすぎるので、公式にどこかに出してもらうようにするほうが100倍くらい建設的ではある

アニメ業界を救えるの?

6月7日のクローズアップ現代でもアニメーターの貧困が取り上げられて、一般的なアニメファンの間でも業界をどうにかしたほうが良いのではという機運が高まっているのを感じます。 ただ、門外漢からすべての状況が見えるほど単純な問題ではなさそうなので、「実際にある具体的な問題を提示してもらって、技術者として解を見つけられそうなら協力する」くらいのスタンスでいるのがいいのかなと思います。今回で言えば「出)原画、中割、着色後中割 求)着色の自動化、中割の自動化、エフェクトの自動化」くらいの対応であるべきかと。

「技術でこんなことができそうだなー」と門外漢で盛り上がるのは勝手だが、「アニメ業界はこんなことをするべきだ!」と押し付けるのはちょっと違うかなと。

まとめ

はやくクラウドファンディングに支援して画像処理やら機械学習やら深層学習やらでこんなことができそうだねたーのしー、になりましょう。 (この記事を書くのが遅すぎてあと少ししか期間がない。6月12日までです) 僕が考えたもの以外でもやってみたいこと・やれそうなことでアイデアを募りたい。

せっかくデータを色んな人が入手しそうなので「東北ずん子のことをやるもくもく会」とかやっていきたい。あわよくばアニメ関係者にも参加してもらって知見・アイデアをいただきたい。

支援するためのクラウドファンディングのページはこちら

  • 「ずんだホライずんのデータをゲットできる特別コース」(30000円)と合わせて、「アニメを絶対見るぞコース」(5000円)を申し込むのが色々ゲット出来る組み合わせっぽいです。

PyQについて私的なおすすめポイントを紹介します

株式会社ビープラウドが「PyQ」というオンラインでプログロミングが学べるサービスを4/12にリリースしました。

私の所属は、勉強会等でお会いした方はご存知かもしれませんが前述のビープラウドであり、私も問題作成とマーケティングで関わっているので、これはリリース記念の記事というやつです。もちろん製品に自信があってユーザーに広めたい思いがあって書かれています。

メインで関わったメンバーが気持ちのこもった記事を書いているのでそちらも参照していただきつつ、

サービス自体の紹介はPyQ公式サイトを見ていただくとして、私からは個人的に良いと思っている部分をできるだけ客観的に伝えられたらと思います。

お品書き

  • 個人的に思うPyQの良いところ
    • 環境構築がいらない
    • Pythonがメイン
    • 色んなレベルの人に学びがある
  • まとめ

技術的な部分などは、いずれ開かれるであろうPyQ Meetupのような場で話されるのがよいかと思うのでここでは割愛します。

個人的に思うPyQの良いところ

環境構築がいらない

Pythonの環境構築自体は知っていれば簡単に済ませられるものですが、インターネットで調べると情報が錯綜していることもあり、必要のないpyenv導入、必要のないvirtualenv導入、OSで使っているPythonが上書きされて死、pyenvとpyvenvで紛らわしいところにpipenvとかも出てきて死、など色んな罠が存在します。 Python自体はインストールできてpipが動くようになっても、Windowsでは色んなライブラリのインストールに失敗し複数バージョンのVisual Studioと関連ライブラリをインストールしては入れ直しという地獄に陥ったり、仕方なくAnacondaを導入して既存の環境が壊れたりと待ち受ける障害が多いです。 Pythonを使う前から嫌いになるという話もたまに聞きますが、無理もないなと感じています。

PyQではWEBブラウザからdockerを通して立ち上がったコンテナ上で問題を解けますので、PCだけでなくiPad等のタブレットでも学習を進められます

4/26 16:45 追記

現在、iPhoneiPad等の非PC環境からだと日本語が入力できないため文字列として名前を入力する場合等、一部の問題が解けない不具合があります。必ずしも学習が進められるわけではないので訂正します。

WEBアプリを作る問題では、WEBフレームワークであるDjangoもコンテナ上で動きhtmlの描画結果も確認できます。むちゃんこ楽ですね。

以下、余談。私は仕事でPython 3.5系を使いつつもプライベートでは最新の3.6系を使いたいので、3.5系は公式バイナリ、3.6系はHomebrewで入れてます。仕事用の環境を作るときは$ python3.5 -m venv work_envのようにして3.5系の環境を用意し、プライベートではipythonやjupyter系含めて3.6系を使用するようにしています。プライベートではWEB系から画像処理、機械学習と使用するライブラリが多いので仮想環境は用意しないことが多いです。

Pythonがメイン

プログラミング言語の選定はその人が何を実現したいかによる部分ですが、私の例だと個人で運営しているサービスとして「Twitterの情報からコミケ等のサークルチェックが簡単・便利にできるサービス」という触れ込みのsubcatalog、ライフワークとして4コマ漫画の評論をプログラムで推進することをやっています。(参考1参考2

そのため、私がプログラムで実現したいことはWEBサービス開発、画像処理、データ分析・可視化、自然言語処理機械学習・深層学習と多岐に渡ります。 これらの分野に優れたライブラリが存在すること、私の使用範囲においてはそこまで高いパフォーマンスが必要ではないということから、基幹言語はPythonですべてまかなえています。

4コマ漫画の分析・評論をプログラミングで始めたい人には是非ともPythonがおすすめです! というのは冗談にしても、だいたいのジャンルでやりたいことはカバーできるので今からプログラムを学び始める人にとっては良い選択肢のように感じられます。 Pythonの情報を探すと英語で読まざるを得ないことは多いですが、問題解決だけなら簡単な単語とコードを読めば済むのでけっこうどうにかなります。 人気の言語ランキングや言語別年収ランキングで上位に来るなんて話もありますが、実際そこまで参考にするようなものではないと思うので、用途に合わせた選択をするのが良いです。

色んなレベルの人に学びがある

Python入門者向けハンズオン等のイベントでメンターをしたり、プライベートの時間でもPython初心者向けのテキストを書いていたりするのですが、双方で期待する受講者の到達レベルの1つに自分のやりたいことがプログラムで実現できるというものがあります。

では、何を教えるべきかというと、とあるプログラミング入門者向けの本に「どのプログラミング言語でも使う8つのキーワード」というものが載っていました。(本の名前は失念しました…)

以上の8つですが、はあはあなるほどというラインナップで、クラス・インスタンス・メソッドはともかくその他の概念を理解してもらえばまずは何か作れるようになりそうという気持ちになれます。

しかしながら、「初心者」のレベルが違うために「どう教えるか」のところで分岐ができてしまいます。大きなところとしては、プログラミングそのものが初めての人と他言語経験がある人とは説明すべき内容が違ってくるというものです。

書籍のような静的コンテンツでは無理なく説明できる範囲に限界がありますし、対面型で人が人に教えるのは講師・メンター側の力量が問われ、良いものを提供しようと思ったらコストが大きくなります。

PyQのシステムであればレベルに合わせて問題を解き進められます! というただの宣伝なのですが、これを対面型の研修に導入すると、講師は最低限のフォローをするだけで受講者は独立でどんどん進めるので非常に楽になります。チーム機能を使用すればメンバーの学習状況もまとめて見られるので、色んな人が幸せになります。

中級者向けにもunittestの書き方、argparseの使い方、docstringの書き方、loggingのしかた等の1つ1つのまともな使い方を調べるだけで時間がかかるコンテンツがまとめて学べるのはいい部分かと思います。おそらく、ここまで細かい内容で問題を作っている他のオンライン学習サービスさんはないかと思っていますが、もしいらっしゃったらこっそり教えてください。

どんな問題があるのかはクエスト一覧をご覧ください。

まとめ

PyQをよろしくお願いします。