学習忘備録

学習のアウトプットや感じた事を発信していきます

2022.04.15GameProductionBasic 2022.04.15 授業内容

この記事は職業訓練校の受業の内容の要点をまとめたものです。 職業訓練校を検討されている方が居たら参考にしてください。

GameProductionBasic

流れ

ガイダンス

最近のゲーム業界について

ゲーム(電源ゲーム)をプレイする媒体

媒体の歴史

☆インターネットを使用しているかしていないかで別れる

ゲーム制作の歴史

  • かつてのゲーム制作
    • 人員、費用、期間が大きい
    • 個人でゲームを制作して、販売する...というのは困難
  • 最近のゲーム制作
    • 小規模なゲームなら少人数で制作できる
    • 配信で販売も容易になった

ゲーム開発現場

  • ファーストパーティ
  • セカンドパーティ
    • ファーストパーティの関連会社
    • 言葉としての限定が曖昧である
  • サードパーティ
    • 上記に当てはまらない、ゲーム機のゲームを販売する会社
    • カプコンコナミ...
  • パブリッシャー
    • パソコンやスマホでのサードパティ
  • デベロッパ
    • ゲームの開発を担当する会社
    • 販売はしない

ゲームができるまで

複数人でゲームを作る場合、どのような分担(職種)があるだろう?

  • テスター、バグチェック / モニター / デバッガー
  • プランナー(企画、シナリオ、権利・法律関係)
    • ゲームの企画、仕様など担当
  • ハード制作
  • ソフト制作
  • 音楽制作(サウンドクリエイター、音楽、効果音、声優)
    • コンポーザー
      • 音楽担当
  • プロデューサー
    • 作品全体のリーダー的存在
  • ディレクター
    • 開発のリーダー
  • デザイナー(グラフィック、モデラーモーションアクター)
    • グラフィッカー
      • ビジュアル面の担当
  • プログラマー
  • 営業
  • マーケティング

ゲームデザインとゲームが出来るまで

  • ①プラン
    • ゲームの概要を考える
  • ②企画書
    • ゲームの面白さを伝えるための資料を作成する
  • ③プロット
    • ゲーム、シナリオの流れをまとめたものを作成する
  • ④仕様書
    • 各開発担当が制作できるように細かな内容を記載する
  • ⑤制作
    • グラフィック、サウンド、プログラムなど、各担当が制作する
  • ⑥テスト
    • ゲームが正常に動作するかテスト、デバッグを行う
  • (番外)プロモーション
    • ゲームの面白さが伝わるようにPRする

クラッチ導入

クラッチとは

Scratch財団がマサチューセッツ工科大学メディアラボ ライフロングキンダーガーデングループ(MIT Media Lab Lifelong Kindergarten Group)と共同開発する、8〜16才のユーザーをメインターゲットにすえた無料の教育プログラミング言語及びその開発環境である。

  • クラッチ導入
  • アカウント登録

  • x, y座標への移動

  • 背景の変更
  • スプライトの変更
    • スプライトの大きさ
    • スプライトの名前
  • ファイルの保存
  • スプライト2体以上での作成
  • コスチュームを使ったアニメーション
    • 次のコスチュームにする、で繰り返し処理
      • 向きで操作する
  • コスチュームの複製
    • 編集

確認テスト

  • ゲーム制作の途中段階で作成する、「ゲームの面白さを伝えるための資料」に当たるもの
    • 企画書
  • プロット
    • 筋立て、構成のこと

2022.04.14 PythonProgrammingA 授業内容

この記事は職業訓練校の受業の内容の要点をまとめたものです。 職業訓練校を検討されている方が居たら参考にしてください。

PythonProgrammingA

作業環境の構築

  • Visual Stadio Codeのインストール
  • Python3.10.4のインストール
    • Python3.10(安定版の最新)の利用
    • インストール時、path~をチェック(システム権限関係?)
  • ターミナルでpythonでエンター
  • 拡張機能
    • Python Extension Pack
    • Japanese Language ~

ガイダンス

学期の目標

  • プログラムの仕組みを理解できる。
  • 数値計算をプログラムで記述することができる。
  • 外部ライブラリを利用することができる。

年度の目標

  • Python言語を使用して「自分が解決したい課題を解決できる」

教材

Pythonドキュメントサイト(内のチュートリアル)

Pythonプログラミングをやってみよう

  • ターミナルでpythonでエンター
    • 終了はquit()
  • インタラクティブモード
    • 対話
  • 全角スペースに気を付けよう
  • 四則演算
    • // -> 割った小数点を切り捨て
    • 変数を使った四則演算
    • 「_」アンダースコア -> 一つ前の計算結果
  • 文字列の計算
    • [] -> 配列から取り出す
      • month = 'April'
      • month[2] -> r
    • len -> 文字列の長さを表示する

XML外部実体参照

書籍を読んで

www.amazon.co.jp

こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。

XML外部実体参照(XXE)

概要

XMLには外部実体参照という機能があり、外部ファイルの内容を取り込むことができる。 XMLデータを外部から受け取るプログラムは、外部実体参照の形でWebサーバ内部のファイルなどを不正に読み取られる可能性がある。 この攻撃をXML実体参照攻撃と呼び、XML外部実体参照ができてしまう脆弱性XML外部実体参照脆弱性と呼ぶ。 ※XML外部実体参照という用語は長いので、XXE(XML External Entity)と省略する。

脆弱性が生まれる原因

XMLの外部実体参照を使うとXML中に外部のファイルを流し込むことが出来ることはXMLが元々持つ機能。 従って、XXEはXMLの機能を悪用するものであり、プログラムにコーディング上のバグがあるというものではない。

対策

XXEはXMLの機能を悪用するものなので、外部実体参照を禁止する指定を行うことが基本となる。 PHPの場合以下のいずれかの方法でXXE対策が可能。

XMLの代わりにJSONを用いる

外部から与えられた信頼できないXMLを解析しないことでXXE対策となる。 しかし、XMLは外部とのデータ交換に用いられることも多いため、単にXMLの受け取りをやめるというのは難しい場合がある。 このため、外部とのデータ交換には、XMLの代わりにJSONを用いる方が安全である。 JSONの場合、安全でないデシリアライゼーションやXXEなどの問題は通常発生しない。 ただし、SOAPのようにプロトコルXMLを採用している場合には、XMLをやめるわけにはいかないので、以下の外部実体参照を禁止する方法で対策する。

libxml2のバージョン2.9以降を用いる

PHPXML処理には、内部でlibxml2というライブラリが用いられている。 libxml2の2.9以降では、デフォルトで外部実体参照を停止する設定となっており、XXEに対して脆弱ではない。 ただし、PHP側で外部実体参照を許可する設定にしている場合は例外となる。 ※メジャーなLinuxディストリビューションに関して、サポート継続中、かつ最新のパッチを適用していれば、libxml2側で外部実体参照を停止していることが確認されている。

libxml_disable_entity_loader(true)を呼び出す

PHPにはlibxml_disable_entity_loaderという関数が用意(PHP5.2.11以降)されていて、これを呼び出すことにより、libxml2やPHP側の処理内容に関わらず外部実体参照が禁止される。

まとめ

XXEが最初に報告されたのが2002年なので、かなり古くから知られている問題だが、これまで大きく取り上げられることはなかった。 しかし、OWASP TOP10の2017年版に4番目のリスクとしてランクインしたことにより大きな注目を集めることになる。 PHPを使う限り、libxml2のバージョンアップあるいはパッチ適用に対策されるが、Java言語の場合アプリケーション側での対策が必要となるため、PHP以上に注意が必要である。

安全でないデシリアライゼーション

書籍を読んで

www.amazon.co.jp

こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。

安全でないデシリアライゼーション

概要

  • リアライゼーション
    • アプリケーション内部の構造を持ったデータを保存・伝送する目的でバイト列に変換すること
  • デシリアライゼーション
  • 情報漏洩
  • サイト改ざん
  • 不正な機能実行
  • 他サイトへの攻撃(踏み台)
  • 暗号通貨の採掘(マイニング)

脆弱性が生まれる原因

  • 外部からの信頼できない入力データを元にデシリアライズ処理を行うと、意図しないオブジェクトがメモリ上に生成される
    • オブジェクトはメソッドを持っているので、攻撃者はオブジェクトのプロパティを巧妙に設定することにより、任意のコードを外部から実行出来る場合がある

対策

安全でないデータをデシリアライズすることは基本的に危険であり、避けなければならない 対策としては以下が考えられる - シリアライズ形式ではなくJSON形式によりデータを受け渡す - クッキーやhiddenパラメータではなくセッション変数など書き換えできない形でシリアライズ形式のデータを受け渡す - HMACなどの改ざん検知の仕組みを導入してデータが改ざんされていないことを確認する

evalインジェクション

書籍を読んで

www.amazon.co.jp

こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。

evalインジェクション

概要

構造をもったデータの例として、プログラムのソースコードを用いるケースがある。 最近よく用いられるJSONJavaScriptソースコードの形式を一部切り出したものが起源ですし、その他の言語でも、ソースコード解釈実行するevalと呼ばれる機能や関数があり、各言語のソースコードをデータとして扱うことができる。 evalの利用法に問題がある場合、外部から送り込んだスクリプトを実行される場合がある。 このような攻撃をevalインジェクション攻撃と呼び、そのような攻撃を受ける脆弱性をevalインジェクション脆弱性と呼ぶ evalインジェクションによる影響は以下の通り - 情報漏洩 - サイト改ざん - 不正な機能実行 - 他サイトへの攻撃(踏み台) - 暗号通貨の採掘(マイニング)

脆弱性が生まれる原因

  • evalを用いることがそもそも危険である
  • evalに与えるパラメータのチェックがされていない

対策

eval(同等機能を含む)を使わない

  • シリアライズの目的である場合、以下の選択肢がある
    • implode/explode
      • implode関数は配列を引数としてとり、区切り記号をはさんで文字列にする関数
      • explodeはその逆を行う
      • 単純な配列のシリアライズには対応できる
    • json_encode/json_decode
      • 自由度と安全性のバランスから多くの場合に推奨できる方法
    • serialize/unserialize
      • serializeはさらに自由度が高く、オブジェクトのシリアライズが可能
      • しかし、「安全でないデシリアライゼーション」の原因になるので避けるべき
  • シリアライズ以外の目的でも、evalなどを使わない実装を検討すべき
    • 多くの場合eval相当の機能を使わなくても、同等の処理は実装可能である
    • 例えば、e修飾子つきのpreg_replaceの代わりにpreg_replace_callbackを使うと安全である

      evalの引数に外部からのパラメータを指定しない

      evalを使った場合でも外部からパラメータを指定できなければ攻撃はできない。 ただし、スクリプトの注入経路はHTTPリクエスト経由だけとは限らず、ファイルやデータベース経由で注入できる場合もあるので、そのような注入経路の可能性がある場合は、この対策方法は使えない。

      evalの与える外部からのパラメータを英数字に制限する

      外部から与えるパラメータを英数字に限定できれば、スクリプトの注入に必要な記号文字(セミコロンのほか、コンマ、引用符など多種)が使えなくなるので、スクリプト注入はできなくなる。

まとめ

evalは強力な機能であるがゆえに、脆弱性が混入した場合の影響も甚大である。 世の中にはevalのない言語も多く存在するわけで、極力evalを使わない実装が推奨される。

インクルードにまつわる問題

書籍を読んで

www.amazon.co.jp [:contents] こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。

インクルードにまつわる問題

外部からスクリプト一部を読み込むインクルード機能にまつわる脆弱性について

ファイルインクルード攻撃

  • PHPなどのスクリプト言語には、スクリプトのソースの一部を別ファイルから読み込む機能がある
  • includeなどに指定するファイル名を外部から指定できる場合
    • アプリケーションが意図しないファイルを指定することにより脆弱となる場合がある
    • ファイルインクルード脆弱性と呼ぶ

脆弱性が生まれる原因

  • インクルードファイル名を外部から指定することができる
  • インクルードすべきファイル名かどうかの妥当性チェックをしていない

対策

  • 外部からファイル名を指定する仕様を避ける
  • ファイル名を英数字に限定する

保険的対策

  • RFI設定を禁止する
    • PHP5.2.0以降ではデフォルトで禁止されているはずだが、念のため確認する
    • phpinfo関数の表示からallow_url_inlude項目がoffになっていることを確認する

まとめ

PHPではファイルを動的にインクルードする手法が定石的に使わているが、 ファイル名のチェックが不十分な場合は、ファイルインクルード攻撃を許す脆弱性が混入する。 影響の大きな脆弱性なので、十分な対策が推奨される。

2022.04.13.InformationEnglishBasicIA 授業内容

この記事は職業訓練校の受業の内容の要点をまとめたものです。 職業訓練校を検討されている方が居たら参考にしてください。 [:contents]

InformationEnglishBasicIA

  • IT業界はフルリモートが増えてきている
    • --> Slackを使った情報共有
    • 端的に短い英語でのやり取りが主流

HEADWAY

Step 1

  • What's your name?

    • 初対面では失礼
    • まず名乗ってから聞く
  • HelloとHi, Heyの違い

    • Hi!
      • 海外では目が合うと挨拶してくる
      • 敵意がないと示すため
      • Hi!と挨拶だけして通りすがる文化
    • Hey
      • 親しい間柄で使う
    • Hi, there
      • 複数に対して
      • よく使う
    • Hello
      • 丁寧、初対面、目上の人
      • 重い感じ
  • 挨拶

    • I’m~, My name~ はどっちも使う
      • 西洋ではfirst name で呼び合うことも多い
  • given name

    • 親によって使われた名前 後から付けられた名前
    • 良く使う
  • ~last name?

    • 苗字が聞ける
  • 英語圏にはミドルネームがある

    • おじいちゃんから受け継いだり、色々ある
    • 真ん中にあるわけでもない
  • 日本では2020から公式では苗字を大文字にする

    • 例: KAWASHIMA Eiji
    • 日本が世界に発信する公文書の場合に使われる
      • 欧米とのやり取りの場合は名前->苗字で言う(今まで通り)

Step 2

  • 自分が誰かに紹介するとき
    • this is ~ を使う
      • he is ~ は×
    • 海外は広く浅くみんなフレンドの文化
    • やたらみんなに紹介しがち!いい意味で
    • Hi ~ で挨拶をするとみんな友達

Step 3

  • Nice to meet you,
    • 文の途中でもいいので、最初の挨拶内にぶちこむ
    • Tの発音(日本人は苦手、あまり使わない)
      • 詰まるような感じ ッチュ
  • Nice meeting you
    • 初対面と別れる時に使う
    • 使いどころを間違えないように

英語で「いいね」

  • sound
    • good, gread, like a plan ビジネスでも使える! ※相手には同意していると捉えられる(日本人的な言ってるけど結構ですみたいな使い方は良くない) 相槌程度ならgoodぐらいがいいか

IT関連の英語

IPパスポートに出てくる単語

  • outsourcing
    • 仕事を担う人やサービスを契約によって外部から調達し、企業活動に生かす経営手法
    • 実装する部分を下請けに出してコストダウンを図る
      • 下請け側は苦しくなりやすい
      • Webライティングはほぼ外注?
  • account
    • 様々なサービスにログインするための「権利」
  • archive
    • 情報の長期的な保存
      • backup -> 短期的な保存
  • access
    • あるメディアに接続してデータをやり取りすること
  • adware
    • 本来は、画面に広告を出す代わりに無料で提供されるソフトウェアのこと
    • ☆現在では、コンピュータの内部の情報を利用者にわからないように無断で収集し
  • outbound
    • webページやwebサイトに飛ぶリンクのことを指すと捉えてよい
  • architect
    • 大規模なシステムや、製品の全体的な設計を行う技術者のこと
  • administrator
    • システム管理者
    • アドミン権限
  • analog
    • データを連続的に変化する量で音を表す
      • アナログ時計 -> 連続的に動き続ける
    • デジタル
      • 段階的なデータ
      • デジタル時計 -> カチ、カチと動く
  • avator
    • 化身、具現など
  • App(エァップ)
    • application software
  • anti-virus software
    • コンピュータウィルスを検索、除去するソフト
      • 感染源
        • 共有フォルダやインターネットに繋いでいるだけでも感染する可能性がある
  • Ethernet
    • 有線LANの標準の一つ
  • inbound
    • 外から中に入ってくるデータ
  • infrastructure
    • 情報のベースとなる所
    • 基礎基盤
  • import
    • データの取り込み
  • wizard
    • ソフトウェアの分野では、利用者に一つずつ質問や設定項目を提示して選択や入力を促し、対話的に処理を進める操作方式のことを指す