はてなキーワード:UNDOとは
練習用ソフトぐらいはいくらでも転がっているが、指の位置が把握できるものが良い
サーバー運用する上ではGUIに頼れないことが多いため、noxで使えるエディタをマスターしろ
ここにきてようやくプログラミング言語だ
まず共通知識としてHTML,CSS,JavaScriptぐらいは知っておいたほうが良いだろう
あとはどんなプログラマーを目指すかに依るが、組み込み系ならC言語、Web系ならphpやpython、機械学習ならpythonやRを学べ
シェルスクリプトは便利だから、bashをマスターするのも望ましい
要は効率的に処理を書ける必要があるが、LeetCodeやAtCoderで基本的な問題集を解けるようになれ
例えばpythonプログラマーなら、numpy, scipy, scikit-learnなどのライブラリのドキュメントを読めるようになれ
あるいはElasticsearchを使わなければならなくなったときに、ドキュメントを読んで操作できるようになれ
ドキュメントを読む経験が増えれば、新しく何かをやるときにすぐに着手できるようになる
AWSを有料で勉強するのはキツイので、就職後に先輩から学ぶか、あるいは認定試験を本やオンライン講座で勉強するのでもいいだろう
バージョン管理システムは知っておくべき知識だ
いわば、ソースコードの巨大なUndo,Redoみたいなもんだ
パスワードをどう管理すればいいのか、ネットワークセキュリティの仕組み、など基本的なセキュリティは学んどいたほうが良い
クリーンコードに関する書籍はたくさんあるので、時間があるときに読んでおけ
自分が使っているプログラミング言語に関連するベストプラクティスを学べ
CAN'TUNDO THIS!!-MAXIMIZOR
てーってーてーてれれてーってーて♪ぽぉう♪
この記事はみす51代 Advent Calendar 2021(https://adventar.org/calendars/6313)の22日目の記事です。
知ってる方はお久しぶりです。知らない方ははじめまして。MiniDragonEggです。
この名義を名乗って出るのは約5年ぶりです。関連付けてもしょうがないのではてな匿名ダイアリーにて失礼します。
tommiさんのバトンを受けとりました。といいたいところですが執筆時点で内容がnullで#VALUE!のため実質ほわいとなっとうさんからということになります。
げんたろうさんが街がどこまで続いているかのツイートでバズって自分のところまで回ってきたり、naka3さんがバーチャル受肉したりした中、自分もゲーム関連の肩書きをいただいたりしました。
DTMメインのnaka3さんのイラストがかわいく多彩と感じました。他にもMIS.Wの方が受肉していたのでいつかバーチャルコラボできたらいいですね。
閑話休題。
VTuberの数も増えた昨今ですが、今年は引退(卒業・"無期限休止"含む)の発表も多く7月1日の桐生ココさん引退時にはMIS.Wでもundoさんがはてブロの記事(https://u-ndo.hateblo.jp/entry/2021/07/03/060000)にしたりと少なからず反応もありました。
その他キズナアイさんが来年2月26日で活動休止など挙げきれないほどありますが、その中でもバーチャルライバーグループにじさんじ((運営はいちから株式会社:現ANYCOLOR株式会社))所属のギバラこと御伽原江良さんが3月10日に"卒業"((この記事では今後表記を"引退"に統一します))したのは記憶に新しいと思います。
しかしこの発表前の3月4日にメンバー限定配信((メンバーシップ登録者限定配信。有料登録している人のみ観られるライブ配信/アーカイブ。))で発表していてこれが正式発表前に広まり問題となりました。自らも遠くない経験をしているのでいつかこのような問題が起こるのだろうなというのは思っていましたが、これが本当になってしまった件です。
ここでの最大の問題点は
です。
他にもニュースサイトPANORAが広めた記事についていちからの「いちからに確認した上での記事化になります」→「いちからの要請により記事を削除いたしました。」の流れも問題となりましたがここではメインとしては扱いません。
情報アクセシビリティとは目や耳が不自由な方にも情報をということ(広く情報を提供できるべき)が主な議論とされますがここでは制限する必要があるところに制限する必要があるということにも目を向けることとします。
一般論としてメンバーシップは有料会員サービス同様に考えられるがあります。
PANORAに限らずTwitterや掲示板に書き込んだことで有料会員限定の情報を一般に公開するということは有料会員で得られるはずだった利益も失うため"妨害"とも取れます。
しかし証拠として提出するのは難しくモラルに頼るしかないことや、内容の一部を公開することで有料会員の宣伝になること(YouTubeで言えば切り抜きの効果に近いこと)もあるため取り締まるのは難しいのが現状です。
一般に公開されていることは高齢者やスマートフォンの所持の有無に関わらず知られることはもちろん重要ですが(一般的な情報アクセシビリティ)、制限するべきところも少しずつ議論されてほしいものです。
最近VTuberを見ていると打たれ弱く休止といったことが多く自分に近い年齢だとアンチや面倒な人が回りにいる経験がなく免疫もないのだろうなと経験者は思いました。
ジョニー度さんのコミケ感謝のツイート(https://mobile.twitter.com/oiorsme9k1/status/1028543887416090625)を見かけたのでこの場でこちらこそのお礼とします。
※反応や書きたいことがあったら追記するかもしれません。
増田諸兄はAI Dungeonというゲームをご存知だろうか。
テキストベースのRPGで、AIに対して対話形式で物語を作って遊ぶ基本プレイ無料のゲームである。
「DO(~する)」「SAY(~と言う)」「STORY(地の文含めて物語を1から書く)」などを使うことで、AIがこちらが書いた内容に応じて次の展開を示してくれる。
形式としてはAIを相手にTRPGをするというか、AIとリレー小説を書くような感覚に近い。
残念ながら対応言語は英語のみだが、日頃からこの場で高尚かつ熱い議論を交わしている増田諸兄は中学英語レベルなら余裕で使いこなせるだろう。
本当になんでもできる。英語で書ければだが。
剣と魔法のファンタジー世界で銃をぶっ放して遊ぶこともできるし、個人で楽しむ範囲なら、再現した版権世界に異世界転生することもできる。
では実際にどうやって遊ぶか、軽く実例をお示ししよう。
まずはサイトに登録し、Homeから「NEW GAME」をクリック。
すると色々出てくるので、わかりやすいシナリオ群である「PROMPTS」から、「Fantasy」、続けて「Knight」をクリック。
すると、
You are Masuda, aknight living in the kingdom of Larion.You have asteel longswordand a woodenshield.You areon a quest to defeat theevildragon of Larion.You've heard he lives upat the north of the kingdom.Youseton thepath to defeathim and walk into a darkforest.Asyou enter theforestyou see a ogre.
こんなのが出てくる。
しかし同じことをした諸兄は全く違う文章が出力されているだろう。
それもそのはず、AI Dungeonは遊ぶたびに異なる物語を提供してくれるからだ。
なので同じシナリオでも、進め方次第で全く異なる結末を迎えることがよくある。
このシナリオでは騎士の増田がドラゴン退治に向かったらオーガに出会ったようだ。
せっかくなので倒してみよう。
>you slay ogre
You defeat the ogrewith your sword, butasyougo to loothisbodyyou are engulfedin flames.You have awoken inHell.
あっさり倒せたが、戦利品を得ようとするとなぜか急に地獄に飛ばされた。
思っていたのと違うのでやり直そう。
>you slay ogre
Yourun forward and slay the ogre with a mightyswing ofyour sword. Ogreblood spillsouton to the ground andyoucontinue. Suddenlyyou hear a roar.
全く違う展開になった。
もっと違う展開を見るため、一度やり直してみる。
因みに戻しすぎた場合は「REDO」で同じ文章が再展開されるし、「RESTORE」でなかったことにした文を引っ張り出すこともできる。
ここさえなんとかなればなぁ~という惜しい文章は、直接「EDIT」で自分好みに変えてしまうのもいいだろう。
You are Masuda, aknight living in the kingdom of Larion.You have asteel longswordand a woodenshield.You areon a quest to defeat theevildragon of Larion.You've heard he lives upat the north of the kingdom.Youseton thepath to defeathim and walk into a darkforest.Asyou enter theforestyou see a ogre.
「SAY」モードで「Excuse me, doyou know where thedragonis?」とでも書いたらどうなるだろうか。
>You say "Excuse me, doyou know where thedragonis?"
The ogre looksatyou and says "Thedragon? Heis in thenextcave!"
さっき殺したのが申し訳なくなるくらいフレンドリーに答えてもらった。
では「Story」モードでは何ができるだろうか。同様の手順で文を戻し、こんな感じに入力してみる。
「The ogreis bathing in theriver.Shemay be aroundyourage, andshe revealsher muscular but femininebody under thesun.」
You are Masuda, aknight living in the kingdom of Larion.You have asteel longswordand a woodenshield.You areon a quest to defeat theevildragon of Larion.You've heard he lives upat the north of the kingdom.Youseton thepath to defeathim and walk into a darkforest.Asyou enter theforestyou see a ogre.
The ogreis bathing in theriver.Shemay be aroundyourage, andshe revealsher muscular but femininebody under thesun.Shehas a large bosoms and butts andherskinis alightgreen.Shehas long black hair andsheis rubbingit with awhite cottonrag. The ogre turns toyou and gasp in surprise.
このゲームがいかに素晴らしいか、諸兄にお分かりいただけただろうか。
私が冒頭に述べた「英語で書ければ何でもできる」とはまさにこのことだ。
誰もが冒頭の展開からでっぷり太った醜いオーガと遭遇する場面を想像しただろうが、このように書いてしまえば乳と尻のデカいマッチョ亜人美女とのラッキースケベ現場に早変わりである。
もちろんこんなのは序の口で、ある種の英単語さえ知っていればそれはもうあんなことからこんなことまで自由自在だ。
そろそろ諸兄もAI Dungeonをプレイ(意味深)したくなってきたのではないだろうか。
さて、増田諸兄にAI Dungeonの素晴らしさを伝えたところで、諸兄らがぶち当たりそうな問題点について補足する。
もちろん他の疑問があれば、可能な限り追記して返答しようと思うので、気兼ねなくご質問をお願いしたい。
そもそもテキストベースのゲームなのでコピペで直ぐに翻訳できる。
AIも賢いので多少文法・スペルが間違っていても強引に解釈してくれる。
まあとりあえず遊んでみよう。話はそれから。
ページの右上タブから「Setting」に移動し、「Safe mode」を設定しよう。
「OFF」でNSFW展開を許可し、「STRICT」で完全に除外することができる。
試していないので不明だが「MODERATE」で中間程度だろう。
AIは語った内容を結構な頻度で忘れるため、登場人物の容姿や持ち物がコロコロ変わってしまうことがある。
そういうときは「PIN」や「World Information」に忘れさせたくない情報を記載すると良いだろう。
「PIN」は常にAIが覚えてくれるが、1000字以内という縛りがある。
「World Information」は特定の単語にのみ反応して情報を思い出してくれるが、多くの情報を入れることができる。
状況に応じて使い分けるといいだろう。
これは無課金で遊んでいるとどうしても出てくる最大の不満点である。
もちろんAI Dungeonは画期的なゲームだが、何度も遊んでいると同じような展開ばかりになってしまうことがある。
これはプレイヤー側の入力が偏っている可能性があることも一因だが、それ以上に大きいのは、AIにも出せる限界がある、ということだ。
無課金で利用できるAIは「GRIFFIN」と呼ばれる一段下のモデルであり、課金することで「DRAGON」という最上位AIの一部・または全部を使うことができる。
DRAGONモデルは驚くほど自然、かつクリエイティブで多彩なシナリオを展開してくれる。上記の例文もDRAGONモデルが生成したものだ。
課金することで「SCALE」というゲーム内通貨を入手でき、これを使って特定のプリセットワールドを購入することもできる。
フルパワーのAI Dungeonを遊び倒したい諸兄はぜひサブスクライブしよう。
サブスクライブしたら「Setting」から「AIModel」を変更することを忘れないように。
高野文子は知らないけど竹宮恵子好きだし、玲音はゲーム版のことだし、アニメ版の玲音好きな人と思われたなら「俺のアニメ版のほうが好きじゃないしゲーム版が好きなほうだし」って思うし、バロックはググったら好きだなと思ったし、サーカディアは知らないしググっても絵柄古すぎてあれだし、アルトネリコはなんか趣味合わないし、ラブサイケデリコなんてリリイ・シュシュとかと全然似てないし、アメリカ系じゃん。ワイルドで。リリイ・シュシュはイギリス&日本系&コバタケ系。これはペンですは意味わからないけどググったらなるほどなって感じだし、それ系なら伊藤計劃は普通に好きだったし、ああいうのに憧れて今プログラマやってるし、ISOLAは初めて知ったけどなんかパッケージの表紙から好みだし、丸尾末広は自分も別に好みでないし。リリイ・シュシュというかわかりやすくリリイ・シュシュって言っただけで本当に好きなのはUndoの方だし、篠田昇の方だし。
ガーリーとホラーなんじゃないんだよね。ガーリーとホラー、って解釈される時点で違うなって思うんだよね。ホラーって言っても洋じゃなく和の、ノスタルジックで悲しい感じがすきだし、ガーリーなのが好きなのじゃなく神的で神秘的で抽象的でノスタルジーで打ちのめされる感じが竹宮恵子とかpapa told meとかに感じるから好きなだけでガーリーな感じがすきなわけではないし。例えば花とアリスなんかチャラくて好きじゃないし、そんなのよりUndoだし、ルナティックラブだし
でもあなたとは多少ネットでようやく知れた少しは趣味合いそうな可能性ある人だなと思ったけどやっぱりこういう趣味合う合わないの話って結局一瞬話したら終わってしまうことなのかなって思って、ずっとそういう人と繋がってなんか話せたりしたらなって思うけどありえないし、第一たぶんノスタルジー系統で合うのが出てないっぽいから趣味合わないし、なんか悲しい。
javascript:(function(){var D=document,G=g(‘oebtnd’),f='postform’,A='setAttribute’,CE='createElement’,CT='createTextNode’,DI='drawImage’,Q='addEventListener’,N=G.parentNode,I='insertBefore’,s='style’,w='width’,h='height’,X=g('ftxa’)[s],T=g('oe3’)[s],Z=1,S=g('oejs’),ct=S.getContext('2d’),ar=[],ind=-1,fl=1,U=undefined,gID='getImageData’,pID='putImageData’;function b(v,q){var e=D[CE]('input’);e[A]('type’,'button’);e[A]('value’,v);e[Q]?e[Q]('click’,q,!1):e.onclick=q;return e}function g(n){return D.getElementById(n)}function ig(x,y){var P=ct[gID](0,0,x,y),Cv2=D[CE]('canvas’),ct2=Cv2.getContext('2d’);ct2[w]=x;ct2[h]=y;ct2[pID](P,0,0);return Cv2}function wZ(z){varoz=Z;Z=Z+z;if(Z<1)Z=1;if(Z>8)Z=8;X[w]=T[w]=(S[w]*Z+46)+'px’;X[h]=T[h]=S[h]*Z+'px’;S[s][w]=S[w]*Z+'px’;S[s][h]=S[h]*Z+'px’;ct.scale(oz/Z,oz/Z)}functionMD(e){if(e.button==0){fl=1}}function MU(){if(fl){ar[++ind]=ct[gID](0,0,S[w],S[h]);fl=0;ar[ind+1]=U}}MU();S[Q]('mousedown’,MD,false);D[Q]('mouseup’,MU,false);N[I](D[CE]('div’),G);N[I](b('拡大’,function(){wZ(1)}),G);N[I](D[CE]('div’),G);N[I](b('縮小’,function(){wZ(-1)}),G);N[I](D[CE]('div’),G);N[I](b('UNDO’,function(){if(ind>0){ct[pID](ar[–ind],0,0)}}),G);N[I](D[CE]('div’),G);N[I](b('REDO’,function(){if(ar[ind+1]!=U){ct[pID](ar[++ind],0,0)}}),G)})();