はてなキーワード: オブジェクトとは
『Project Mugen』という新作ゲームの開発情報が公開された。
https://m.youtube.com/watch?v=ZhdXubIXA-U&feature=youtu.be
これを見て俺は驚愕した。ワイヤーアクションでビル街の空中を飛び回るモーションはただの『Marvel's Spider-Man』のパクリじゃないか!
こんなパクリゲーで勝負するなんて中華企業は自分でアイデアを生み出す発想力がないのだろうか。終わっている。
でもよく思い出すとワイヤーアクションで移動するゲームは『SEKIRO: SHADOWS DIE TWICE』やコーエーテクモゲームスが公開した『進撃の巨人』があったな。
SEKIRO の公開は 2019 年、Marvel's Spider-Man は 2018 年、進撃の巨人は 2016 年、ということはつまり……
なんてこった!
オリジナルは進撃の巨人で、スパイダーマンもSEKIROもProject Mugenも全部ただのパクリゲーだった!じゃあゲーム業界そのものが自分のアイデアで勝負しないクソカスパクリ泥棒社会だったってことか!見損なった!
しかもProject Mugen の罪はそれだけではない。このゲーム、なんと『オープンワールド・アクションRPG』なのである。
ヤバすぎる……オープンワールドは全部 GTA Ⅲ のパクリだ。スカイリムも、今流行っている原神もゼルダティアキンも、ポケモンSV も GTA Ⅲ をパクっているんだ……
あの任天堂ですらパクリに手を染めているなんて、ゲーム業界の闇は深すぎる…… マジで終わっているのかもしれない……。
しかもだ。Project Mugen はオープンワールドの都市のマップを自動生成で作ったらしい。
これは罪が深すぎる!
オープンワールドマップの自動生成は『No Man's Sky』で1800京個の惑星を作るために開発された技術だ。あるいは、『The Matrix Awakens:An Unreal Engine 5 Experience』でも都市の自動生成を開発していた。
こんなものまでパクるなんて、他人の努力を馬鹿にしているのか……。
いやまてよ、そもそもマップを自動で作るというアイデアは、ポケモンの不思議のダンジョンシリーズのような「ローグライク」ゲームで使われる技術だ。そのオリジナルは名前の通り1980年代からある『Rogue』だ。
ということは、ポケモン不思議のダンジョンも、Epic Gamesも Rogue をパクってんのか…… こいつら全員カス過ぎる…… ゲーム業界は本当に人格破綻者しかいないらしい。
そしてRPGは1981年の『ウルティマ』や『ウィザードリィ』のパクリだ。そもそもコンピュータRPGってのは、TRPGのパクリだ。呆れてもう言葉が出ない。
Project Mugen の罪はまだまだある。Project Mugen ではシーンに配置されてるオブジェクトを掴んで動かしたり、敵にぶつけたりする機能があるらしい。
これは『ゼルダの冒険 ティアーズ オブ ザ キングダム』のウルトラハンドのパクリだし、『SCARLET NEXUS』の念力のパクリだ!
そんでもって、物理演算エンジンをゲームに組み込むアイデアは『リトルビッグプラネット』のパクリだ!ゼルダもSCARLET NEXUSもパクリ泥棒だ!
だいたい、Project Mugen はキャラクターのセルルック(トゥーンシェーディング)な見た目からして、もう既にパクリだ。
最近のゲームだと原神も『BLUE PROTOCOL』もキャラクターの 3D モデルがセルルックに描写されているが、これは『GUILTY GEAR』シリーズのパクリだ。
ていうかセルルックとは「アニメ画のような」という意味なのだから、ゲームなのにアニメをパクっている!
これは文化盗用だ!ゲーム業界の内部だけじゃなくて外からもパクってくるなんて、社会の悪だ!ゲームならゲームのビジュアルで勝負しろよ!
そんでもって、GUILTY GEAR とかスマブラとかの格ゲーって言われるジャンルは全部ストリートファイターのパクリだ。
はあ。俺はゲームっていうのはどこを見てもパクリだらけの最悪の肥溜めなのが分かった。
こんなのは間違っている。ゲーム会社は他人の努力をパクらないで、オリジナリティで勝負しろ。
ワイヤーアクションも、オープンワールドも、アクションRPGも、物理演算も、プロシージャル生成も、セルルックも、クロスプラットフォームも、レイトレーシングも、3Dアニメーションも、全部先駆者がいる。
もうこのやりとりの時点でダメやん?
ダメじゃねえよ。要件を正確に記述できないならコードなんて書けるわけない。
空気読んでいい感じに読み取ってよというのを求めてるなら、仕様書すら書けないダメプログラマーってことだろ。
コンピューターの中では数字で日付は管理されててそれはJavaでは日付のオブジェクトとして表されるんだけど、「今週=現在の週の水曜日」を表すオブジェクトが欲しい
やったぞ
java.time パッケージの LocalDate クラスや TemporalAdjusters クラスを使用して、「今週の水曜日」の日付オブジェクトを取得できます。
以下のコードは、現在の日付に基づいて今週の水曜日の LocalDate オブジェクトを返す Java の関数です。
import java.time.temporal.TemporalAdjusters;
public static void main(String[] args) {
System.out.println(getThisWeeksWednesday());
}
public static LocalDate getThisWeeksWednesday() {
LocalDate today = LocalDate.now();
return today.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
}
}
この関数は現在の日付を取得し、それを TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY) メソッドに渡して、今週の水曜日の日付を取得します。今日が水曜日である場合、それが返されます。それ以外の場合は、次の水曜日の日付が返されます。
今日が週内のどの日であったとしても(木曜日や金曜日であったとしても)その週の水曜日を表すオブジェクトを返す関数を示してください。
それには、今週の最初の日を求め、そこから水曜日までの日数を加算するアプローチを使用します。以下のコードでは、週の最初の日を月曜日と仮定しています:
import java.time.temporal.TemporalAdjusters;
public static void main(String[] args) {
System.out.println(getThisWeeksWednesday());
}
public static LocalDate getThisWeeksWednesday() {
LocalDate today = LocalDate.now();
LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
return monday.plusDays(2);
}
}
このコードは、まず今日の日付を取得し、それから TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY) メソッドを使用して今週の月曜日の日付を取得します。そして、月曜日から2日後の日付(水曜日)を取得するために plusDays(2) メソッドを使用します。
・起床(12時ごろ)
母親と飯を食う。
・勉強(13時〜14時半過ぎ)
午後から勉強。演習をやる予定だったがなんとなくだるくなり、大森徹の最強講義を読む
・ドラマ(15時半過ぎ〜16時半過ぎ)
母と科捜研や遺留捜査、相棒などを視聴する。普段は相棒が終わったらコンビニに行き副業か勉強に移るのだが、今日はニュース番組を見てダラダラした後孤独のグルメ再放送まで視聴してしまった。
ドラマを見終えたタイミングでコンビニに行くのがルーティン。コーヒーとオールドファッションドーナツを購入し腹ごしらえ。
・副業(18時〜3時ごろ)
Mayaでキャラクターやゲーム内のオブジェクトを作成したり、UEでステージや背景を製作する。酷いとアイデアだけ提示されてキャラクターやオブジェクトの作成、ゲームシステム自体全て丸投げという案件もある。
影廊やFNAFがヒットしたこともあり、個人でゲームを開発したい、Steamにリリースしてあわよくば稼ぎたいという人は多い。しかし、開発するためのスキルを全員が持ち合わせているわけではなく、この仕事は割と需要がある。正直、俺だってUEのチュートリアルから始めて必要な所はその都度ググったり本を参照して開発しているため飛び抜けたスキルがあるわけではないが、それすらやらずに一攫千金を夢見るアホは沢山いる。そしてそのようなアホが俺の客だ。
四年前から始めて、現在の年収は税金や年金保険を取り除いて500万円にギリギリ届かないくらい。社会人の妹より稼げているので受験勉強に身が入らない。
・夜飯(4時ごろ)
格ゲーに限らず、キャラクターを操るアクションゲームはプレイヤーがキャラクターになりきるという楽しさがあって、
ボタンひとつ押せば好きなキャラクターがダイレクトにアクションするという点で、コマンド式ゲームよりもなりきり感が圧倒的に高い。
また1対1というスタイルは無駄な情報量が少なく、より没入感が高くなるし、なにより自分の好きなキャラが常に画面で見えるというのもポイント高い。
コストの低さは、言わずもがな広大なフィールドを用意しなくてもいい、という部分でかなり有利。
極端な話、背景は真っ黒でも成立するのが格ゲーであって、それじゃあさすがに寂しいから各キャラ事にステージを用意はするけど、
https://chat.openai.com/share/c80d83ea-752b-4561-a162-7ea0bd116d56
Option Explicit
Dim objExcel, objWorkbook, objWorksheet
Dim strFolderPath, strSourceFile, strTargetFile, strSearchString, strReplaceString
Dim intLastRow, intRow, intColumn
Set objExcel = CreateObject("Excel.Application")
strFolderPath = ".\" ' スクリプトと同じフォルダにあることを仮定
strSourceFile = "変更一覧.xlsx"
strTargetFile = "変更一覧.xlsx"
Set objWorkbook = objExcel.Workbooks.Open(strFolderPath & strSourceFile)
objWorkbook.Sheets("1月").Copy , objWorkbook.Sheets("1月").Index
objWorkbook.Sheets("1月 (2)").Name = "2月"
' セルの値の置換
Set objWorksheet = objWorkbook.Sheets("2月")
objWorksheet.Cells(1, 1).Value = Replace(objWorksheet.Cells(1, 1).Value, "1月", "2月")
objWorksheet.Cells(2, 7).Value = Replace(objWorksheet.Cells(2, 7).Value, "2023/2/14", "2023/3/14")
' 最終行の取得
intLastRow = objWorksheet.Cells(objWorksheet.Rows.Count, 1).End(-4162).Row ' xlUp
' 値のクリア
For intRow = 8 To intLastRow
For intColumn = 1 To 6
objWorksheet.Cells(intRow, intColumn).ClearContents
Dim objFSO, objTextFile, strContents, arrLines, arrFields, strNewContents
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strFolderPath & "変更一覧.txt", 1)
strContents = objTextFile.ReadAll
objTextFile.Close
arrLines = Split(strContents, vbNewLine)
For Each strContents In arrLines
arrFields = Split(strContents, ",")
For Each strContents In arrFields
If IsNumeric(strContents) Then
strNewContents = strNewContents & "'" & strContents & ","
Else
strNewContents = strNewContents & strContents & ","
End If
strNewContents = Left(strNewContents, Len(strNewContents) - 1) & vbNewLine
' データをシートに貼り付け
Set objWorksheet = objWorkbook.Sheets("2月")
objWorksheet.Cells(1, 8).Value = strNewContents
' セルの値の置換
objWorksheet.Cells(123, 1).Value = Replace(objWorksheet.Cells(123, 1).Value, "F", "FH")
objWorkbook.Save
objWorkbook.Close
objExcel.Quit
思いつきですげーチョットずつしか進まないんだけどさ。
一応ある程度の話の流れは書き出してるんだけど、あらすじだけを読み直してもスッカスカで読み応えがないんだよね。
だから思いついたタイミングでそれをAIで出力できたらなと思うわけさ。
脳内ではあんなに盛り上がっていたあの名バウトの数々が全て記憶の彼方に消えて言ってるのが悲しすぎる。
こんなので「AIがあれば誰でもポチポチで創作できる簡単な時代になった」とは片腹痛いね。
つーか人間が2人以上画面に入ったらちゃんと作画できなくなるなら、本体2人+スタンド2体が基本のスタンドバトルなんて全然お話にならないじゃん。
チーム戦とかも結構あるんですけど?
GUIアプリは、Pygameでゲームを作ってみることを検討。
Webアプリは、TCP/IPやHTMLなどの知識も必要になってくるので、Python以外の学習に時間を取られてしまう。
Pygame(パイゲーム)は、Pythonプログラミング言語を使用して2Dゲームやマルチメディアアプリケーションを開発するためのオープンソースのクロスプラットフォームライブラリです。
Pygameは、ゲーム開発や対話的なメディアアプリケーションの作成を簡単にするためのツールとして使用されます。
2Dグラフィックス:
Pygameは2Dグラフィックスを描画し操作するための豊富な機能を提供します。
イベント処理:
キーボード入力、マウス入力、ウィンドウの閉じるなどのイベントを処理するための仕組みがあります。
サウンドと音楽:
アニメーション:
スプライト(画像の断片)を使用してアニメーションを作成し、オブジェクトの動きや変化を表現できます。
衝突判定:
ゲーム内のオブジェクト同士の衝突を検出し、対応するための機能を提供します。
ゲームループ:
メインのゲームループを簡単に設定し、ゲームの進行を管理できます。
簡単なAPI:
シンプルなAPIと豊富なドキュメンテーションにより、初心者でも扱いやすいです。
Pygameは、教育や個人プロジェクト、学習目的に利用されることが多く、Pythonを学んだりゲーム開発を学びたい人々にとって魅力的なオプションとなっています。
Pygameを使用してゲームを作成するための分かりやすいカリキュラムの一例を以下に示します。このカリキュラムは、Pygameの基本から始めて、徐々に難易度を上げながら具体的なゲームプロジェクトを進めるものです。
ステップ 1: Pygameの基本
ステップ 2: ゲームオブジェクトの操作
ステップ 3: 衝突判定とアニメーション
ステップ 5: 最終プロジェクトと発表
- 学習した内容を活用して、自分のオリジナルゲームを制作。
- ゲームのテストとバグ修正。
- ゲームを友達や家族にプレイしてもらい、改善点を収集。
- ゲームのプレゼンテーションや共有方法の学習(ウェブサイト、プレゼンなど)。
このカリキュラムは、Pygameの基本的な機能から始めて、ゲーム開発における重要な要素を段階的に学ぶことを目指しています。
各ステップごとに実際にコードを書きながら学習を進め、プロジェクトを通じて実践的な経験を積むことが大切です。
Anacondaを使用してPygameをインストールする手順は以下の通りです:
- Anaconda Navigatorを開きます。これはAnacondaのGUIツールで、簡単に環境とパッケージを管理できます。
- 左側のメニューから、「Environments」(環境)を選択します。
- 右上の「Create」ボタンをクリックして、新しい仮想環境を作成します。適切な名前を入力し、Pythonバージョンを選択します。例えば、名前を「pygame_env」、Pythonバージョンを3.7以上に設定できます。
- 仮想環境が作成されたら、その環境をアクティブにします。アクティブにするには、環境の名前をクリックし、画面下部の「Open Terminal」ボタンをクリックして仮想環境のターミナルを開きます。
- ターミナルで、以下のコマンドを実行してPygameをインストールします:
pip install pygame- インストールが完了したら、Pygameを使用する準備が整いました。
https://qiita.com/NaYuA/items/1cda0211ec44fb25d422
みんな大絶賛してるけど、これやばいやつよね
いわゆる「学生チート」ってやつで、社会人が言ったら全力全方位で駄目だしされるやつ
この「手放し称賛」が人を伸ばすんだと言う話をするなら、そのへんの大人も手放し称賛されるべきよね
さておき
POSの時【POSはPoint of Saleの略です】と説明してるのに対して
みたいなのが、非常に「わかってない感」を出しちゃってるよね
いや多分、脳内ではわかってるんだろうけど
説明口調で書くなら
みたいになる
技術用語として「await 演算子はプロミス(Promise)を待ち」みたいに直訳でドキュメンが出回ってるし
非同期で行うサーバーサイドの処理ではPromiseを使いましょうみたいなのが
サーバー書き込みなので、当然Promiseを返します、になってるんだろうけど
新人とかの、「わかってないけど書けます」連中が、大体こういう理解の仕方をしてるから
(Promiseを返すのはなんでだ?サーバー処理だから(キリッ)
もちろん、学生なんだから良いじゃん、良いじゃん、すげぇじゃん
というのもアリなんだけども
このわかってない感満載の文章を、手放しで称賛して、「考えて行動するだけでスゴイ」みたいになってるの
「みんながあんまり誉めたりするから、私自分が優秀な人間だって勘違いしちゃったじゃない!!」を思い出させる
・泣いた
オトナ帝国とか天カス学園位のレジェンドではないけど「クレヨンしんちゃん」というコンテンツは大人から子供まで読み手に寄り添って励ましてくれるというメッセージを勝手に感じて泣いた
・視聴理由→試写の感想で「けっこうシビア」と聞いて気になった
・3Dアニメ、違和感が心配だったけど、オープニングの追いかけっこシーンから3Dアニメの「すごさ」を感じさせて頂いた 超能力の波動?とかオブジェクト?が浮く影の感じとか車の逃げるシーンとかが3Dアニメにピッタリで良かった
・ネタバレ極力回避して観たからみつる君の造形が色々生々しくてビビった 眼鏡とかもだけど尖った唇とか細い顎とか生っ白い肌の色とか的確にチー牛すぎ
あと生きにくさを推しに縋ってるとことか自分じゃん…とかスマホ爆破の「見せる幸せがない」とか他人事じゃなさすぎて痛ェ…ってなった
・幼稚園立て籠もりの中継画面の生々しさ
・みつる君、エスパーお姉さんと安易に恋愛フラグたたんでよかった 「やはり恋愛救済エンドか」ってならんでよかった エンディングの手巻き寿司でちょっと顔を赤らめる位がいいんじゃ
・「食うに困らない大人」のメッセージ性が読み取りきれず己の読解力の不足を感じる
・着地点とかはネットで言われてたみたいな「モニョり」は無くはなかったけどまあ子供向けやしこんなもんやろ むしろ子供向け映画で「景気が悪い」とか「少子高齢化」「上の世代は逃げ切ることしか考えてない」とかあたりに触れたのが「こんなしんしちゃん見たこと無い」ってなった
・子連れ多いわりに上映中に子供の笑い声とかあんまりしなくて「子供的にはつまらないか…?」と勝手にひやひやした でも見終わった小学生位の子供が「楽しかった〜」って言ってたからホッとした
・みつる君に感情移入する心とひろしは「今の尺度で見るとかなりの強者」だけどそもそもファーストコンタクトでみのる君に手を差し伸べられる「いい人」だなあという心と心がいっぱいあった
・東京郊外×うさんくさい団体×超能力でモブサイコ少し思い出した
オカ研のムーを読んで共に高校時代を過ごして50〜60位のあの関係のおじさん2人、萌えでしょ…
画面の端っこでちょいちょいお互い助けあってるの良
・オトナ帝国の逆襲の令和レスポンスやりたいんだろうなのわりに着地点が「がんばれ」「人を幸せに〜」なのはちょっとそこはレスポンスとしては弱くない?と思わなくは無いけどまあ結局は自分の人生自分で奮起してやってくしかねえもんな…となった
・ちょいちょいガンダムがよぎってた
ガンダム未履修だが間接接種の頻度が高くガンダムの偉大さを感じさせられる
・エンディング、良すぎる
あの絵柄のサンボマスター、良
予防線を貼りますが、動画とかアニメとか特に専門でもなんでもないずぶの素人の意見です。
テレビでコナンのアニメがついててたまに流し見するのだけど、映像が気持ち悪くてむず痒くなる。
アニメって絵をパラパラ漫画みたいな感じで動かして、それに加えてあとから動画処理(エフェクト・カメラ移動等)を入れるふうになってると思う(そうだよね?)。
で、そのパラパラ漫画のフレームレートと動画処理のフレームレートが合ってないのがもう気持ち悪くて無理。絵は30fpsだか24fpsだかで動いてるのに、カメラのxy移動だったりアップルーズだったりは(おそらく)60fpsで超ヌルヌルなんだ。(ここで挙げた具体的な数字は特に検証していません。フレームレートが合ってないことを言いたいだけ。)
これがもう本当に気持ち悪い。でもこんなこと言ってるとそういうのにうるさい人みたいの思われるから誰にも言えない。誰かこれわかりませんか。
こういうのコナンのアニメ以外にもわりとあって、手描きアニメを仕込んだMVとかでありがち。最近でいうと「寝起きヤシの木」の0:36あたりがそうだった。なんでオブジェクトの移動だけそんなヌルヌルやねーん!いやMVも歌も可愛くて好きなんだけどどうしても気になって……。
誰かわかってほしい。
あと筆がのったから追加で言うと、これは手描きアニメではなく動画編集ソフトでつくる動画の話なんですけど、MVとかつくるとき特に理由とか自信がなければ60fpsはやめたほうがいいと思う。30とか24にするだけで一気に見栄えが良くなると思うよ。なんていうかこう、緩急がさ……(個人的な宗教)
60fpsは扱いが難しいってだけでそっちじゃないとできない表現もいっぱいあるとは思ってます。
お目汚し失礼しました。
神社は割と人通りの多い小道に面しているため、静謐、といった雰囲気はないが、左右に砂利が敷かれた短い参道を抜けて、背の高い木々に囲まれた昼でも暗い拝殿の前に来ると、「ほぼ現世、少しだけ異界」ぐらいの空気はある。
境内に一本、御神木なのか、ひときわ大きい樹が立っている。木には人の胸ぐらいの高さに縄が巻かれていて、汚れ一つない純白の紙がそこから垂れている。
…
夏になると、境内の地中から蝉が出てきて、この木に登る。羽化するために現れて木を登っていく。
蝉、しめ縄をよじ登って越えていくか、反対に縄の下であきらめて羽化すればいいのに、わざわざ縄に下げられた白い紙を羽化のポイントに定めるやつが何匹かいる。真っ白な紙の上に点々と、透明で茶色い抜け殻が残る。
しめ縄というのは、どっしりとした円柱の大木に風雪で少しささくれた縄が巻かれ、そこから新しくぱりっとした純白の紙が垂れている、そういう宗教的かつ美的な意匠なんだと思うが、まあ蝉には関係ないもんな、と思う。蝉にとっては、ちょうどいい高さにあるちょうどいい場所でしかない。
…
神社を出て100mほど、道なりにいって曲がると、今度はだいぶ由緒あるらしい寺が建っている。高名な僧が数百年前に開いた名刹らしい。
俺が住んでいるのはある有名な地方都市で、住民も多いし、観光客も大勢行き来している。しかし、この寺のお堂へと向かう広葉樹と苔だけの道を1分ほど歩いて境内に入ると、まったく何の音も気配もしなくなる。聴こえるのは、それこそ蝉の声ぐらいだ。
俺はときどき、お堂の廊下に座って、物を考えないで風景を見る。廊下は南側と北側があって、南だと境内に植えられた木、北だと目の前にそびえる岩壁を清水が伝うのが見えて、両方飽きない。
…
この前、南側に座っていたときのこと、でかい羽音を立てて蜂が一匹飛んできた。
虫が好きな人間の固有スキルの一つに、蜂が刺すやつか刺さないやつか瞬時に判断できる、というものがある。そのときも、クマバチ=刺さない、とすぐにわかったので、むしろ観察するぐらいのつもりで様子を見ていた。
蜂はぶんぶん言いながら、お堂の庇に近づいていった。
お堂の庇は木を組んだ複雑なアミアミになっている。蜂は庇のどこかの一点が気になるらしく、決まった範囲をホバリングしていたが、急にふっといなくなってしまった。
「?」と思ったが、少し観察を続けてみて、さらに驚いた。
庇に直径1cm強ぐらいの穴が空いている。ある種の蜂は木に穴を開けてそこに住むが、どうも、クマバチが巣を作るためにお堂に穴を開けてしまったらしいのである。
美しい建築も、あるいは宗教的に洗練された意匠も、生き物としてあるがままにやっている存在には太刀打ちできない。物体であることの限界というか、この場合、お堂<蜂、もしくはご神木<蝉、そういう力関係と言える。
…
風情的には少しあれかもしれないが、寺社建築をよく見ると火災報知器がついていることがある。安全面もそうだが、文化的にも重要なものだから、火には注意しているのだろう(法律的に必須なのかは知らない)。
同じことが蜂に穴を開けられた場合にも言えるはずで、歴史ある建物としては損なわれない方がいいに決まっている。
俺は寺務所に言いに行こうかと思ったが、少し考えてよした。
主な理由は「お堂に蜂が穴を開けてますよ」というところから会話を始めるのが我ながら気色悪く、億劫だったからだが、もう一つ挙げると、そもそも仏教的に、「かたちあるものが虫によって損なわれようとそれがなんだろうか」というノリなのでは、とも思ったためである。
皮相な理解だが、一切皆空の世界だし、悉有仏性の世界である(と聞く。宗派的に色々あるのかもしれないけど)。
人がつくったお堂に蜂が穴を開けようが、それでお堂が朽ちようが、お堂につくった巣で蜂が栄え、その蜂もいつか滅びようが、すべてが等価というか、はじめからそういう、かたちを結んで消えていくのを織り込んでいる世界観が仏教なんだっけ、と思った。
それで考えると、神道もいわゆる「八百万」の世界観であって、序列はあるのかもしれないが、蝉にも蝉の神…というか、「土中で数年暮らしたあと地上に出てきて飛んだり鳴いたり(オスだけ)したあとあっけなく死ぬ」神性? みたいなものがあるのかもしれない。
どういう神性だよ、という気もするが、ヨモツヒラサカに生えた桃の木とか岩とかを神と見なすのだから、蝉の神がいてもおかしくはない(おかしくはないのだけど、実際のところ、虫の神を日本神話で見た覚えはなくて気になっている。アゲハの幼虫を信仰していた宗教が大昔にあったみたいだけど)。
そういう意味では、自然界の営みによってシンボルが物質的に損なわれたり、上手く機能しなくなったりしても、一部の宗教はシステムとしてあらかじめ、そういう破壊や変質をうまく組み入れているのかもしれない。これは生命よりも宗教の法理の方が、包括的という意味で上位ということで、生命<法理であると言える。
…
で、最後にどこに着地するかというと、信仰もただの理念や言葉、ロジックだけでは生き延びたり広がったりしていくのは相当難しい、やっぱりモノ・カタチにする必要がありますな、というところに着地する。
心を寄せるためのシンボルや、目で見て手で触れられるオブジェクトがあった方がいいし、大衆の政として考えても、建築やでっけえ像とかがあった方が広めやすい。
仏像でもピラミッドでも教会でも、最低限、紙の聖典でも、とにかく、教えとして生き残り広まっていくためにはブツが必要だ。水を汲んで運むのに器がいるように、信仰にはどうしても、ブツが要る。その点では信仰<モノである。
ただ、モノはいずれ、壊れるか変形するかするわけで、俺なんかはもう、「物質を伴わなければ存立・拡大できない宗教は、戦略として物質化を伴うがゆえに、滅んだり変化することも許容し、あきらめることをどこかに織り込まないと理屈が破綻してしまう宿命でもあり、拡大と必滅の板挟み」なのでは? とさえ思う。まあ考えすぎかもしれない。
…
いずれにしても、これでお堂<蜂<信仰<お堂の三すくみが完成した。ありがたいことである。
…
正しいかは知らない。
…
何年か前に泊まった旅館は山寺のふもとにあって、せっかくだから登っていったら、と宿の人に言われ、お遍路でつくような杖をわたされた。
要らねえけどなあ、と思って登り始めたら、山道というレベルを超えて文字通りのマジ崖であり、むしろ杖あっても登れねえよ、と思ったが、どうも引っ込みがつかなくなり、気合いで登り続けた。
道がどんどん狭くなって、「落ちたら普通に死ぬなこれ」と思っていると、やがて、ほとんど空中にかかったような、ひと回りするのに10秒かからないほど小さいお堂にたどりついた。
当たり前だが、誰もいなかった。辺りは静寂に支配されていて、青い空が近くて、山の中が一望できた。
厳密に言うと誰もいなかったわけではなく、小さめのスイカぐらいあるスズメバチの巣が完全に完成してお堂の庇からぶら下がっており、スズメバチが「竣工式でーす」と言って飛び回っていた。
俺はふもとに降りてから、「蜂です」と宿の人に言った。さすがにスズメバチは言う。
ただ、蜂には当然、あれがお堂かどうかは関係のない話である。また、お堂サイドも、まあ仏教の法理に人格のようなものがあるとして、「こういう世界だからしょーがねえな」と言って苦笑する感じというか、空の近くにある静かな山中のちんまりした古刹で蜂が生命を躍動させているのに、なんかすげえ調和としか言いようのないものを感じたのを覚えているので、書いておく。🦑
http://scp-jp.wikidot.com/scp-280-jp
オブジェクトによって世界が滅んでも創作世界はなくならないという示唆になる
とすると、あの世界の「勝利」とは、自分たちの手による世界の閉鎖、になるんだろうか
あの世界の「敗北」は、SCP-5000によって物語が持ち出され、存続してしまったことだが
創作世界が、創作内の存在によって、消失するなどということがあり得るのだろうか?
そいうことを考えるのも楽しさと言えるかもしれない
http://scp-jp.wikidot.com/scp-5000
その一つとして描かれるSCP-5000の世界では、自分たちが虚構作品の登場人物である、と気づいたというもの
創作世界なのだから、なんらかのアノマリーで「救われて」しまう
終わらせるには、彼らの作ったルールに従わなければならない
「絶対に殺せない怪異」や「瞬く間に感染する病原体」などが開放される
SCP-5000は、そんな財団世界で、一人「気付き」もなく特殊技能もない、ただの一般職員の目線で語られる話だ
たまたま着込んだパワードスーツ「SCP-5000」の認識阻害能力と活動維持能力によって彼は災禍を生き延び
「Why?」
作品内では、メタ構造であることや、「気付き」の内容は明かされないが
印象的なものは「痛み」だ
痛みを感じるというのは、すなわちその世界の住人として生きている、「生存者」なのだ
普通に読むだけでも、なんかすごいことが起きていると感じることが出来るし
過去に発表されたオブジェクトが様々登場し、それが開放されたifが描かれるお祭り感もある
どちらかと言えば世界の敵のように描かれる要注意団体が、世界を守る側として描かれるのも良い
読後感として
この状況を簡単にひっくり返せるだろうアノマリーも沢山投稿されていると感じたりもしたが
それを言うのは無粋だろう
メタ構造であるかどうかというのも、ギミックの一つではあるが、作品の目的ではないような気がしている
数多のオブジェクトで何が出来るのか
描きたいのはそっちだろうなと言うもの
そういう意味では、これは純粋には「SCP」(確保、収容、保護)の話では無いのかもしれない
「別の並行世界から現れたパワードスーツ」をSCP-5000として収容するという体でSCPの体系を満たしてるとし
まぁ、この構造に忌避感を覚えるものがいてもしょうがないな、と思う作品ではあるが
私は好きだ
https://www.amazon.co.jp/dp/4297132001
https://gihyo.jp/book/2023/978-4-297-13200-2
1-1 Pythonの基本
1-3 Anacondaの導入と利用方法
2-2 コレクション(リスト/タプル/セット/ディクショナリ)
2-3 条件判断処理(if文)
2-4 繰り返し処理(for文/while文)
3-2 オブジェクトとクラス(マルチバイト文字列、ファイル入出力)
3-3 文字列操作(オブジェクト、イテレータ/ジェネレーター)
3-4 正規表現
4-1 関数の基本
4-3 モジュールの基本
5-5 Templateの利用
5-6 Modelの利用
6-3 NumPyの利用
6-4 Pandasの利用
7-2 scikit-learnとTensorFlow
7-3 scikit-learnの利用
7-4 TensorFlowの利用
『オーバーウォッチ2』に低ランクストリーマー大量発生:ブリザード「スマーフやめて」 配信者「コーチングだ」 一般プレイヤー「通報」
https://fpsjp.net/archives/457789
ゲームのランクにおいて、上のランクの奴らが低ランクを虐めるのがいいはずがない。
ここは共通認識。
しかし、今回の「ストリーマーによるGMチャレンジ(最低ランクから最高ランクにあがるチャレンジ)」(と、それに伴ってどうしてもスマーフになってしまうこと)が問題だとは思えない。
そもそもOverWatch2は、
キャリー(一人の強い人がゲームを支配する)がめちゃくちゃし辛いゲーム性で有名なのだ。
ヘッドショット一発で相手を殺せて、リスポーンなしのラウンド形式のため、
また、日本でも有名なApexでは、
某有名プレイヤーが「平均キルレート30以上をたたき出す」のが普通だったりしたが、これもまた「スマーフがしやすいゲーム」であることがわかると思う。
(Apexはロビーに60人いる。つまり、ロビーの「半分以上」をたった一人で殺し続けている)
(もちろん、彼の場合はスマーフでキルレ30以上を出したわけではない点は断っておく)
しかしOverWatch2は、
FPSでもトップクラスに敵の体力が多く、敵もリスポーンし続け、さらには「共通のオブジェクトを保持し続けるのが目的」というゲーム性のため、
「5人のチームプレイ」が他ゲームよりも圧倒的に重要視される。
よほどのランク差がないと、スマーフによるキャリーがしづらいのである。
さらにValorantは1試合が30分~40分かかるが、OW2は1試合10分。
OW2はそもそもランクを開始するまでに「カジュアルで50試合する必要がある」。
この時点で内部レートは変動する。
その上で5勝でランクが変動し、さらに飛び級もあるので、Valorantよりも短時間でランクが上がってしまうため、
記事中にも「2時間でGM達成」の例がある通り、ストリーマーによるGMチャレンジは、一瞬で低ランクを駆け抜けるのが特徴でもある。
「繰り返し低ランク狩りを楽しむ(そのために、低ランクにい続けるためにわざとトロール負けをしてランクを下げる)」スマーフプレイヤーであって、
正直、ストリーマーによる害そのものはあまり存在しないのではないかと思う。
(チャレンジ中のストリーマーに当たった低ランクプレイヤーはもちろん文句を言ったり通報していいと思うが)
ストリーマーという有名人による一般プレイヤー(でスマーフする奴)への影響であって、チャレンジ動画によるスマーフ行為そのものではないはず。
そもそも、「多くの(ほぼ全ての)OW2コミュニティが常に不満を表明している」のは、「運営によるゴミ格差マッチング」である。
「ダイヤモンド帯にGMプレイヤーのスマーフがいる」ことを問題視している人がいるが、
「ダイヤ帯がGM帯と一緒になるゴミマッチが常態化している」のだ。
この記事では「なぜかその点には一切触れず」、ストリーマーだけを批判する構図になっている。
ストリーマーによる「教育」という言葉についても、誤解を与える書き方しかしていない点。
あたかも強プレイヤーに轢き殺されることを「それも勉強だ」と煽っているかのように書いているが、実際には全く違う。
記事のなかで槍玉にあがっているAwkwardというストリーマーは、
チャレンジ動画中は本当にずっと(例えば8時間なら延々8時間)、「どうやったらそのランクから上がれるのか」のコツを低ランクプレイヤー向けに解説しながらプレイしている。
リスナーから「お前のエイムがいいだけ」と批判されたときには、
エイム感度を何倍にもあげたり、逆に何分の一にも下げて、「エイム力がない状態でも立ち回りで上達できる」ことを動画で解説している。
また、実際に低ランク帯にコーチングするアカデミーを主催しており、それを動画化したものもある。
OW2はチームプレイが重要であるがゆえに「味方プレイヤーのせいにしがち」なのだが、
Awkwardは「他人のせいにせず、自分の力だけでランクを上がる重要性」を強調するのも特徴。
「強いプレイヤーと戦うことに喜びを感じるべき」という彼の言葉も、それを含めた文脈なのである。
OW2でマジのトップオブトッププレイヤーでありながら、Awkwardはきちんと初心者のことを考え、必要なことを「教育」し続けているストリーマーなのだ。
コミュニティや初心者にとって大事な働きをしている彼を悪質配信者のように記事にすることに対して、本当に怒りを感じる。
加えて、Dafranというプレイヤーについても「元はスマーフを否定していたのに寝返った」かのような書き方をしているが、
彼がチャレンジをしていることが「そもそもOW2において、GMチャレンジによるスマーフの影響が少ない」ことの証明だと思う。
さらにその上の「トップ500(その名の通り上位500人)を目指すチャレンジ」が特徴である。
こうした誤解を与えるように情報を作り上げているのが、あの記事の悪質さである。
ランクのあるゲームにおいて、「スマーフ」が大きな問題であることに異論はない。
あまり同じような感想のレビューが無かったので共感できる人を探している。
この作品からは、幻想や理想の世界から現実に引き戻そうというメッセージ性を感じた。「意味がありそうなことも重要ではなかったりする」、「価値観は人それぞれ正義も悪もない」、「個人の想像力や努力が世界に大きな影響を与えることはない」。こんなメッセージが散りばめられているのに、重く押し付けるわけでもない。そんな雰囲気がとても心地よかった。私が好きだったシーンを挙げる。
門と墓があり、墓には「我を学ぶものは死す」と書かれている。ファンタジーの世界では危険なオブジェクトである。ペリカンという不可抗力に巻き込まれて門を開けてしまった。門を開けてしまったがゆえに何か恐ろしい者が目覚め命からがら逃げ出す、という鉄板な流れを期待するものの、そうはならない。キリコが炎を使った謎の儀式をして、墓を見た方向のまま後退する。結局何も起こらない。
「門を開けてはならない」、「怒りを鎮めるには儀式が必要」、「儀式には細かい作法がある」、現実にもこんな類の知らない人には全く理解できないルールが沢山ある。守ってもいいし守らなくてもいい。世の中には様々な価値観がある。眞人は肯定も否定もない。そんな世界で生きていくことを考えさせられる。
眞人は何故か机の下で寝ている。自分の周りには人形が置かれていて、何故か触れてはいけないというルールがある。しかし眞人はルールを破って触れてしまう。この時点で薄々勘付く。何も起こらないと。
何故か自分で自分によくわからない制約を課す。理由はない、面白いからだ。狭い空間で人形に触れないで外に出られたら面白い。成功したら自分を褒める。失敗したら悔しがる。それだけ。
墓のシーンと似ている。子供の1人遊びも大人の儀式も根は同じか。そんな感覚を持った。
ワラワラという赤ちゃんの源である可愛いキャラクターがペリカンに食べられそうになる。そこにヒミがやってきてワラワラもろとも焼き尽くす。全滅するより誰かが助かった方がいい。ペリカンは生きるためにワラワラを食べるしかない。
ありきたりな童話のシーンといえばそうなのだが、個人的に好きだったのは焼き尽くしているのが母親のヒミということだ。
戦争で言えば爆撃機もしくはアメリカをイメージするその役割を、空襲で死ぬ予定の母親がやっているのだ。本人に悪気は無い。良かれと思ってやっている。将来の生命のために、今ある生命を焼いている。その先には因果応報のような結末が待っている。このバランスが面白い。
アオサギの弱点は羽根である。アオサギ自身がそう言っていた。羽根を見せられると慌てた雰囲気になる。そんな中唐突に羽根が裂けてしまう。しかし何も起こらない。心の中で突っ込んだ人は多いんじゃないだろうか。
弱点が本当だったのか嘘だったのかはよくわからない。眞人もアオサギもそれに言及しない。そう、この時点で2人はすでに仲良くなっていて、弱点ゲームをずっとやっていたのだ。懐かしい気持ちになった。
ここまではフラグが立ったのに何も起こらなかったというものだが、産屋に入ってはいけないという制約は、入った後に知らされた。今度は過剰な罰を受ける。もはや謎なレベルだ。このシーンは最も現実に近い。よくわからない知らない人が考えた謎ルールで特大の罰を受けてしまう事が現実にはたくさんある。
眞人はそんかセリフを心で叫んだかもしれない。眞人には同情するが、そうやって大人になっていくんだよ、頑張れ!と応援したくなる。これは眞人の成長ストーリーだ。現実というファンタジーの中でどう生きていくのかを考えさせる。構造が面白い。
この叔父さんは可哀想だ。理想的な世界を自分が維持していると思っている。私のおかげであと1日保つ事ができる。そう言う使命感を持って積み木をしてたらしい。しかし、彼の努力は誰も知らないし、現実世界には何も影響を与えていない。そのことに本人は気がついているのだろうか。ぶっちゃけ小学生でも悪意のない積み木を積み上げても理想的な世界にはならないことは容易にわかるだろう。
その後、ファンタジーの世界が崩壊しても、世の中は変わらなかった。戦争が始まりやがて終戦する。1人の想像力、努力だけでは世界は変わらない。そんな世界でどう生きるか。そんな事を考えさせられる。眞人の目にはどう映ったのだろうか。尊敬、軽蔑、哀れみ、複雑な感情があっただろう。
ファンタジー世界の崩壊と、終戦後の家族の様子を見れば、メッセージは全て受け取った気持ちになった。もうこれ以上のメッセージはいらない、そんなタイミングでのエンドロール。たまらん!
皆さんはどのシーンが好きでしたか?
54ページに参考文献が掲載されていた。
京都大学のPython入門講座の補助教材として推奨されているようだ。
Python に関する書籍は近年,数多く出版されていて,どれを買っていいのか迷うかと思います.
以下,いくつか挙げておきます.
[asin:4873119324] 2021/3/22
データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。
本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。
プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。
この本は、薄い入門書じゃなくて、わりと厚めの詳細な説明が書かれている本。
リファレンス的に使うような本でもあるので、まったくプログラミングをやったことがない本当の初心者だと、この本を読んで理解するのは大変なんじゃないかと思う。
すでに他のプログラミング言語を習得しているプログラマーで、Pythonの言語仕様を1冊の本で把握した人には、本書は向いていると思う。
1冊目にこれを持ってくるあたり、受験勉強で知識の丸暗記に長けたガリ勉ならOKかもしれないが、勉強が得意じゃない人にはちょっといじわるなチョイスではないか?と穿ってしまった。
一応持っておいて普段は本棚の飾りにしつつも、必要なときに辞典的に使えばいいのではないか?と思う。
自分なら、この本は2冊目以降に推奨するだろう。(1冊目には勧めない)
[asin:479738946X] 2016/12/22
Python入門書のデファクトスタンダードが4年ぶりに大改訂。
近年、Pythonの利用が、機械学習、AIなどの科学技術分野へ大きく広がっている現状を踏まえて、すべてのパートに手を入れいくつかの新章を追加しました。
次の10年を担うPythonプログラマを養成するための一冊。
Chapter02 Pythonでプログラミングをはじめよう
Chapter05 Pythonと関数型プログラミング
Chapter07 クラスの継承と高度なオブジェクト指向機能
Chapter08 モジュール
Chapter13 Pythan2
・AnacondaやJupyter Notebookなど、Pythonの最新開発環境に対応
イラストや図解を多用しているので、一見すると初心者向けのように見えるけど、1冊目としてはどうだろうか?
やはり、この本も2冊目以降に読んだ方が良い本になってしまうだろうか?
買いたい人は、本屋で内容を確認してから買った方が良いと思う。
[asin:484438015X] 2016/3/4
本書で解説するPythonは現在もっとも注目を集めているプログラミング言語のひとつです。
プログラミング言語の人気度の目安となるPYPLでは、2016年1月の時点でJavaに続いて2位に位置していることからも、その人気のほどが伺えるでしょう。
その大きな理由として、Pythonがパワフルなオブジェクト指向のスクリプト言語でありながら、わかりやすく、すっきりしたプログラムを作成可能であることがあげられます。
文法もシンプルで、これからプログラミングを始める方にとっても最適な言語です。
現在、Pythonは、Python 2.x系からPython3.x系への移行時期にあります。
Python 3.xでは、さまざま機能強化が行われ、さらに標準の文字コードがユニコードベースに変更され、日本語も容易に扱えるようになったことから、日本においてもさらなる普及が期待されるでしょう。
本書は、プログラミングの初心者を対象にしたPython 3の入門書です。
変数の取り扱いから、リスト、タプルといったPython固有のデータの操作、制御構造や関数などについて具体的でかつ短いサンプルを多数提示しながら、初心者でも基礎から学んでいけるように拝領したつもりです。
また、インデントでブロックを表現する点などなど、他のメジャーな言語と比べてユニークな部分も丁寧に説明しています。
前半部分で基本を説明した後は、ファーストクラスオブジェクトとしての関数の活用方法、オリジナルのクラスの作成などといった多少高度な項目を丁寧に説明していきます。
Chap1 Pythonプログラミングをはじめるための予備知識
Chap2 Pythonの基礎について学ぼう
Chap3 プログラムの流れを変えたり処理を繰り返したりする
Amazonでサンプルページを見たら、お勧めのエディターとして「Atom」が紹介されていた。
今から7年前ならAtomでも良かったのかもしれないけど、今ならVisual Studio Codeの方が使い勝手が良いのではないだろうか?
Pythonの文法の説明に関しては悪くないと思うけど、自分なら読まないかもしれない。
[asin:4798058327] 2019/5/25
■きちんと学びたい人のための最短教科書。■
■Python開発者に求められる言語、ツール、ライブラリなどの知識を、1冊で素早く学べます。■
(2) 豊富な例題で頭と手を刺激しながら学べる。
可もなく不可もなくというかんじで、ありがちな入門書であるように見えた。
同じ著者の本なら、[asin:4815607648] Python[完全]入門 (2021/1/22) の方が良いのではないか?
発売年もこっちの方が新しいし、受験参考書っぽい作りで、各項目の要点が頭に入ってきやすい。
Amazonでサンプルページを見て、自分の好みの方を選んだら良いと思う。
この本なら1冊目でもお勧めできそうだ。
(ただし、自分の場合はすでにオンライン教材を入門を済ませてしまったので、今さら読む必要はないけど)
時間があったら、図書館で借りてレビューしてみたい。(買うとは言ってない)
[asin:4800711592] 2017/4/8
はじめは誰でも未経験者!
本書はプログラミング言語「Python」の「いちばんやさしい」入門書です。
○「興味はあるけど、難しそう」と尻込みしている人
○「スキルアップのためにPythonを学びたい」という経験者
そんなPythonビギナーに向けて、プログラムの根本概念、基礎知識、基本文法をきっちり端折らずに説明します!
さらには、「簡単な計算」「ゲームの作成」「GUIアプリ」「モジュールの活用」など、
実際に手を動かしながらの演習を通して、学んだことがしっかり身につくように構成しました。
本書を一通り終えれば、Pythonのみならず、プログラミングの基本がバッチリ学べます。
この著者の本は、他の本なら持っている。
簡単な内容しか説明してないけど、他の本なら挫折してしまうようなガチの初心者でも、この本なら理解できるだろう。多分、中学生ぐらいが読んでも理解できると思う。
自分には物足りないような気がするので敢えて読もうとは思わないが、1冊目にお勧めするチョイスとしては間違ってないと思う。
[asin:4822292274] 2018/2/24
本書は「Pythonだけ」を学ぶ本ではありません。
Pythonを使ってプログラミングを紹介していますが、伝えたい内容はPythonに限らない「プログラミング全般」の知識です。
Pythonプログラミングの基本を学べるだけでなく、プログラマとして必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。
「プログラミングを始めたい」「できればその道でプロを目指してみたい」――そんな読者にオススメです。
本書の著者、コーリー・アルソフ(Cory Althoff)は、「独学プログラマー」です。
本書は、彼が独学で、ゼロからプログラミングを学んだ体験に基づいて書かれました。
プログラミングを独学で身に付けるために、著者がPythonを通して学んだエッセンスが書かれています。
彼の独学プログラマーとしての学び方は、多くの人に支持されています。
目次については、日経BOOKプラスの本書のページをご覧ください。
そこでは目次ページだけをまとめたPDFファイルや、本書に登場するリンクをまとめたPDFファイル、補足もご連絡いただけます。
出た~~~!!!
:
別にひねくれている訳じゃなくて、もっと他に良い本が出てきたから。
ハズレではないので、この本を進めときゃいいでしょ的な安易さは拭えないが、あえてケチをつけるならば、各項目が「広く浅く」で物足りなさが残るから。
中途半端な本という印象が拭えない。
プログラミングを全くやったことがない初心者が、Pythonの文法を覚えた後、脱入門で中級へステップアップするときの足掛かりとしては、本書は良い指南書になるだろう。
鉄板の本なので、時間があれば後で図書館で借りて目を通してみたい。(買うとは言ってない)
[asin:4297105144] 2019/4/17
プログラミングをはじめる前に読む1冊!
プログラミングブームやエンジニア不足を背景にプログラミングの独習をする方が増えています。
いざ、Webで人気の講座を受講してみたり、店頭で平積みになっているベストセラープログラミング書籍を手にしたものの、どれも理解できずに挫折してしまった、という方も多いのではないでしょうか。
コンピュータやプログラミングの解説がわからないのは、次のような知識の不足が要因です。
これらは専門書やインターネットで検索上位にくるWeb記事では前提知識として省略されることが多く「読み進めるにはほかの資料が必要になった」なんてことがよくあります。
そこで、本書ではプログラミング独習者がつまずきやすい知識を厳選して取り上げ、初心者の分からなかったをサポートします。
図解を多用し、「サーバーとクライアント」、「コンパイラとインタプリタ」のように用語を比較しながら学習することで、いままで曖昧になっていた知識が整理され理解が進みます。
自分の記憶に間違いがなければ、この本は1回図書館で借りて読んだことがあるような気がする。(表紙を見ておぼろげに思い出した)
この本は、中学生とか高校生レベルの知識しかない人が、学校の「情報」の授業の補助教材として使うようなイメージがある。
プログラミング以前の疑問として、そもそもコンピューター(電子計算機)って何だろう?というような素朴な疑問を持つ人が、ハードウェアなどの仕組みを知りたいなら、情報処理技術者試験の教科書を読んだ方が手っ取り早いと思う。
大学受験を経験して、知識の丸暗記に慣れている人なら、これらの資格試験の教科書の方が、要点がコンパクトにまとまっていて、吸収しやすいのではないか?
とりあえず、Pythonとは直接関係なさそうなので、今の私なら読まない。
パソコンは自作できるし、ハードウェアの知識もある程度あるので、本書を読む時間があったら、他の本を読むだろう。
本書を読みたい人は、自己責任で読んで欲しい。
Python JapanのWebサイトにある入門講座をやってみました。
https://www.python.jp/train/index.html
量は多くなかったので数日あれば学べます。(ゆっくりやって4日ほどかかった)
https://anond.hatelabo.jp/20230630172440
でも、これはあくまでも入門の段階であり、実用的なプログラムを書くためには、まだまだ必要な知識が足りません。
元増田もプログラミングを勉強して、一度プログラマーの仕事をやってみてはいかがですか?
そしたら、開発部門の連中が何をやっているのか?何を考えているのか?がよく分かるようになるでしょう。
11. 演習
https://www.python.jp/train/exercise/index.html
以下、気になったところ。
プロシージャ (procedure)とは、プログラミングにおいて複数の処理を一つにまとめたものをいう。
一連の処理を意味を持った一まとまりにすることで、再利用性が高まり、プログラム中に繰り返して現れる処理を1ヶ所で記述でき、プログラムの保守、管理を容易にする。
呼び出し関係は通常階層構造をなし、その最上位にある、プログラム全体のエントリーポイントを含むルーチンをメインルーチン、呼び出されるものをサブルーチンと言う。
乱数を生成する
Pythonでは、乱数を生成するときには random モジュールを インポート します。
インポートしたモジュールの関数は、モジュール名.関数名() の形式で呼び出します。
randrange() は、
random.randrange(開始値, 終了値)
cf. リファクタリング (プログラミング) - Wikipedia
リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。
また、いくつかのリファクタリング手法の総称としても使われる。
ただし、十分に確立された技術とはいえず、また「リファクタリング」という言葉に厳密な定義があるわけではない。
主なリファクタリング
Pythonの慣例で、定数値の変数名は小文字のboard_size ではなく、BOARD_SIZE のようにすべて大文字にします。
プログラム中にいきなり出てくる意味のわからない数字は、一般に マジックナンバー といいます。
基本的には、マジックナンバーは、値を直接書くのではなく、その値の意味がわかるように、常に 変数に代入してから利用するようにします。
マジックナンバーを変数に代入せず、あっちこっちで使ってしまうと、あとでその値の意味がわからなくなってしまったり、値を変更するときに修正漏れが発生したりします。
cf. マジックナンバー (プログラム) - Wikipedia
プログラムにおけるマジックナンバー(英: magic number、魔法の数字)とは、何らかの識別子もしくは定数として用いられる、プログラムのソースコード中に書かれた具体的な数値である。
そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。
次のような理由で、マジックナンバーはプログラム中に含まれないことが好ましいとされる。
マジックナンバーを避けるため、マジックナンバーが書いてある箇所を定数や列挙型に置き換えるといった処置がとられる。
ハードコーディング(英語: hard coding)とは、本来プログラム中に記述すべきでないリソース(エラーメッセージなど)を、直接ソースコード中に埋め込むことである。
これらは本来、外部ソースから取得するか、実行時に生成するべきものであり、これをソフトコーディング(英語: soft coding)という。
今なら、高機能なIDEを使えば、力技でハードコーディングを書き換えることも可能?
元のソースコードでは、スイカとプレイヤーの位置を、x座標とy座標それぞれ別々の変数として保持しています。
しかし、スイカやプレイヤーの座標は本来一つの情報ですので、x座標とy座標で2つの変数に分ける意味はありません。
こういった場合、
(x座標, y座標)
主となる関数(ここでは suika_wari() ) と、
主となる関数が利用する補助的な関数 (ここではgenerate_position()、calc_distance()、 move_position())
を組み合わせて全体を構成する手法は、プログラムの開発でもっとも基礎的で重要なテクニックです。
エントリーポイントとは、プログラムを実行するうえで、プログラムやサブルーチンの実行を開始する場所のこと。
プログラム全体のエントリーポイントとなる場所を含むルーチンがメインルーチンである。
例えば、C言語の標準では、mainという名前の関数(の先頭)がエントリーポイントであり、各関数のエントリーポイントは、それぞれの関数の先頭である。
以上で、Pythonの入門が終わった。
この教材のボリュームなら、数日で学習できる。土日とかに集中してやればサッと通過できるはず?
Pythonの動作は、コード片をColabにコピペして実行すれば確認できるので楽だった。(あまり手を動かさなくても学べる)
https://www.python.jp/train/tuple/index.html
以下、気になったところ。
タプル
Pythonでは、複数のデータの組み合わせから構成されているデータを表現する場合、タプル という種類のオブジェクトを利用します。
タプルの書き方
タプルは、要素となるデータを「 , 」で区切って記述できますが、「, 」だけだとちょっと見にくいので、通常は全体を丸括弧 () で囲んで記述します。
ningyocho = (35.686321, 139.782211)
kotoshi = ('平成', 2)
この括弧は必須ではありませんが、括弧なしでは読みにくく、間違いの元になる場合もあるので、通常は括弧をつけて記述する慣習になっています。
タプルオブジェクトの要素を参照する
タプルオブジェクトに登録したオブジェクトは、リスト と同じように 要素の順番 を指定して参照できます。
タプルオブジェクト[要素の順番]
== 演算子でタプル同士を比較すると、同じ値のタプルならTrue を返します。
!= 演算子でタプル同士を比較すると、異なる値のタプルなら True、等しい値なら False を返します。
タプル同士の値の比較は、先頭の要素から順番に同じインデックス同士の値を比較して、先に小さい値となったタプルが小さい値となります。
比較するタプル同士の長さが異なる場合、短いタプルの要素と長いタプルの要素を比較してすべて等しければ、短い要素のほうが小さい値となります。
タプルオブジェクトの場合、リストオブジェクトのように要素を変更することはできません。
タプルオブジェクトの要素を変更する場合は、リストオブジェクトのように要素を変更するのではなく、あたらしくタプルオブジェクト全体を作り直す必要があります。
タプルとリスト
リストとタプルはどのように使い分ければよいのでしょうか?
タプルは複数のデータの組み合わせから構成されているデータのためのオブジェクトです。
複数の要素から構成される独立したデータ をあらわすときは、タプルを使用します。
固定的な形式をもつ独立したデータではなく、不定個数の独立したデータをたくさん集約してまとめておきたい、という用途には、リストが適しています。
数値オブジェクトは、物質の重さや長さなど、いろいろなデータの値を直接あらわすオブジェクトです。
一方、 リストや辞書は、直接的なデータではなく、いろいろなデータを登録して、集約しておくために使われるオブジェクトです。
リストやタプル、辞書のように、他のオブジェクトを集約することを目的とした種類のオブジェクトのことを、
コレクション (Collection)
と呼びます。
コレクションに登録されている要素の数は、len() 関数で調べられます。
コレクションは、比較演算子 の == 演算子や != 演算子で、値が等しいかどうかを判定できます。
in 演算子を使うと、コレクションに値が登録されているかどうかを調べられます。
in 演算子は < や == のような 比較演算子 の一種で、
値 in コレクション
という式は、指定した値がコレクションに登録されていれば True を、登録されていなければ False を返します。
辞書オブジェクトの場合、in 演算子は指定した キー が 登録されているかどうかを調べます。
文字列オブジェクトの場合も、in 演算子で中に文字が含まれているかどうかを確認できます。
コレクションは、 for 文に指定して、コレクションの要素ごとに、for 文に記述した処理を実行できます。
辞書オブジェクトを for 文に指定すると、辞書のすべての キー を取り出して、for文に指定した処理を行います。
リスト・タプル・文字列はいずれも コレクション に属するオブジェクトですが、コレクションの一種で、整数値のインデックスを指定して要素を参照できるオブジェクトのことを、
シーケンス (Sequence)
と呼びます。
リストやタプルなどのオブジェクトは、コレクションの一種で、他のオブジェクトを登録し、集約できるオブジェクトです。
シーケンスとは、コレクションのうちで、集約する要素が一定の順序で並んでいて、その順序(インデックス)を使ってその要素を指定できる種類のオブジェクトのことを指します。
コレクションに属するオブジェクトでも、リストやタプルとは違って、辞書 は、順序を指定して要素を指定することはできません。
タプルやリスト、文字列などのシーケンスオブジェクトは、 <、 <=、>、>= などの演算子で、値の大小を判定できます。
シーケンスではない、辞書オブジェクトなどのコンテナオブジェクトは、 < などによる大小の比較はできません。比較すると、エラーとなります。
コレクションのアンパック
代入式の右辺がコレクションなどの場合には、左辺に複数の変数名を指定して、コレクションの要素を一括して変数に代入できます。
(例)
list_obj = [1, 2, 3]
var1, var2, var3 = list_obj # var1, var2, var3 に、list_objの要素を順に代入
print(var1, var2, var3)
1 2 3
変数 var1、var2、var3 には、右辺のリストオブジェクトの要素が一つずつ順番に代入されます。
この場合、var1 には list_obj の最初の要素である 1が、var2、var3 には、それぞれ2番目と3番目になる 2 と 3 が代入されます。
アンパックを利用した代入は、Pythonプログラミングで頻繁に利用されます。
アンパックは、複数の値を戻り値とする 関数 でよく使われます。
関数で計算した結果は、return文 を使って、戻り値として返します。
しかし、関数 total_and_average() は合計値と平均値の2つを計算しますが、 return文 に指定できる戻り値は一つだけです。
(例)
def total_and_average(values):
total = 0 # 合計値の初期値 0 を設定
average = total / num
return (total, average)
戻り値としてタプルを使い、複数の値を一度に返す関数はとてもよく使われます。
テクニックとして覚えておきましょう。
https://www.python.jp/train/dict/index.html
以下、気になったところ。
あるデータに対応する関連データを登録できるような仕組みとして、Pythonは 辞書オブジェクト を用意しています。
辞書オブジェクトには、apple と りんご のような、2つの値を組み合わせた情報を登録できます。
apple と りんご の組み合わせを登録した辞書オブジェクトで、apple を検索すると、本物の英和辞典とおなじように りんご が返ってきます。
これらの基本的なデータ構造は、Pythonだけに限らず、他のプログラミング言語でも用意されている機能である。
キーと値
english_words = {"apple": "りんご", "orange": "みかん", "peach": "もも"}
print(english_words)
辞書の参照
辞書オブジェクトに登録した要素は、次のような式で参照できます。
辞書に登録されていない値のキーを指定すると、次のようにKeyError というエラーが発生します。
english_words['banana']
---------------------------------------------------------------------------
KeyError
要素の追加と置き換え
辞書オブジェクトに要素を追加するときは、次のように記述します。
要素の削除
辞書オブジェクトに登録されている要素を削除するときには、del 文を使います。
辞書にキーが登録されているかどうか調べるときは、in 演算子を使います。
in 演算子は < や == のような 比較演算子 の一種で、
という式は、指定したキー値が辞書オブジェクトに登録されていれば True を、登録されていなければ False を返します。
https://www.python.jp/train/list/index.html
以下、気になったところ。
Pythonでは、整数や実数、文字列などのデータのことを、オブジェクト(Object) という用語で呼びます。
Objectは英語で「物」とか「対象」とかいう意味の言葉ですが、Pythonでは、Pythonが操作するいろいろな種類のデータやプログラムなどのことを、まとめて オブジェクト と呼びます。
たとえば、数字の2は、整数型のオブジェクト、文字列の abc は、文字列型のオブジェクト という呼び方をします。
def foo():
print("hi!")
演算子やwhile文 ・ if文 などはPythonに対する実行命令で、実体のあるオブジェクトではありません。
数値などの値のように、変数に代入したり、関数のように関数名を指定したりと、プログラマが名前をつけられるものはオブジェクト、
と考えると良いと思います。
この説明だけでは、Pythonのオブジェクトについて曖昧さが残りスッキリしない。
Pythonの言語仕様で、オブジェクトはどうなっているのか?検索してみた。
cf. [Python入門]Pythonのオブジェクトとは - ITmedia
https://atmarkit.itmedia.co.jp/ait/articles/1907/12/news019.html
Python公式サイトにあるドキュメント「オブジェクト、値、および型」では、Pythonにおけるオブジェクトとは「データを抽象的に表したもの」と表現されている。
つまり、Pythonで書いたプログラムが操作したり、処理したりするデータのことを「オブジェクト」という。
型 説明 int 「整数」を表現する型 float 「浮動小数点数」を表現する型 bool TrueかFalseのいずれかの値を取り、真偽値(条件が成立しているかどうか)を表現する型 str Unicodeのコードポイント値を任意の数だけ並べた「文字列」を表現する型(変更不可能) list 任意の型の要素を任意の数だけ並べた「リスト」を表現する型(変更可能) tuple 任意の型の要素を任意の数だけ並べた「タプル」を表現する型(変更不可能) dict キーと値の組からなる要素を任意の数だけ並べた「辞書」を表現する型(変更可能) set/frozenset 任意の型の要素を任意の数だけ並べた順序のない「集合」を表現する型(setは変更可能。frozensetは変更不可能) function 「関数」を表現する型 module 「モジュール」や「パッケージ」を表現する型
cf. 3. データモデル — Python 3.11.4 ドキュメント
https://docs.python.org/ja/3/reference/datamodel.html#objects-values-and-types
Python における オブジェクト (object) とは、データを抽象的に表したものです。
Python プログラムにおけるデータは全て、オブジェクトまたはオブジェクト間の関係として表されます。
(ある意味では、プログラムコードもまたオブジェクトとして表されます。これはフォン・ノイマン: Von Neumann の "プログラム記憶方式コンピュータ: stored program computer" のモデルに適合します。)
要するにPythonのプログラムの中で処理(操作)できる対象すべてがデータであり、なおかつオブジェクトである」ということらしい。
上記の型の表を見ると、Pythonには「function」という関数オブジェクトもあるので、関数それ自体を1つのデータとして扱うことも可能。
第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使用できる対象のことである。
ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクトを意味しない。
この言葉は1960年代にクリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。
決まった順番に並んだ値で構成される情報は、Pythonでは リストオブジェクト で表現します。
リストオブジェクトは、他のオブジェクトを 要素 として登録できるオブジェクトで、他のプログラミング言語では配列などと呼ばれることもあります。
リストオブジェクトは、次のように 角カッコ [ と ] で作成します。
[要素1, 要素2, ...]
要素の参照
リストオブジェクトに登録した要素は、次のような式で参照できます。
インデックス(添字)
インデックス(添字)は、1から始まるのではなく、0から始まる点に注意が必要。
要素の挿入
要素の置き換え
登録済みの要素を別の要素に置き換えるときは、次のように記述します。
要素の削除
リストオブジェクトに登録されている要素を削除するときには、del 文を使います。
リストオブジェクトから、指定したインデックスの要素を削除します。
del 文で指定できる要素のインデックスは、要素の置き換え と同じように、リストオブジェクトの 最後のインデックス値 までです。
リストオブジェクトの要素数を教えてくれる、len() という関数があります
関数 len() は、引数にリストオブジェクトを指定すると、その要素数を返してくれる関数です。
4
リストの要素を順番に参照する処理は非常によく行われるため、もっと簡単に書けるように、for 文 という、専用の文法が用意されています。
for文の書き方
処理1
処理2
...
for 文は、リストオブジェクト から要素を一つずつ順番に取り出し、それぞれの要素ごとに、for 文に続けて記述した処理を、一度ずつ実行します。