はてなキーワード: てStとは
絵描きを救いたい気持ちはあったことにはあったが、何故救いたかったのかを言語化すると絵描きへの特大悪口になってしまうことをお許しください。そして救う気が失せました。
***
作品の無断学習、非商用限定の画像群を学習したモデルを商用利用、フェアユース規定の無視疑惑……事実、画像生成AIは現在多くの問題を抱えています。
しかし。現行の日本の法律では、(利用範囲は定められていますが)機械学習における著作物の使用に著作者の許可はいらないことになっています。フェアユース規定よりさらに強力で、機械学習に有利すぎる条文です。
このままでは、絵描き的には大問題なわけです。自分が心血注いで作ったものが勝手に持っていかれるなんて、不快なことはなただしい。創作のモチベーションも奪われ、やがては産業自体の危機になると警鐘を鳴らす人もいます。
また、モラルなき人々にまで高い技術が与えられることで様々な被害がもたらされていることも報告されています。
世界的には、AIは規制の流れに傾きつつあります。Stable Diffusionを開発したStability AI社に対して、フェアユースの観点に対する集団訴訟が起きています。また、同時にGetty Imagesも訴訟に踏み切っています。
かのchatGPTも、EU単位で禁止になるかもと噂されています。
さらには、AIの推進に対してかの中国ですら及び腰だというのです。
署名出して法律の改善を訴えたり、訴訟起こして判例を作ったりすればAIに対してエラく歓迎ムードの日本すら変えられるかもしれない!
勝ったな!日本の絵描きは再び安寧と静寂を取り戻し、これまで通り絵が伸び伸びと描けるようになることでしょう!
しかし、そうはなりそうにない。
はっきり言います。今、日本の絵描きたちは自滅の道を辿っています。この勝ち確の流れで。
そうです。今こそ日本にAIの危険性を強く訴えるチャンスなのです。ここで上手く立ち回れば確実に勝機があります。誰から見ても自明でしょう。
でも自滅しようとしてます。
絵描きの大半は、絵を描くことすら取り柄かどうか怪しい無能で馬鹿でメンヘラの社会不適合者だからです。
Twitterでは今日も画像生成AIに対する愚痴や問題点が飛び交います。絵を描くことを忘れて画像生成AIの問題点を発信せんとする人が何人も出てきました。
多くの方は「いやそんなに文句あるならもっと行動しろよ…」と思ってるかもしれません。実際その通りです。Twitterでたらたら文句タレてる暇あるなら団結してクラファン立ち上げて訴訟費用賄えばいいのです。
動かすべきは画像生成AIなんてものを開発した悪の親玉組織ではなく、国という大きく頼れる組織。そうは思いませんか?
でも、しません。
何故なら、繰り返しますが、彼ら彼女らは無能で馬鹿でメンヘラの社会不適合者だからです。
彼ら彼女らは、明らかに知識不足としか言いようのない発言を平気でします。あの感じですと、我らが著作権法の条文すら多分読んだことがないし、画像生成AIの仕組みもロクに理解していません。
しかし、そんなエアプで語ることがまかり通ってしまっています。
何故なら、何度でも繰り返しますが、彼ら彼女らは無能で馬鹿でメンヘラの社会不適合者だからです。無知の知なんて期待するだけ無駄です。
もし、画像生成AIがオプトインを大前提としたものに生まれ変わる場合、アーティストの懸命な訴えが受け入れられたのかもしれません。
何故自分たちの作品を無断で使ってほしくないのか。自分たちにとって作品とは何か。懇切丁寧に、相手も納得できる形で説明したからこそ、その未来ではオプトインが採用されているのでしょう。
何故なら、まことに悲しいことに、彼ら彼女らは無能で馬鹿でメンヘラの社会不適合者だからです。
無能で馬鹿でメンヘラの社会不適合者に、詳しい言語化と冷静な判断が期待できるでしょうか?出来ないから『お気持ち』と揶揄されるような具体性に欠ける感情論しか発信できないのです。このままでは誰にも絵描きの感情や絵描き内のルール、絵描きの理論が理解されないまま終わってしまいます。
しかし。必ずしも絵描き自身が戦う必要はありません。人間社会はよく出来ており、役割の分担が基本なのです。大半の絵描きが苦しむ中、手を差し伸べてくれる人がいるかもしれません。それは親切なファンかもしれないし、法の専門家、法律家かもしれません。
繰り返しますが、大半の絵描きは無能で馬鹿でメンヘラの社会不適合者です。
そのくせプライドだけは一丁前にあって、少しでも正論を混ぜるとすぐにヒスる。声だけデカい割に利用規約や著作権法すら読めないので、デマに近いツイートをすぐ鵜呑みにして騒ぎ立てます。しかも自分から行動しません。Twitterで騒ぐだけ騒いでおいて。結局、国内の署名活動すら話を聞きません(海外の署名活動も全然集まってないですが)。
『真の弱者は助けたくなるような姿をしていない』という話を嫌でも思い出します。
インターネットリテラシーもなければ社会の変化に適応することもできず、ヒスって暴れて無能さをただひたすら曝け出す。かといって何か行動を起こすでもなく、延々と愚痴愚痴と文句を垂れるだけの存在。そう認識されてしまったら、確実に無視されブロックされNGリストに放り込まれ、インターネットの片隅に追いやられることでしょう。正直絵を描いててもキツいです。
誰がそんな奴らを助けてくれるというのでしょうか。
それでも絵を描ける存在を人は助けてくれると思ってるのなら、流石に絵の力を過信しすぎでしょう。作者の本性は、どんなに素晴らしい絵であっても平気で貫通します。作者はゴミカスだけど絵は本当に最高だから応援します!なんて言ってくれる人はかなり少数派ですよ。
大半の絵描きのことを散々に言ってきましたが、これは巨大な問題を孕んでいます。
何故なら、問題を言語化できる人間がいない集団は、その声を民主主義に届けることがあまりにも難しいからです。
日本はAI技術の発展を重視し、AI大国として国際競走にもう一度乗り上げることを目指しているとされます。その過程で、もし訴訟に敗北してStable Diffusionがなくなっても、国際的な規制でがんじがらめになりchat GPTがなくなっても、国産の新たなAIを生み出していくことも考えられます。著作権法30条の4が味方となって、あらゆるデータ資産を学習に使っていくことが考えられます。
日本はとにかくやる気です。
しかし、その過程で日本がアニメ・マンガ・ゲーム・イラスト……そういったサブカルチャー産業の源泉である創作者の集団が無碍に扱われ、将来的に縮小するとすれば問題になるでしょう。
しかし、彼ら彼女らは声のあげ方すら知らない。絵を描く以外能はなく、絵を描く以外の知識もないのですから。芸術をよすがに今日も生き延びているだけのコミュ障社会不適合者は、真の弱者層に位置しているのです。
それでもって、絵を描くことに執着する人間なんてのは数が少ないのですから、より国政や企業に対するアプローチが難しい……
これもう詰みでは?
もちろんわかっています。
ちゃんと知識を持ち、その上で問題点を発信している絵描きはいらっしゃいます。
自分なりに考え、画像生成AIとの付き合い方、画像生成AIの在り方を考えている方もいらっしゃいます。
しかし、それ以上に大多数の無能が足を引っ張りまくってます。頼むから、理論ガバガバの文章に踊らされないでくれ。お願いだから、話にならない無知を晒さないでくれ。本当にお願いします、簡単に不安を煽られないでくれ。何が正しいのか、何が間違ってるのか、分からないかもしれないけど、だったらジッとしていてくれ。落ち着いてまずは調べろ。Googleでいくらでも出てくるんだ。理解できなかったら他人に説明してもらうんだ。chatGPTはいいぞ。(それらのAIの恩恵を受けるなら、画像生成AIの恩恵も検討しなければならないけど)
自分たち側に無能で馬鹿でメンヘラの社会不適合者が圧倒的に多いことを事実として受け止め、できる中でより良いAIとの共存を模索する。それが、画像生成AI規制派に必要なことではないでしょうか。
推進派と規制派が持ちつ持たれつ議論を重ねることで科学の良い発展がもたらされると信じていますから、規制派にはマジで頑張って欲しいのです。
自分なりの救い方は検討していました。自分自身が絵描きの理屈やルールや感情の代弁者として立ち上がり、推進派との架け橋になる……ありきたりかつ理想的ですが、価値のある行いではあるかもしれません。
例えば、オプトイン制度に際してのコメントは以下のものが考えられます。
「そもそも、芸術行為とはどこまでも自分本位の行いであるべき。自分本位に生み出した作品は、自分のためだけに存在しているべきもので、そこで技術の発展だとか、他人の見栄だとか、そういうことに使われると芸術行為の芯に傷がついてしまうのでは。それが意欲の低下に繋がるのかもしれません」
あるいは、クラファンを立ち上げ、司法に是非を問うてみるのもありかもしれません。
でも、こんな奴ら助けるくらいだったら、その時間使って画像生成AI技術に手を出して学んだ方が遥かに有意義なんじゃないか?ぶっちゃけ自滅する泥舟に乗りたいか?そもそも救いたいという感情自体が傲慢なわけで。
というわけで、救いたいと思い言語化していたはずが、し終わる頃にはマジでやる気が失せました。
絵描きがただひたすら自滅を重ねていく様を楽しみたい気持ちすらあります。
もう知らねー
見てわかるとおりSHOWBYROCK!!はサンリオのアニメIP、SB69とも略される
サンリオ然としたケモ寄りデフォルメキャラが本来の姿と思われるがアニメではおそらく俺ら視点補正によって人型のふつーの美少女・美男子アニメキャラ(耳と尻尾付き)として描かれる
まあライブシーンとかではケモ姿のデフォルメ3Dになることもあるが基本的にはバンドもので、曲も結構いいのが揃ってた
ガールズバンドが主人公だが男性バンドも同じくらい描かれて女パートは青春エモい系成長物語で男パートはコメディ全振り、全体的にふざけた感じのサンリオ茶番劇だ
初代が2015年に放送されて翌年に3分アニメ版のしょ~と!!に続き2期にあたる!!#が放送された、2017年~は主に女性ファン向けの舞台化をやってたみたいだな
この初代SB69シリーズに出てくる主役ガールズバンド・プラズマジカのメインVoシアンちゃんが2017年にIP名を冠して9位に滑り込んだんだろう
2015年は登場バンド別で投票されていてその中の男性バンド筆頭シンガンクリムゾンズのメインVoクロウ(CV谷山紀章)がバンド名を冠して1位と35票差の僅差で2位受賞してたようだな、初日と中間発表では1位だったしマジ危なかったな
アニメに先んじてゲームがあり、ラブライブのスクフェスと同じような感じで微妙な出来の(当初は1ラインだったが3ラインになった)音ゲーが2013年から展開してて、ファン自体は男女ともそこそこあった
ゲームではもっと多くの実在インディーズバンドがケモキャラに扮して登場(楽曲提供)してたのが他ゲーとの違いだな
で2020年にメインキャラを一新した新シリーズのSHOWBYROCK!! ましゅまいれっしゅ!!が始まった、ラブライブで言うサンシャインみたいなもんだな
翌年には初代シリーズのキャラクターたちと合流してSTARS!!として4期目も放送されたし、音ゲーも古い方はサ終してイマドキ風の5ライン音ゲーが始まった、だがそれもつい最近サ終したけどな
ちなみにSB69は定期的にリアルイベントとして音楽フェスを開いており、ましゅまい(略)の主役ガールズバンドであるましゅ(同名略)は声優さんが実際に各々ギター・ベース・ドラムを生演奏するというパフォーマンスで
ドラム以外はほぼ初心者からのスタートということで練習動画も公開されつつアニメとリアル両面で活躍されていた
おわかりいただけたか? 俺の好みとしてはアニメのましゅまいれっしゅがとても可愛くてエモくておすすめだ
https://www.youtube.com/watch?v=XmAlcgWmEuw
このOP映像と曲に惹かれる部分があればましゅとSTARSはアマプラで見れるんでな、1期2期は飛ばして見ても特に問題ないだろう
今年もスーパー耐久始まるので去年の振り返り
良く言えば独自色、悪く言えばいつ喋ってもDAZN臭くコメント欄までなんJ汚染を呼び込む笹川裕昭
その出自からキャリアのある老人に何も言えず、話の腰を追ったり割り込む事が致命的に弱いシャーリー半田
喋りだすと延々と昔話しかしない為、競技に急変があっても止まることができないので起用ポイントに難のある関谷正徳
関谷はこの際タイミングが悪かったにしても他二人はそれぞれ自分のチャネルなりリージョンがある人達なので引きこもっててほしいし、何を考えてSTOも呑んだのか理解しがたい
シャーリー半田はスーパー耐久公式のレギュラー陣とセットで運用しないとダメだというのは何も去年発覚したことでもなし、予見できた事故を起こした印象が強まるばかりだった。
シェアウェア(という表現はおいておいてのやつ。https://anond.hatelabo.jp/20230124045812)の記事が面白かったので、自分の得意分野の領域でいろいろ紹介します。
基本的に、SaaSのサービスは便利だけど、あれもこれもと契約していったらサブスク破産するので、
もともとownCloudっていうDropbox代替があったんだけど、そこから分派して今も機能開発が続いている。
興味深いのはLAMP構成なので、VPSや自宅サーバーじゃなくても、レンサバで動くのがいいよね。
データ保存領域はオブジェクトストレージ(S3互換)も利用できるので、例えばWasabiなんかと契約してお安く済ませてしまうのも全然アリかと。
最近はカンバンシステムって、単体で使うんじゃなくていろんなアプリの中で使われる印象なので、今更Trelloだけ使いたい、なんてニーズはないかもだけど、
そこまで複雑でなく小規模なプロジェクトとかだと、意外とTrelloだけでいいよね、みたいなこともあるかな。
そういう時は、これを使うといいかも。
ちょっとUIの雰囲気が違うだけで、まんまSlackです。絵文字の追加もできるし、APIもあるし。人によって好き嫌い分かれるスレッド機能も、まあ、あのスレッド機能のまま。
n8nと書いてnodemationと読ませるらしい。初見殺しすぎんだろ。
ZapierやIFTTT、無料枠あるけど、あれもこれもやり出すとすぐ無料枠埋まっちゃうので、これ結構いいと思うんだけどな。
kintone使ってる会社増えてると思うんだけど、まだまだ1ユーザー1500円ってのは高いので、零細企業は導入し辛いと思う。
で、それの代替になるのがExment。UIがkintoneとは少し違うので代替と言い切れないかもしれないが、
やれることはkintoneのソレと全く同じなので、用途代替はできる。
開発も日本企業なので、UIも日本語化されている。LAMP構成なので、レンサバでも動くよ!
そもそもAirtableって何やねんって人もいるかもしれないけど、kintoneとGoogleスプレッドシートをいいとこ取りして、Trelloとガントチャートを足した感じ。
これもまあまあいい感じでZoom再現してます。Zoomの方が新機能の追加早いけど、Jitsiも頑張って追いついている感じです。
ただ、やる内容が複数人でのリアルタイム動画配信なので、サーバースペック・回線スペックはまあまあ必要なので要注意。
こちらは使ったことないんだけど、よりオンライン授業向けらしい。
最近よく見かけるようになった、オンラインミーティングとかの予定をブッキングさせるSaaS。
あれのはしりがCalendlyで、日本でもいくつかそれのSaaSができてますね。
あれらも無料枠だと1カレンダーだけしかできなかったりするんだけど、これなら好きなだけブッキングさせられます。
ECサイトとか、Webマーケティングを重視してるサイトによくある、画面右下に吹き出しアイコンがあって、チャットウインドウがぴょこっと出てくるやつ。
日本ではWeb接客とか言われてるけど、あれの代表的なSaaSがIntercom。Zendeskは、どちらかというと内部ツール向きかな。
これのOSS版がChatwootとPapercups。自社サイトにWeb接客入れたいけど、費用抑えたい、って時にどうぞ。
この手のツールがないと仕事にならないという人も多いと思います。
これまでだとRedmineがそれのOSS版的立ち位置でしたが、さすがにイマドキあのUIはないなぁ、と。
OpenProjectは、Microsoft Projectの代替をイメージしてるみたいですが、
ガントチャートにカンバンがデフォルトで使えるので、BacklogやAsanaの代替にはちょうど良いでしょう。
ただ、そんな高度なことしてるわけではないのに、サーバーの要求スペックはちょっと高めなのでご注意を。
UA廃止でGA離れが始まってるとも聞きますが、疎開先として有名。
PHPで動くので、PHPやWordPressでできたサイトに一緒に入れちゃってもいいと思う。
HeadlessCMSは、データ表示を持たず、フロントエンドへAPIを通じてデータを渡すタイプのCMSのこと。
このジャンルでは、SaaSだとContentfulが有名だけど、OSSでもいろいろある。
Node.js製。歴史があるので、結構いろんなことができる。
WordPressのGutenbergエディターを取り込んだプラグインなんかもある。
User認証も持ってるので、CGM的なサイトを作ろうと思ったらできなくもない。
これもNode.js製。利用できるDBが幅広く、既存のデータベースも活用できる。
なので、既にPostgresSQLとかでデータを持ってるんだけど、
非エンジニアにもデータを触らせるためのフロントエンドが欲しい、ってニーズに良いかも。
PHP製。SQLiteとMongoDBで利用可能。MySQL/PostgreSQL使えないのがちょっと残念。
近年、本腰入れて自社ECサイトをやろうと思うと必ず選択肢に上がるShopify。
インテグレートパートナー向けのエコシステムも充実してるので、取り組み始めるエンジニアやシステム会社も多い。
ヘッドレスコマースや越境ECには向いているものの、これをセルフホストしたい、というニーズに応えたのがmedusa.js。
ざっと見てみただけだけど、モダンな構成で、今時のフロントとバックエンドを分けた構成でやりたい、というのには向いている。
プラグインにmedusa-marketplace.jsというのもあり、Amazon的なマーケットプレイスも実現可能。
昨年、Adobeに買収され、デザイナーたちを驚愕させたFigma。
先日はAdobe XDが終了のお知らせとなり、UIデザイナーたちの不安は募るばかり。
そんな提供企業に振り回されたくないなら、このPenpotでUIデザインしよう。
Figmaほど機能実装はされていないが、まあまあ一通りのことはできる。
Figma代が嵩むとお嘆きの制作会社なんかは、一考の余地あるんじゃなかろうか。
企業によっては、コンタクトフォームをたくさん作りたいという会社もある。
人材採用のフォームを職種別に細かく分けたい(しかも頻繁に募集職種が変わるとか)
Google Formで大体解決しそうだけど、それをGoogleに頼りたくないならこちら。
まあまあ機能豊富なので、人によってはGoogleFormよりもこちらを好むかも。
DockerベースのWebメールUI。送受信に必要なものを、丸っとDockerで用意してくれているので便利。
HubSpotは、いわゆるMarketing AutomationとCRMを一体にしたツール。無料枠もあるが、かなり限定されている。
MauticはMarketing Automationよりの機能が多く、ユーザーのサイト上での回遊をビジュアル化してくれたりする。
SuiteCRMはザ・CRMという感じ。SalesForceをデフォルトで使う感じに近い。
ツールが分かれてしまうのは辛いところだけど、それぞれにAPIがあるので、うまく繋げられると強力なツールになってくれるはず。
Webサービス作ってると、メールの通知や一斉配信などがあると思う。
通常これらはSendGridや、AWS SESなどで処理すると思うが、これらにもOSS代替がある。
PostalはDockerでメール周りのもの全部用意してくれているので、かなり楽。
WordPressをモダンにしたような感じで、EC機能もデフォルトでついてる。マルチサイトも標準。
Jimdo/Wix代替と書いたが、もちろん自分のサイトをMicroweberで作ってもいいが、
自前ホスティングして、JimdoやWixのようなサービスを始めることもできる。
テンプレートをいくつか作っておいて、Stripeを仕込んでおけば、今日からあなたもJimdo/Wixのような事業を始められるわけだ。
JImdo/WixとSTUDIO/Webflowは一緒くたに語られがちだが、明確な違いがある。
前者はプリディファインドなブロックをGUIで構成するのに対し、後者はDOM要素ベースで構築していく。
つまりよりHTML/CSSによる細かなデザインコントロールがしやすく、Webデザイナーが親しみやすい。
それのOSS版がWebstudio。まだアルファ版だが、フロントエンドはそれなりによくできているので、
バックエンドを自前で用意してStripeを仕込んでおけば、今日からあなたも(以下略
Facebookなんか使わねーよ、っていう人も多いかもしれないが、
特定のコミュニティの中でコミュニケーション取るには、FacebookのUIと機能は優れていると思う。
なので、サークルとか同窓会、あと自治会とかPTAなんかにもいいんじゃないだろうか。
Netflixの代替って、Amazon Primeとかじゃねーの、と思われるのかもしれないが、そうではなくて、
あなたがNetflixみたいな商売したいならこれを使うといいよ、というのがJellyfin。
いや、そんな商売しないよ、と思うかもしれないが、
使いようによっては、おじいちゃんおばあちゃん向けの子供動画配信サービスとして構築するとか、
Stripeと連携して、劇団やバンドのオリジナルの配信サイトを構築するなんかも面白いと思う。
今更誰もYouTubeやVimeoの後追いをしようとはしないでしょうが、
複数のユーザーから動画のアップを受け付けて、それを閲覧したい用途もあると思う。
例えば、軽音部で複数のバンドが練習風景を録画したのを定期的にアップしたりとか。
学習塾で、授業の録画を授業ごとにアップしていったりとか。
ZoomやGoogle Meetのような双方向ではなく、一対多の一方通行配信。
個人的には、企業のウェビナーツールとしての可能性を感じる。(Zoomのウェビナープランとか高いもん)
1つのメールアドレスを複数人で運用したい時のツールがメールワイズとRe:lationどちらも日本のSaaS。
FreeScoutはOSSだけど、海外製。一応日本語化もされてるっぽい。
ECサイトの顧客問い合わせや、営業チームのプライマリー対応なんかに良いと思う。
Bubbleってなんぞ? という人のためにお伝えしておくと、ノーコードベースのWebアプリ開発ツール。
データエンティティを設計したら、自動的にCRUDを作ってくれて、フォームを配置するというような感じ。
Bubbleはそれ系の老舗で、歴史が長い分ノウハウも溜まっており、連携できるサービスも多い。
ただ、ベンダーロックインされるし、季節的なキャンペーンとかでは、アプリを使用しない期間もサブスク費用がかかる。
Budibaseは、Bubbleの思想に一番近い感じ。凝ったUIが必要なければ、ざっくりコレでなんでも作れちゃう。
AppSmithも同じような感じだが、これはDBをあらかじめスキーマ定義しておかないといけないところが若干不便かな。
ToolJetはルーティングURLの概念がなく、本格使用を諦めたんだけど、最近アップデートしたらしいので、そこのところどうなってるかまた確認しときたい。
他にもこの手のやつあったら、いろいろ教えて欲しい。単純に好きなので。
テレビもオーディオも無い部屋なので1から揃えたい。映像は主にアニメ円盤(BD)とBS放送(のアニメ)。
予算はざっと100万~程度。金にも広さにも限度はあるが最良の環境を作りたい。
プロジェクターはスクリーンを設置する壁が確保できそうにないので除外。
サイズは65インチが限界そう。壁面に置くのも難しいので角への斜め置きを想定。
賛否両論のQD-OLED、店頭で見比べると確かに赤や緑の原色系ギラギラ感が良し悪しのようだけどソースがアニメなら悪くないのではないかという説に乗ってみたい。
徐々に価格も落ちてきていて良い感じ。
有機ELとしては明るくてなんかとにかく評判良いらしい(kakaku情報)。パナのサイトを見てても何か凄そう感がある。あとA95Kよりは安めっぽい。
正直録画はしないのでレコーダ機能は不要。4k放送も受信できない(JCOM環境なので契約してSTB設置しないとダメらしい)ので4kチューナーも不要。
4kアップコンバートについては言及が少なく、あまり画質面では良く無さそう。
4kブラビアモードを訴求しているが画質改善の能書きが少ない。
最上位を目指すならこれらしい。特に4kアップコンバートが優れていて地デジ/BSはこれを経由して見た方が画質が良いとか。能書きも多いが24p/30p変換出力って何が嬉しいの程度の知識だと、ピュアーディオ系の匂いがしてくる。
とにかく色々高い部品を使ってるんだろうなというのはわかるが、LANチップが🦀なのはワロタ(https://panasonic.jp/diga/products/zr1/circuit.html)。🦀がダメとは言わないが格落ち感が凄い。
騒がしい量販店だと、試聴してもいまいち効果が分かるような分からないようなという感じ。
無論音楽業界で受け入れられてるのはコード聞き取り(Chord Tracker)や整音(izotope等)を自動でしてくれる前者
無論イラスト業界でも望まれてるのは前者なのに後者が出てきたからな
音楽AI 自体クリーンデータしか使わないってStable Diffusionが言ってるからそんなに盛り上がらないのが確定してるし
歌手、作曲家、アレンジャー、レコーディング/マスタリングエンジニアどれを取っても奥が深いし
万能調味料だけど整音にAIを使いすぎると尖った曲が生まれずハンコ絵みたいな薄っぺらい曲しか生まれないからあえて使わない奴や嫌ってるやつも居る
それだけの話し
第1世代の「オタク」の多くは趣味の探究と生産を旨としていた、ただ消費するだけの存在ではなかった、とよく言われるが
世代が下るごとに、オタクの中にも「特定ジャンルのエンタメの消費者」的な意識を持つ人々が明らかに増えていっている。
そしてStable DiffusionやnovelAI Diffusionの登場で、この「趣味者としてのオタク」と「消費者としてのオタク」の断層が決定的になったと思う。
「消費者としてのオタク」は、たとえば自分好みの絵師のタッチで自分好みの絵が出力できればうれしいから、AI技術の進展を歓迎するだろう
「趣味者としてのオタク」は、たとえばDanbooruを利用した機械学習はオリジナル絵師の努力や技術を剽窃し貶めるものだと警鐘を鳴らすだろう
実際、Danbooruからの学習を批判する声に対して、オタク界隈からもちらほらと
「技術の進歩を否定する」「老害」といった物言いが見受けられるようになってきた。
折しも最近の『2.5次元の誘惑』では、「オタクは愛で生産と消費を結びつける」「みんな仲間」という(美しい)話をやっているが
テクノロジーの進歩によって、消費系のオタクが、消費したい対象を人間の生産者に頼らずとも無限に供給してもらえるようになったら
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>
/**************************************
・NULL演算子(??)は使えない。論理積(&&)は使える。
・オブジェクトの分割代入はできない。
・importはできない。 <h3>o- *************************************/</h3>
/**************************************
関数 <h3>o- *************************************/</h3>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
if (targetAnkerNumber !== null) {
const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);
messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);
return {
...r,
updatedLoopStatuses:
_LoopStatuses.updateMinAnker(targetAnkerNumber),
};
}
}
if (SETTINGS.postSettings.noAnkerPost) {
//返信対象無し、或いは返信しない設定の場合。アンカー無し投稿文を作る。
const r = _TextCsvCursors.takeNextRowTextAsNoAnker();
messageDisplay('返信対象無し。アンカー無し投稿。');
return {
...r,
updatedLoopStatuses: _LoopStatuses,
};
}
return null;
})();
if (p) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
}
wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));
}
}
/**
* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。
* @param {string} serverName サーバー名
* @param {MyPosterName} _MyPosterName
* @param {string} postMail メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
postMail,
_MyText,
).postSubstring(retryTimes, postTo5chTread, postConfirm);
if (r) {
back();
return;
}
wait(7);
const error = createPostErrorMessage().analyze();
messageDisplay(error.message);
if (error.order === 'KILL') {
kill();
} else if (error.order === 'SKIP') {
return;
} else if (error.order === 'TRUNCATE') {
back();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
if (
SETTINGS.postSettings.noAnkerPost === false &&
SETTINGS.postSettings.replyPost === false
) {
return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&
SETTINGS.postSettings.replyPostTextCsvStartRow < 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',
);
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||
SETTINGS.postSettings.replyPostTextCsvStartRow === 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',
);
}
}
/**
* 入力フォームを表示して入力されたスレのURLを受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
const posts = window.document.getElementsByClassName('post');
return new PostList(Array.from(posts).map((e) => new Post(e)));
}
/**
* 開いてるスレのレス全て取得してPostDOMListに格納して返す。
* @returns
*/
function createPostDOMList() {
const posts = window.document.getElementsByClassName('post');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document