山本ゆうごブログスマートフォン用の表示で見る山本ゆうごブログ山本ゆうごの仕事メモ2018-09-04目的別プログラミング言語プログラマー初心者が疑問に思う「どのプログラミング言語をやればいいの?」という質問。プログラミング言語の文法などはそんなに違いがないのでどうやって選んだらいいかが分かりづらい。言語仕様意外で決める要素があってそれに引っ張られるころが多いということがあまり知られてない。動作環境で決まるExcelを自動化したければ、Excel上で動くVBAブラウザ上で動かしたれば、JavaScriptメーンフレーム上で動かしたければ、COBOLLambdaやFirebaseのようなサーバーレスアーキテクチャなら、JavaScript(Node.js)Unityで開発したければC#Windows上の.netフレームワーク上で動かしたければ、C#iOS上で開発したければ、Objective-CかSwiftApacheモジュールとして動いてほしければ、PHP大規模なマシンの性能をフルに使いたかったらJava動作する環境で決まるということが多い。行列計算を簡易にしたければ、PythonRailsなどのWeb+DB系のライブラリを使いたければ、Ruby標準モジュールだけでWeb開発をしたければPHPスマホ向けの3Dエンジンのライブラリをつかいたければ、Unity(C#)利用できるライブラリ、フレームワーク(雛形みたいなもの)というのは、言語仕様そのものではなく、そのプログラミング言語をより便利にするために、プログラマー達が「育てた」とも言える。プログラミング言語そのものは、用途を絞ることはあまりないが、ライブラリやフレームワークは特定の用途にフォーカスした形で育成される。PythonもRubyも同じことはできるだろうが、機械学習用のライブラリの充実と、Webサイト向けのライブラリの差は歴然としている。当然のことながら、RailsというRubyで作られたフレームワークも所詮はひな形なので、別のプログラミング言語でもできる。PHPはもともと言語仕様からWeb開発向きではあったが、Railsほどの雛形にはなってないので、PHPにもフレームワークで開発すれば「Apacheプロセスの中で動くから軽くて開発生産性も高い」という美味しいとこ取りをするケースもある。swiftでも頑張れば、スマホ向けのアプリは作れるが、大半のスマホゲームメーカーはUnityを使って開発をしている。ゲーム向けのライブラリが充実しているからである。反対に生活ツールではUnityはあまり使われない。16:10目的別プログラミング言語Tweetもっと読むコメントを書く2018-08-26Progateは素晴らしい。他にもやることがある。こちらのエントリ読んで思うところを書いています。Medium自社でもエンジニア採用をしているのですが、Progateやプログラミングスクールを経て、プログラマーになろうとしている人は多くいます。プログラマーになろうとしている人の背中を押してあげるという点では、これらの初心者向けのサービスは本当に素晴らしい。ところがいくつか困ったケースができはじめています。Progeteのみを永遠と続けていて、エディタを触ったことがない自社の採用は「未経験OK」とはしているのですが、プログラミング勉強中の人にはFizzBuzz(のような超シンプルなソース)はその場で書いてもらっています。メールで出題をして、結果をメールで返信してもらいます。Progeteでしか書いてないので、エディタは持ってないのですがいいですか?Progateの問題にないコードは書いたことがないので、実行せずに書いたまま出しますあとは、Progateの中でしか実行してないので、ターミナルそのものを触ってないという人もいます。カレントディレクトリの概念がないとか。いい方はありますが、「黒い画面」で「ファイルをいっぱい繋げていく」というのが、プログラミングの基本です。プログラミング「言語」に引っ張られすぎて、まるで語学習得のようになってないでしょうか。Progateは料理教室みたいなもの料理教室はこの世に必要なものですが、料理教室で「しか」料理をしてないというのはよくない。料理教室だと以下の訓練ができません。料理本をみて、そこから食材を買いに行くというだけでも十分カバーできることはあります。そんなわけでProgeteの外で頑張らなくちゃいけないことProgateは初心者にプログラミング言語を網羅的に教えてくれるのだけれど、それだけだと足りない。タッチタイピングの練習をしよう(まさかのここから)今はスマホネイティブの人も多いので、PCで高速チャットをする機会がない。タッチタイピングができないまま、Progateをやりつづけていたり、合宿系のプログラミングスクールに行ったりする。タイピングスピードが遅いというしんどさだけではなく、画面をみながらタイピングができないということは、Googleの第二キーワードもエディタのコードアシスト機能も使えないということ。キーボード見ちゃダメ。TwitterもPCでやりましょう。Twitterはキーボードのみでほとんどの操作ができます。新規のファイルからソースを書こうファイル名をつけるところからスタート。Proagateみたいに予めファイルが用意されていて、そこを修正するだけなので、ほとんどエラーがでない。実際にはタイピングしているとたくさんのスペルミスがある。requireで指定しているファイル名と、実際のファイル名が違うことなんてベテランでもしょっちゅうある。私はよく「俺たちはファイル製造マシーンだ」といい切ってる。新しいファイルを適切なディレクトリに作るという訓練をたくさんしよう。読む能力を身に着けようどのプログラミング言語も、本屋にいけばテキストがある。テキストだからそれそのものは面白くもなんともない。いずれは、テキストだけで勉強しなくちゃいけなくなるときは来る。プログラミングの楽しさって、「できあがったプログラムが便利だった」というところなので、正直勉強は苦しくても別にいい。殆どのドキュメントには公式ドキュメントがある。公式ドキュメントは最初はとっつきにくいだろうけど、読めるようになろう。読解力というのは人それぞれかなりの差がある。「読むと頭に入らないが質問のキャッチボールでは頭に入る」という人もいる。プログラミングというのは、どこまで行っても読み書きの世界。読み書きの得意な先輩方が作られた業界だから、覆しようがない。適切に質問をする能力が身についているのなら、人間相手ではなく、Googleに聞けばほとんどの答えが載っている。ググり方を身に着けようタッチタイピングができるようになったら、Googleで検索して適切なサイトか適切な情報を引っ張り出す訓練です。Progateは中のテキストが充実しているので、困ったときにスライドにジャンプできます。実際のプログラミングではそのスライドを探し出すところからやらなくてはなりません。適切なワードでググりましょう。ググったら上から順に「これは欲しい情報なのかどうか?」「まともな人が書いてそうか?」などの重み付けをしながら参照します。公式ドキュメントやstackoverflow(英語版)の評価の高い解答などは大事ですね。エラーメッセージの「ちょうどいい部分」をググるというのも大事です。環境構築が大変なら環境構築が楽な言語から手を付けようWebプログラミングといえば、Railsという相場観があるかもしれないが、残念ながらWindowsだとrbenvの段階で辛い。Railsまでいかなくても、単体のRubyなら十分手元で勉強はできる。Webで公開して他人に触ってもらいながら学習を進めるのも効果的。なると、フォルダコピーだけで本番反映が可能なPHPの方が学習からフィードバックまでのサイクルは早い。ロリポップのようなレンタルサーバーでもすぐ動かせる。仕事でエクセルをよく使うのなら、エクセルVBAから始めたって構わない。繰り返しや分岐などは全く変わらない。VBAのエディタはIDEとしても完成度が高い。本当にプログラミング初心者ならVBAから初めて、Web系言語にシフトしても全然遠回りじゃない。手元に自分のサンプルソースをたくさん作ろうどんなリファレンスよりも、自分で書いたコードが一番あとで参照しやすい。できるだけ自分の手元においておこう。Progateを一通りやったら、全く同じ課題を、自分の手元のPC上で書いて、手元のPC上で実行するというのもいい。絶対別の苦労がでてくる。その苦労は仕事でエンジニアになった時には乗り越えなくちゃいけない苦労。手元でたくさんのサンプルファイルを置くのは、「うまいこと動いているバージョン」「動かないバージョン」と複数バージョンを置いて比較をしながら学んでいくことができます。World」と出力するだけのプログラムですが、「いろんな文字列を日付としてパースするサンプル」のようなサンプルソースはベテランになってからも手元でちょこっと作ります。小さくても「手元で動いたプログラム」がリファレンスとしては最高です。自分ひとりが便利なものから始めようプログラミング初心者が作りたいものというと、Railsで作った何かしらのコミュニティサイトを上げる人が多いです。ところがコミュニティサイトはプログラミングだけではなく、Webサーバーのセットアップや管理から、掲示板が荒れした時(もしくは誰も来ない時)のコミュニティ運営まで幅広いスキルが必要になる。PDCAサイクルが一周する時間が長すぎます。手始めにおすすめなのは、自分がよく見るサイトのスクレイピングツール。定期的にWebサイトを巡回して、欲しい情報があれば、そのサマリーを自分あてにメールで送ったりするツール。このレベルなら、Rubyでクラスなんて作らなくてもできちゃう。継承だオーバーライドだインスタンス変数だとか知らなくても、誰かの生活を便利にすることはできる。自分でやり始めて「あれ、修正すると既存機能が壊れやすいなぁ」とか「部分的なテストがしにくいなぁ」みたいな課題感を持ってから、クラスを覚えたって構わない。プログラミングによって人が幸せになるのだというところは実感したほうがいい。その点では、エクセルVBAは職場の人が即幸せになる可能性があるので、入り口としては馬鹿にできない。環境構築もいずれはチャレンジしよう「環境構築だけがクリアできない課題」という言い訳はあるものの、「エラーメッセージが出る→ググる→ちょっと直してみる→前回と比較してみる」というステップはエンジニアの仕事そのものです。「適切な情報源から適切な文書を取り出して読む訓練」ができれば、環境構築もできます。19:05Progateは素晴らしい。他にもやることがある。Tweetもっと読むコメントを書く2018-02-18オススメのプログラミング学習方法こちらの記事に感化されて書いてみる。www.vivi-life.com「個人差」がかならずあるだろうとは思っているし、「成長過程」に関しては「自分」をサンプルとしている以上は、どうしてもサンプルが少なすぎる。私個人の話と、実際にたくさんのプログラマー向けの研修をしていたときの肌感覚を元に書きたい。一つ一つ解きほぐしたい。苦痛な時点でしんどくないか私が一番最初に作ったプログラムは「アクティブなウィンドウに下矢印キーを一秒おきにSendKeyするツール」だった。理由は自分が欲しかったから。ご飯食べながら長い文章を読みたい。コードそのものは10行程度でいいが、勉強にはそこそこの時間がかかった。達成感ありまくりだった。自分でも長いこと使っていた。プログラミングとは料理のようなものなので、自分が食べて美味しいかどうかで上達したかどうかが分かる。試食なしにただひたすらレシピを丸暗記するだけなら、料理はとても苦痛だろう。その点では、会員制Webサイトというのは、たくさんの人に使ってもらうもの。料理で言えば「レストランを経営してみましょう」に近い。ものを作るのが入り口としては正しい。その人達も一人でやってること多い先輩も結構独学でやりきっている。聞けば分かるかもしれないが、先輩方は聞かずに答えにたどり着いていることが多い。聞けば早いが、聞ける環境にないからといって、あまりハンデだと思わないでいい。うちの研修でも、基本は自分でググる力をつけることを主眼に置いている。「調べ方が分からない」のであれば、調べた方を聞いた方がいいとは思う。なくても構わない逆に聞かないと進めないとなると、なぜ一人で進めれないかを考えたほうが良い。イマドキは掲示板で聞けるし、ちょっと検索してみると似た質問を投げている人もいる。質問を文章にする能力があれば、検索はできるはず。検索ができないとなると適切な質問もできないと思う。月間20万円も買わなくても良い月間20万というと、2000円の本が100冊なので、読めないのではないか。勉強の順番をつけて順に買っていけばいいと思う。私が初心者の頃に買ったのは、CとPerlの言語の教科書あとSQLの教科書。それ以降に覚えた言語はWebのリファレンスのみで分かるようになった。これは絶対にそうアウトプットはひたすら繰り返す方がいい。アウトプットの単位が「会員サービス」だと大ぶりがすぎる。「ちょっと便利なコマンドラインツール」くらいを連発するのがいい。目的がないと読めない漠然と読んでも仕方ない。コードリーディングのキモは、「自分がやりたいことのパクリ元を探す」ということだと思う。やりたいことが強くないと読む気も起きないのではないか。絶対にそう今日一日で完成するものを作るというのが理想。下ごしらえはしていいけど、今夜食べるまかない飯も必要。Rubyなの?Railsなの?プログラミング初心者がパニクってるのが、自分がやってるのがRubyなのかRailsなのかが混乱しているというところ。セットでやろうとするからしんどい。学生さんでサクッとWebサービスを公開しているのをみると、PHPで無料のレンタルサーバーで公開している。覚えることが圧倒的に少ないので公開は楽。自分でHTMLを書かなくちゃいけないけど、HTTPとHTMLの理解という点では理解しやすい。何よりも安いサーバで公開できる。ことWebプログラミングという観点では、PHPから入る方が理解が早いと思う。逆にRailsのみで入った人で、scaffoldだけでtodoリストを作って「何が起きているかが分からない」という初心者もいる。FizzBuzzが書けないレベルでWebサイトが作れてしまっているので、「逆にどこから勉強していいのか」という話になる。PHPでフレームワーク無しで書いてみることで、フレームワークの中でやってくれていることが肌でわかると思う。本当のプログラミング初心者には、以下の順に覚えてもらっている。rubyのコマンドラインのプログラムを大量につくるSQLを単体で覚えるフォームからDBにエントリーする仕組みをSinatraで作る(自力で全部書く)業務で会員向けのサイトを実装するときにはRailsを使うけど、裏で何をしているかは自分で理解しないといけないのでトレーニングの段階では浅めのフレームワークで勉強する方がいい。一つか2つプログラミング言語の本を前から順に習えば、あとはネットの情報でなんとかなるのではないかと思っている。ネットの情報の中でも単なるトラブルシューティングではなく、ネット上の公式ドキュメントにあたるということ。rubyならrubyリファレンスマニュアル。phpならphp.net。公式ドキュメントって、イラストがないのでそっけないのだけれど、書いてることは正しい。公式ドキュメントが読みづらいなら、公式ドキュメントを読む力を身に着けた方がいい。演算子で公式ドキュメントの中だけを検索できるなど。ループ」というカタカナで検索している初心者がいるが、英語の方がいい。ドキュメントをみた方が手っ取り早い。英語だけどそのままカタカナとして読めばいい。本を買う事自体はダメではないが、manから逃げる姿勢はほんと良くない。「コンピューターはグローバルで便利なもの」なんだから、プログラマーが勉強する際にもコンピューターをフルに使いこなせた方がいい。あとエラーメッセージも初心者が軽視しているポイント。画面に出た文字をちゃんと読むということは超大事。その通りここに、結構大事なことを書いている。大学の実験結果を解析する時、Excelでちょこっとマクロを組んだり、データをRubyに流し込んで解析をするみたいなこともできるようになります。逆に、ここからスタートするのが健全なのではないかと思う。Excelをたくさん使ってる人のためにExcelVBAを書いてあげる。業務効率があがることでプログラムが発揮した価値を確認する。個人向けWebサービスを作るだけが仕事じゃない。最後に「Webサイト以外のプログラムの用途」が出てきたが、プログラムってのは人間の見えないところで働くケースも多い。Webサイトの形で動いているプログラムはほんの一部。プログラムを学ぶこととWebサイトを作ることはイコールではないし、それ以前にプログラムが社会に与える影響はWebサイトでのみ発揮されるものでもない。ラズベリーパイで自分の家の家電を自動化するというのでも十分プログラミングだし、価値も発揮されやすい。リリースから10年以上も経つが、そもそもツールだけでは解決しないことが多々ある。元々はメール文面で、日程調整をしていたのをビジュアル化したいというニーズから作ったものなので全ての課題を解決してくれるわけではない。調整さん以前に時間調整ってどうするのかということを記したい。二週間前後くらいあとの日程で直近だと急すぎる。先すぎるともっとだいじな予定が入るかも知れない。二週間前後くらいがちょうどいい。自分の予定はまずはブロックたまに見かけるのが、自分があとで日程候補に△とか書いちゃうケース。日程候補は自分が行ける日だけにしましょう。会の重要性を伝える行っても行かなくてもいいのか、必ず来て欲しいのかって重みは大事。予定が入っていてもそれを押しのけるべきかどうかも受けての判断ポイントになる。調整さんで日程候補を出す前にキーマンの予定をブロックありがちなミスが、キーマンが調整さんに最後に予定をいれて、全滅というケース。偉い人の予定を先に確保する。その確保された選択肢を、調整さんに候補として登録する。招待する際に「○○さんのブロック済みの候補です」とアナウンスしておけば、下々のものは「ならそっちに寄せるか」と判断しやすい。日程候補を多くしすぎない二週間くらいのレンジで飲み会日程候補がやってきたとしても、全てに◯とは書きづらい。「現時点での空き」を伝えるのではなく「日程調整が終わるまでのブロック」を差し出すことになる。二週間全部空いていたとしても、ユーザは「ブロックを差し出す数件」のみ◯にしちゃうので、結果的に日程が合わない。選択肢は「できるだけブロックして欲しい数件(常識的には最大5件程度)」を提示するのがいい。入力をお願いする全員が入力されない場合もある。優先度が低い人は「ではこの日程に決まったのでできれば参加してください」と伝えるし、優先度が高い人(そして往々にして忙しい人)に対しては、直接会ってでも入力を促す。会ってその場で彼のスケジュールをブロックしながら候補を埋める。会えない人には電話をする。一対一のコミュニケーションでお願いする。まとめ:時間調整は結構な意思決定を促している調整さんというお手軽ツールを作っていながらもやっぱり幹事は気を使うべきだとは思ってる。偉い人も偉くない人も時間は平等に24時間。その時間を何らかの予定のブロックとして「差し出す」のは結構な投資/消費の意思決定をしている。その二時間で仕事をする以上のものが得られるのか、その二時間で一本の映画を見る以上の楽しみがあるのか。「どうか私に貴方の二時間を下さい。後悔はさせません」という気合でコミュニケーションをとるべき。12:26調整さんの正しい使いかたTweetもっと読むコメントを書く2017-11-05RDBにバイナリファイルを置くメリットRDBにはBLOB型があって、そこにはバイナリファイルを置くこともできる。有り難みがないかもしれないだけれど、個人的には結構よく使ってる。以下、いいところだけをピックアップする複数マシンから寄ってたかって使いたいとき処理マシンのローカルにファイルを置くと共有できない。NFSみたいなものを使えばいいのだけれどそういうの作るのが面倒。開発環境と本番環境で揃えるのも面倒だ。すごい時間がかかっちゃう。黙ったままなので進捗も分からない。そもそもローカルストレージでファイルが多いと、lsだけでもビタット止まっちゃう。みたいな適当なフィールドを作っておいて、この画像サムネイル作ったっけ?みたいなステータス管理がしやすい。キューもかねたストレージとして扱える。ymdh;こんな感じで、一時間おきのファイルの更新ペーストとかが分かる。メモリに載せやすいMySQLにはクエリキャッシュの機能がある。イマドキはいっぱい詰めるので、極端なはなしDBの中身が全部乗っけることもできる。クエリキャッシュは元データが変わるとキャッシュも破棄されるので、プログラマが意識する必要がない。どれくらいキャッシュにヒットしたかもSQL一発で分かる。ディスクのIOよりも、ネットワーク越しのメモリアクセスの方が管理しやすいってこともある。SequelProならバイナリファイルもそのままみれるSequelProというMySQLクライアントがめちゃくちゃよくできていて、バイナリファイルはプレビューができちゃう。jpgだけじゃなくてPDFまでプレビューしてくれる。高速に検索できるファイルサーバとして使える。そもそも、S3でいいのでは?それはそもそう。容量あたりの単価も安い。ステータス管理とかしたくなると、S3のメタデータだけだとやや不便。そこは別途キューとかRDBでステータス管理したくなる。「今日更新されたファイル一覧が欲しい」って検索条件がぱっと思いつかない。10:07RDBにバイナリファイルを置くメリットTweetもっと読むコメントを書く2017-10-14僕はいつもこんな感じでざくっとデータをみているCSVがドーンとあったとする。その際にどうやってデータを見るかってのは、なんとなくの手順がある。その手順を示しておく。みるまずは行数をみる。10万行とか超えちゃうとExcelでは重すぎてみれない。コマンドでみるそして中を確認する。lessコマンドでみれるのはutf8縛りなので、SJISの場合は別のエディタなどで開く。中身が何かを確認する。先頭にBOMがついているかどうかや、LF改行なのか、CRLF改行なのかくらいはここで分かる。大きなファイルも早く開けるのがlessコマンド。先頭行と最終行はチェックする。sjis.svで、SJISに変換する。UNICODEのままでExcelで開きたかったら、以下のコマンドでBOMをつける。BOMつきファイルExcelで開く数値の前ゼロが取れちゃうから、普通はCSVをダブルクリックしちゃだめなんだけど、参照専用と割り切って、ダブルクリックして開いちゃう。フィルタをかけるフィルタをかけて、▼をクリックする、そうするとどういうデータがあるかが分かる。空白の存在などもここで分かる。ゴミデータが入ってないかが分かる。ピボットテーブルを作るピボットテーブルを作ることで、データの分布が分かる。日付のフィールドがあれば、ピボットテーブルを日付でグループ化して、年単位や月単位の分布をみて、傾向をつかむ。mysqlの場合CSV単体が見づらい場合はmysqlなどのRDBでみる。並びかえるデータの異常値がないかどうかは、ひたすら並びかえて確認する。ツールであれば、sqlを書くこと無く並び替えが用意なので、そこでみる。ymdh;こんな感じで、時間単位の更新時間を並べて見て、どういう処理ペースで動いているかを確認したりする。そのままメールに出力結果を貼り付けたい時などは、FORMAT関数でカンマ区切りにしたり、LPAD関数で左空白詰めをして右揃えにしたりする。BiqQueryの場合MySQLだけだと、数百万件を超えるデータは扱いにくい。並び替えやグループ化をするデータはインデックスを貼ればいいのだが、インデックスをはるにもマシンパワーが余分にとられる。そこまでくれば、インデックスに気を使わなくてもいい、BigQueryをつかうのがいい。CSVを参照可能にするにもそこそこの手間がかかる。CSVはUTF8UTF8のダブルクォート区切り。フィールド内ダブルクォートはダブルクォート二重でエスケープ。CSVをgz形式にするBiqQueryに入れるレベルのCSVファイルは、GBを超えるくらいなので、アップロードに時間をかけなくてもいいように、giz圧縮をする。gs://bucket/data.csv.gzこの段階で、Googleの認証が必要。gsutilもインストールしてる前提。この際に、GoogleCloudStrageのプロジェクトIDが必要。GoogleCloudStrageのプロジェクトIDとBigQueryのプロジェクトIDは同じ方が権限的に楽。\id:integer,\name:string各カラム名とその型を、スキーマとして引数にしていしている。シェルとしては一行だけど、見づらいのでバックスラッシュで改行を入れている。コマンドを最初につかうときにもGoogleの認証は聞かれる。AWSみたいなアプリケーションキーを環境変数に入れておくというような手法でない。accountを切り替えるのは面倒。BiqQueryで集計して、レポートにするひたすらグループ化のSQLをたたく。集計の結果は、SpreaSheetに出力できるので、ポンポン出力する。適当なファイル名で出力されるので、出力されるたびに、スプレッドシートのファイル名を変えたほうがいい。スプレッドシートに出せば、グラフにポンポン変換できるので、グラフ化して、スライドの資料にポンポン貼っていけばいい。スプレッドシートには、SPARKLINEという関数があって、セルの中にちょっとしたグラフをかける。Excelでいうデータバーみたいなことができるので手軽。15:54僕はいつもこんな感じでざくっとデータをみているTweetもっと読むコメントを書く2017-10-03ポンチ絵のナゾポンチ絵は大事で嫌いポンチ絵は嫌われている。いうのは、ドキュメント上に書かれた図形のことで、ドキュメントをいくら頑張って描いても、その間違いって気づき用がないということ。エンジニアの間では、ソースコードの方が重視される。それがシステムを表しているし、間違っていたらエラーがでる。ソースコードを見せてもそれが何なのかはわからないし。プログラムの外のこと(ユーザーとか銀行とかとの関係)は分からない。そのシステムの社会的な位置付けを示したいときには、どうしてもポンチ絵が必要になる。大事なのは「システムの外」ということ。UMLUMLという規格はあるのだが、ポンチ絵にはあまり役に立たない。基本は「自社のシステム」を作るためのものであって、他者との座組を示すものではないから。ポンチ絵の定義ラフイメージという位置付け。ハードウェア業界の人達は、製品の完成イメージ図や設計図のラフイメージをポンチ絵と言うし、企業ごとの提携を示すにもポンチ絵という呼び方をする。ここでは、相関図をポンチ絵を呼ぶことにする。オリラジ中田のブログ。https://obs.line-scdn.net/0hWjYbkdvnCEVkGybdC6R3Ei5GDiodeBJNDmMffxFNAmsRdx9FDGEXZgNCDi8XdB9JCDgXPzVoADECLxRDXA9AUUJSLAlKQj1bDgpHKidHCCUKdAZHRH1CK0MbVHZIKkYTUC9PI0QZE3ROKRwaUChOめちゃくちゃポンチ絵を使ってる。ポンチ絵のわかりづらさ学問がない文学でもない。