goo blog サービス終了のお知らせ 

 ■ 一人綴り

イロイロやってますが、停滞中。(モノが出来たらアップする感じですから...。)更新はしますが数が減るかも。

【 Infomation 】


【 F1GP 2017 最終戦:アブダビGP 今日から開催中 】

■ F1GP 2017 最終戦:アブダビGP
【 11月24日(金) 】   ■ フリー走行1回目 【 リザルト 】     セバスチャン・ベッテル選手(フェラーリ)   ■ フリー走行2回目 【 リザルト 】     ルイス・ハミルトン選手(メルセデスAMG) 【 11月25日(土) 】   ■ フリー走行3回目 【 リザルト 】     ルイス・ハミルトン選手(メルセデスAMG)   ■ 公 式 予 選 【 リザルト 】     バルテリ・ボッタス選手(メルセデスAMG) 【 11月25日(日) 】   ■ 決     勝 【 リザルト 】     バルテリ・ボッタス選手(メルセデスAMG) (*)メルセデスAMGがコンストラクターズ    タイトル、ルイス・ハミルトン選手(    メルセデスAMG)がワールドタイトルを    獲得しています。
【 今シーズンのレースカレンダー 】 【 今シーズンのチーム&ドライバー 】  


 SUPER-GT 2017年シーズン終了。  GT300はグッドスマイル初音ミクAMGが  タイトル獲得、GT500はKeePer TOM’S  LC500がタイトル獲得となりました。
【 Super GT Round 8 ツインリンクもてぎ 】


【 11月11日(土) 】


  〇 公式練習
 
■ GT300 【 リザルト 】 

  4 グッドスマイル 初音ミク AMG
    Mercedes AMG GT3 / M159

    谷口 信輝選手
    片岡 龍也選手
 

■ GT500 【 リザルト 】

  37 KeePer TOM'S LC500
    LEXUS LC500 / RI4AG

    平川 亮選手
    ニック・キャシディ選手



   〇 予選Q1【 リザルト 】

  ■ GT300

   【4】グッドスマイル 初音ミク AMG
      Mercedes AMG GT3 / M159

      谷口 信輝選手
      片岡 龍也選手

  ■ GT500

   【46】S Road CRAFTSPORTS GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      本山 哲選手
      千代 勝正選手




   〇 予選Q2 【 リザルト 】

  ■ GT300

   【4】グッドスマイル 初音ミク AMG
      Mercedes AMG GT3 / M159

      谷口 信輝選手
      片岡 龍也選手

  ■ GT500
   【23】MOTUL AUTECH GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      松田 次生選手
      ロニー・クインタレッリ選手


【 11月12日(日) 】
 

   〇 決  勝

  ■ GT300【 リザルト 】

   【65】LEON CVSTOS AMG
      Mercedes AMG GT3 / M159

      黒澤 治樹選手
      蒲生 尚弥選手


  ■ GT500【 リザルト 】
   【23】MOTUL AUTECH GT-R
      NISSAN GT-R NISMO GT500 / NR20A

      松田 次生選手
      ロニー・クインタレッリ選手


(*)GT300はグッドスマイル初音ミクAMGが
   タイトル獲得、GT500はKeePer TOM’S
    LC500がタイトル獲得となりました。
 

【 今シーズンのレースカレンダー 】

【 今シーズンのドライバー&チーム 】








■ 交通情報などのリンク
http://blog.goo.ne.jp/kay-nea_l-u
e/8f3d1b94262f05bfe2eee971786294f0

【 最近アップした動画 】

【 差し替え 】Power Director 10 Ultraの2D-3D変換してみた。

■ 物の考え方

2017年02月14日 | プログラミング

 プログラミングの基本的な思考というのは、アルゴリ

ズム解析辺りから始まるのですが、これのもっとも簡素

な構造物がゲームになります。

 

 ゲームとは特定のパターンを用意して自動処理で敵キ

ャラを動かし、それに対してゲームのル-ルに基づき、

処理をするわけですが、シューティングゲームは、完

全な覚えゲーなので、結果的にトレースするラインと

動き(と避け方)が決まっているのですが、これも、

 

【 出所と振る舞いが決まっているので、そういう

   スポットが存在する 】

 

と言う話になります。つまり、

 

【 挙動を理解できれば回避できる 】

 

というのは

 

【 特定の振る舞いでのリアクションが存在する 】

 

と言う風にも言い換える事ができます。つまり、

 

【 そういった処理が存在している 】

 

ので、ゲームに応じてその条件式が存在していると

いう事になります。

 

 基本的にこの記述の方法がコーディングによるスク

リプトの記述になるのですが、幼少期のプログラミン

グ学習と言うのはLOGOに見られるように

 

【 CNCの挙動制御系のような処理でモノの

  動きとの連動性などを学習する 】

 

と言う物になっています。

 

 マイコン時代に子供だったオッサン世代の最大の不幸

とは【 GUIという物が存在しなかったこと 】なので、

現在のような幼少期から始めるプログラミングツールの

ように

 

 【 ブロック重ねてモノが動くような面白い物が

   存在しなかった 】

 

と言う事につきます。そう、どう頑張ってみてもLogoが

限界です。w

 

 こうしたに用で考えると、コーディングレスで動くス

クリプト構築ソフトやゲームエンジンでそうしたモノが

ある物を選ぶと、モノの挙動を理解できるわけですが、

基本的に、ものの考え方と言うのは

 

 

■ 変数宣言と設定(varやdimなど)

 【 OO 】を【 XX 】にする

 

■ 条件式(一般的なIF文)

 

 【 OO 】が【 XX 】の場合【 △△ 】

  になる。そうでない場合、【 ■■ 】になる

  (else if)

  もしくは【 ★★ 】だったら【 ※※ 】

  になる

 

 ■ ループ(for文など)

  【 ●● 】を【 XX 】回数繰り返す

 

がありますが、結果的に、この内容も

 

【 条件を組み立てれば、それになる 】

 

と言うのが解ると思います。例えば、

 

【 5回動く 】

 

と言う条件だと、ループの数値を5に設定すればいい

というのは、子供でも理解できると思います。

 

 当然、

 

【 赤い箱にリンゴを入れて、黄色い箱に

  バナナを入れる 】

 

は子供でも分かりますが、この記述は

 

 RED = "リンゴ"

 YELLOW = "バナナ”

 

の指定と同じです。つまり、これも、子供も理解できる内容だと

言えます。これが

 

 ■ 整数

 ■ 小数点を含む数値

 

があり、その利用範囲が異なる物が存在するのと

 

 ■ 文字列

 ■ YESかNOか

 

が存在するので、その型式を決めてそれを宣言しようと言う

事になります。つまり、

 

 ■ 数値の少ない整数 

 ■ 文字列

 ■ はい/いいえ

 

は子供でも理解が出来る訳です。つまり、簡素なアルゴリズムの

二つは意外と理解しやすい物だと解ったと思うのですが、これに

条件式ですから、

 

 もしも、それが🍎だったら、赤で、🍌だったら黄色と言う条件

だと【 プログラムはわからなくても、条件で違うというのは子

供でも分かる内容 】になります。

 

 これは文字列ですが、大小とかの比較とかそれと違うだと解り

ます。

 

 ただし、こういうのが小学校の算数レベルに至ってないと

 

 【 等式・不等式を習っていないのでよくわからない 】

 

ので、

 

 if a=" バナナ " then print "Yellow"

 if a="リンゴ" then print "red"

 

のような簡素な等式表記が出来ません。その為、GUIで

言語表記辺りのものでそれを用意して、アルゴリズムを

構築しないと理解に至らないわけです。当然、不等式は

もっと後になるので、学んでいない物はわからないため、

アルゴリズムの構築が無理になります。

 

 そういう場合には、GUIでそうしたモノを用意できる

仕様だと問題がないわけです。

 

 そうしたモノで考えると何をどう動かすのか?という

思考がが可能になり、コーディングの前に物を動かすた

めの思アルゴリズム構築に必要な考能力がつくわけです。

 

 つまり、ロジックを組む能力が身につくと言う訳です。

 

 こうした思考ですが、モノの効率化において役立つの

ですが、以前、Arrayを使った二次配列による表組の事に

触れました、あれは、データですが、ループでも同様の

事が可能で、最初に

を記述手おき、ループの頭
にと最後にを包含した状態で内部で

を生成すれば、横並びのそれをスクリプトで生成できます。

当然、この構造物を包含したループを構築すれば、行が生

成できるわけです。

 

 つまり、マス目状のモノだと、

 

 ■ 行用の変数宣言

 ■ 列用の変数宣言

 ■ それぞれの数値指定

 ■ ループ

 

の構造で構築できます。しかし、これではデータがありませ

ん。ただし、それぞれの変数を

 

 ■ 列:a

 ■ 行:b

 

と指定した場合、

 

【  列と行の設定を数値指定していることになる。 】

 

ので b x 10+aの表記で数値をその中に配置できます。

 

 つまり、00~xb+aのような状態です。

 

ここまで書くとお気づきかと思いますが

 

 ”任意の名称” + 10*b+a + ".png"

 

と言う呼び出しも可能なので、テーブル組で画像を配置す

るのも可能です。つまり、横を10にして、縦を何列かに

決めておけばソレになるという事です。また、この応用

だと

 

画  像 : ”任意の名称” + 10*b+a + ".png"

リンク先 : ”任意の名称” + 10*b+a + ".html"


もできるので 結果的に、ループに巻くだけで、素材の
名称だけで調整が出来るという事になります。こう考えると
同じ処理をするとしても、煩雑な作業がなくても大丈夫だ
と言えます。また、リンク先を作る場合でも、HTMLの自動
生成スクリプトを用意しておけば、前述の処理が可能で、

【 BACK 】 10*b-1.html

【 NEXT 】 10*b+1.html


で対応でき画像はそのまま適応できます。つまり、そうした
思考もプログラミングを行う上では効率化のための選択と
して発送して、構築していくことになりますから、

【 機能する当たり前の処理を簡素化する 】

と言う作業を行います。つまり、そうした思考方法もプログ
ラミングでは養われていきます。

 しかし、この条件で10*b+a.htmlを生成した場合、
1.htmlと100.htmlでは先頭と最後尾のリンクがな
くなります。その場合問題が出るので、これは画像の有
無を確認してない場合には””でリンクを消すような仕様
にして置く必要が出てきます。テーブルの場合、ボーダー
がない場合、画像は妻手表示されますから、画像も同
様にしておけばいいのですが、そうした手法で自動化を
する方法もあるわけです。

 しかし、この条件だと、問題もあります。この条件だと、
メインのサムネイル表示で、画像を用意する場合に、画
像がない場合には破たんしたアイコンが出ます。この条
件回避をする場合に、画像の有無のチェックと””で非
表示にする必要が出てきます。

 これで、完成しているように見えますが、まだ、問題は
隠れています。というのも、

 【 最後尾の画像の問題 】

です。それは、1と100はfixすると言う条件を書きまし
たが、画像の最後尾と言うのは、任意の数値なので、こ
れは指定できませんし、1~100まで全てにその処理を
入れると言うのも非効率です。そうなると、

 【 画像検索において、番号が切れた段階で、
   そのページ[NEXT]のリンクを""にする 】

という処理を入れる必要が出てきます。つまり、こうした
問題が放置されると表示が破たんしてしまう訳ですが、
こうした問題点の洗い出しと問題解決をする能力も、
プログラミングで養われます。

 とりあえず、表を作るのをループで作れると書きましたが、
この条件と言うのは不便だと感じませんか?

 というのも【 10進数で固定されている 】からです。

 1から始まる条件で考えれば、上記の条件で問題はな
いのですが、


   【 Xのn乗の平面はこれでは作れない 】


わけです。つまり、2x2~16x16などがそれです。

 この場合はどうしたらいいのでしょうか?そうした事を考え
るのもプログラミングにおいて発生してくる内容です。例えば、
上記のサンプルがったとします。この条件で打ち込むだけだと
誰でもできますが発展はしません。ここで思考できる人とそ
うでない人の差が出ます。つまり、こうしたモノがソースで存
在していたとしても一つの文体や数式でしかないわけです。

 つまり、それ以外の機能となった場合には、全く違う数式
でその解を導き出さなくてはなりません。

 算数の授業が最初に等式と等差数列をします。これは、
当たり前の合同及び、その推移を理解するための基礎づ
くりです。

 そののちに、浮動小数点や分数が登場し、累積演算が
登場しますが、 等式の理解の前に不等式は教えません。

 と言うのもとう式の概念が解らなくなるからです。

 つまり、基礎学力の構築には然るべき工程とカリキュラ
ムが存在するわけですが、この考え方と言うのは、

 【 置換法 】

によって、数式を導き出すような作業や、全く答えのない
状態でそれを作る作業に似ています。と言うよりも、プログ
ラミングというのは

 【 解の存在するものに数式をあてはめ、
   等式を成立させる算数 】 

なので、日本の教育システムだと少しカリキュラムが進んだ
状態でないとそれには至らないと言う特性があるわけです。

 とりあえず、この問題と言うのは、例文があり、その中か
ら条件を満たす数式への変更のようなものですから、算数
でいうと、応用問題になります。

 この場合、その構造物の内容と特性を考えます。


【 二次構造で推移する数値 】

  これは、乗数の推移である

  結論 : この多重ループで乗数自体は制御
       できている


【 なぜ、10の乗数のグリッドなのか? 】
 
   ■ 画像の推移が10進数である為 
   ■ ループが1~10と0~9の指定の為

となります。では、これを9x9にした場合を考えてみま
しょう。


 ちなみに、これは、数値のみをそのまま表示すると、九
九の票が出来上がるのですが、折り返しは9になります。
そうなると、上記の推移で9にすると

 1~9
11~19
21~29

と言う風に推移します。つまり、この推移では問題がある
のでこれを変更する必要があります。その場合、


 【 10xb+aの場所を変更すれば解消する 】


と言えます。つまり、それを9に変更すれば、大丈夫なんで
すが、もう少し、調整する方法もあります。つまり、


  【 ループの書式 】 
 
    for 最小値 最大値 推移


となっているので、


 最大値を変数指定を行い、それを変動させれば、管理
において、そのグローバル変数の変更だけで調整が可能
になります。
 
 つまり、C=9とかにしてループとは独立させておき

 C*b+a

としておけば、数値は以下のようにシフトします。


9x0+(1~9) : 1~9
9x1+(1~9) : 10~18

のような感じです。これを、9行分反復すればそれが完成
します。

 ここまで書けばお気づきかと思いますが、別の票を作る
場合にそのひな形を使えば、【 Xのn乗グリッド 】の制作
が可能で、画像も配置出来る訳です。

 こうした思考もプログラミグで当たり前に必要となるものな
のですが、ロジックを考える基礎から積み重ねていくと徐々に
身につくものになっています。

 そして、こうした内容ですが、見ての通り

 ■ 更  新  処  理   : スクリプト
 ■ 画像の追加などの処理 : 管理者


なので、ソーシャルなどの画像の取り扱いなどと似ています。

 つまり、サーバ内の処理で考えるとそうした事が可能にな
るのですが、実質的に、前述の10x10のグリッドを手作業
で入れ替えると、とんでもない作業量になりますし、それの
枚数が増えると絶望的な内容になります。

 ちなみに、前述の処理は、クライアントサイドスクリプトで
機能するので、手持ちのPCでループを作りスクリプトで表
示させるような手法をとれば、当たり前に、そういう構造物
を作れます。

 WEBサイトで【 今週よく読まれた記事 】のようなものが
ありますが、あれはアクセスログ解析のそれを集計して、その
アクセス数のソートを行い上位のモノを個別に並べたもの
になります。当然、法人のサイトでそれをしている場合だと
当然のようにサーバサイドスクリプトです。

 つまり、自動処理を行う事で煩雑な作業の発生を抑止
し、必要な作業に専念できるという利点があります。

 とりあえず、こうして考えていくと、

【 サーバサイドスクリプトやクライアントスクリプトの有用性 】

が見えてくると思うのですが、上記のグリッドの例でいうと、

 

【 100x100だと手作業でやるのは無理が来る 】


のは理解できそうな内容ですし、何よりも、数値が増えるほ
ど大変になるので、個人の能力の範疇では対応できなくな
る訳です。しかし、まとめて画像のアップロード程度だと誰で
もできるので、その巨大なグリッドとそのページ数の何かを作
るスクリプトがあれば、自作画像や動画のギャラリーを作ると
言うのもそう難しい話ではなくなる訳です。

 つまり、こうした処理以外でも特定の処理には法則性が
あるので、膨大な数の単純労働の場合、自動化が可能
になっています。

 そもそも、プログラミングの発祥は、第二次産業革命時の
自動織り機の誕生からですから、1900年代の話です。つ
まり、前の世紀の相当昔の話になります。当然、その時代
にはノイマン型コンピューターは存在していません。

 その織り気もパターンと言う法則性があるので成立したわ
けですが、単純労働と言うのはパターン化された工程なの
でそれが配列で処理できる場合だと自動化が可能になる
訳です。

とりあえず、こうした部分の構造の解析やその分析。そし
て必要な機能の考案とその模索と問題解決能力の育成
などが、プログラミングを学ぶことで養われていくことになりま
す。

 とりあえず、手抜きと効率化の区別がついていない存在
が、全く機能しない物を効率化と口にしていることがありま
すが

【 手を加えて動かなくすることほど非効率なモノはない 】

ので、そうした存在は、こうした思考能力を保有していま
せん。つまり、そうした愚行に至らない為の転ばぬ先の杖
とも言えますが

【 時間を有効に利用するための一つの手段と選択肢 】

としてもそうしたモノが存在しているわけです。


■ 物を動かす手法と考え方

2017年02月14日 | プログラミング

 現在はWEBで当たり前に動画が見れるし個人でも動画を

アップできる時代なので、【 動画は特殊ではない物 】

になっていますが、基本的に、生活の中で使っていても

何をしてそれになっているのかは全く市なら鋳物が多い

です。例えば、図書館の書籍検索のそれがどういう仕組

みか知らなくても使えていますが、いざ開発するとなる

と全くわからないのと同じです。これと同じように、動

画についても、なぜ音が鳴って、なぜ、映像が出ている

のか?というのはあまり理解されていません。その為、

解らないけど使っている状態のモノに包含されているわ

けです。

 

 そこで、少し、動くものを作るプログラミングと言う

のも含めて、考えてみる事にしましょう。

 

 まず、現状のゲームエンジンですが、動画がそのまま

再生できると言うモノも存在していますが(Cocos2DX

でVideoPlayerのClassがあるので、それで再生可能に

なっていますし、WEB GLでも動画を使う事が可能な

ようです。)とりあえず、そもそも動画ファイルとは

どういう構造物なののでしょうか?

 


動画ファイル


 これについては、かなり誤認があるので、最初に正

しておくと

 

 【 ファイルの拡張子で中身が解ると言うのは

   間違い 】

 

なので、この間違いは鵜呑みにしないでください。

 

 こうした内容は、オーディオでもエンコードの設定が

異なるだけでお音質があ変わってしまうからです。つま

り、拡張子は同じでも内容が異なると言うことは、そう

いう判断基準自体が存在しないことを意味しています。

 

 まず、映像ですが、ざっくりした見方で考えても

 

 ■ コンテナファイル

 ■ ビデオコーディック

 ■ オーディオコーディック

 

の三つで構成されています。そして、コンテナファイルの

中に、ビデオとオーディオのコーディックでエンコードさ

れたものが巻かれています。

 

 その為、

 

 【 包み紙や化粧箱でしかないコンテナで内容成分

   は解らない 】

 

と言えます。この内容は、MOVコンテナにしても

 

【 MOV 】

  ProRes(12bit/4:4:4~10bit4:2:2)

  DnxHD(10bit/4:2:2)

  圧縮なし(8bit/4:4:4)

  アニメーション(8bitRGBのロスレス)

  H.264

  MPEG-4 ASP

  

など複数のモノを包含できます。これは、WMVにしても

 

【 WMV 】

  VC-1

  AVI

  WMVロスレス

  WMV9

 

などの記録が出来ます。当然AVIも

 

【 AVI 】

  MotionJPEG

  H.264

  H.263

  MPEG-4 ASP

  WMV

  HuffYUV

  Canopus HQX

  Lagrith

  非圧縮AVI

 

などが記録できます。当然これはMP4コンテナやM2TSの

コンテナでも同様です。

 

 つまり、コンテナでは法が出来るものが異なる訳です。

ちなみに、x.265をMP4やAVIのコンテナで巻く事が出来る

わけですが、現在は、4KのH.265書き出し対応と言うソフト

もあるのですが:、そうしたエンコードもH.264だけではな

くなっています。

 

 基本的に、動画お弄ったことがある人だと、こうした内容

は知っているのですが、H.264及びH.265に関してはAV U

tilの外部プラグインで拡張するとH.264はGPUアクセラレー

ションやCPUのSIMDでエンコードできる状態でしたから、

当たり前にコーディックの違いとそうした新しいコーディッ

クを使う某と言うのは知っている訳ですが、こうした内容か

ら【 AVIコンテナで巻いても内容成分が異なれば違う 】

と言う常識は持っているわけです。

 

 つまり、こうした内容がビデオコーディックだけでなく

オーでぃぽコーディックでも存在しています。

 

 と言っても、こうした内容は、今のようにスマホがあると

非常にわかりやすいのですが、多くのカメラアプリでは、

 

【 オプションでコーディック選択が可能になっている 】 

 

ので、それを選択すると、多くの場合、映像だと

 

 ■ H.264とMPEG-4 ASPの選択が可能

 

になっています。オーディオも選択可能でモノラルかステ

レオの変更が出来るはずです。当然、コーディックの選択

もありますが

 

 【 コーディックが音声と映像で2種類づつ存在する

   為配列が複数存在しますから、この条件で、コン

   テナが同じだと内容成分が同じになる訳がない。 】

 

わけです。つまり、そういう仕様が、エンコードの場合だと

選択肢が多く存在するのでコンテナが同じでも何か解らない

わけです。

 

 現在は

 

 ■ 動画のファイルのプロパティーを見る

 ■ コーディックチェッカーを使う

 ■ 再生時にプロパティーを表示させる

 

のいずれかで、確認が出来るのですが(これはYoTubeとかも

どういう動画なのかがわかります。と言ってもあれは、サーバ

側でエンコードしていますから、元のソースが何かはわかりま

せんが...。大抵の動画コミュの動画の取り扱いはエンコードが

入るのでそんな感じです。なんで、解像度が低いとエンコード

が入らないと言うのは”そこまで解像度が低いとエンコードして

もしなくても劣化してるから同じと言う内容を、モノが解らな

い生命体的にそれだとエンコードされないと言う風にはき違えて

吹聴してる状態か何か”だと思います。つまり、品質が悪い状態

のモノを使うと言う選択肢がないのであれは鵜呑みにしないほう

がいいです。)とりあえず、AC3やAACとH.264やMPGE-4 A

SPなどの場合があるので、MP4コンテナと言うだけでもまたく

違います。

 

 とりあえず、動画出力と言うのは、そうした

 

 ■ 特定のコーディックへのトランスコード処理 

   (元のファイル形式からコサイン変換で符号化し

    容量を圧縮する)

 ■ それをエンコードしてコンテナでまとめて再

   生できる状態にする処理

 

が完結しないと動画として成立しません。とりあえず、符号化

処理の段階でも必要な工程及び行うべき処理があるので、そう

した処理を経ておsの形式に変換するので、元のそれと異なる

ファイルとして存在するわけですが、H.264やH.265が使われ

る理由と言うのは【 マスターよりも容量が小さく、画質が担

保されているから 】と言う内容になります。

 

 つまり、そうした条件で、絞られると、コーディックがあ

る程度方向が決まってくるので、汎用コーディックとして使わ

れるコンテナ及びコーディックは特定されてそれの邦画多くな

ると言う訳です。ただし、古いファイルだと、その時代のコー

ディックで巻いているので、コンテナが同じでもH.262とかH.

261とか(MPEG-2_PSやMPEG-1)だったりしますから、画質

が相当荒いわけです。つまり、その状態でもAVIコンテナですか

ら、これがDNxHDとかと同じであるわけがありません。w

 

 その為、そうした間違いは存在しないわけです。

 

 では、この符号化についてですが、こういう技術関連の文献は

ネットですぐに得られるのですが、

 

 ■ H.264 の動画圧縮規格について - 澤見ゼミ - 岡山理科大学

   http://cafe.mis.ous.ac.jp/2005/sawasemi/nomura

   /%E5%8D%92%E8%AB%96/H.264%E3%81%AE

 のような技術書に書かれているような内部処理がされいます。
 
 世に出回っているエンコーダと言うのはこうした処理をする

物になっているので、そういう処理をする高度なプログラミン

グがされています。これを各メーカーが独自開発しているので

速度の差異や画質の差異などが存在します。

 個人でも、PC環境だとエンコードソフトと言うのは無償で

導入できるわけですが、Linuixでは御用達な

 

  ■ ffmpeg

   https://ffmpeg.org/

 

 

や、GUIでのエンコードだと

 

 ■ GomEncoder

   http://www.gomplayer.jp/encoder/

 

 ■ DVDFav

   http://ja.dvdfab.cn/h265.htm

 

などがあります。Kぃ本的に、ffmpegの記述と言うのは、

 

【 動画において設定してしかるべき仕様を記述して

  あるだけ 】

 

 なので、H.264のLvel4のハイプロとかの記述がある場

合、動画コーディック音仕様において利用可能な解像度や

そのビットレートやフレームレートの上限などが規格とし

て策定されている(のでそこから外れるとエンコードでき

なかったり出来たとしても再生出来ない。)のでそれに準

拠した記述で動画を指定する事になります。

 

 このときに、最初のビットレートと最大ビットレートと

ピークレートと言うのが出てきますが、最小と言うのは、

動いていない状態だとどの辺りまで抑えるかで、その状態

で画質が担保されるレベルで小さな数値にしておくと、動

きのないシーンでは容量が強烈に圧縮されます。これは、

後に書くGOPの内容で紹介しますが、実質的に、その使用

によって、【 画像1枚の容量xフレームレートの数 】と

言うAll-Intraのような状態にならないわけです。そして、

動きが多い場合にはピークまで上がるのですが、その上限

の指定をする感じになります。あと、ピークと言うのは継

続的なので上限を高くしておくと言うのは、そうした動く

が多い場合にどの辺りにしておくかで変わってくるので、

そうした状態にすると言う訳で鵜s。つまり、動きがなく

て画像が切り替わるだけの紙芝居のようなスライドショー

の場合だと、静止画の表示時間お邦画長いので、これは

容量をほとんど消費しません。その為ビットレートと言

うのはその画像に対してどれだけ割り当てられた状態な

のかのような感じになります。と言っても、やはり映像の

品質の上限と言うのはありますから、そういう仕様のもの

がエンコード後に極度にビットレートを高くするような事

はないですし、H.264でも賢い符号化をするので容量は相

当削減されます。

 

 オーディオはこうした仕様と異なるのですが、基本的に

動画はそうした圧縮がかかっています。

 

 そして、フレームレートと言うのは動画撮影時にスマホ

でも選択できるので、撮影時に何で撮るかを機縁る時に解

像度などとセットでっ変更しているはずですが、そういう

仕様もエンコーダーで処理できるわけです。

 

 では、圧縮した動画ですが、これの再生はどうするか?

と言うと複合化処理を行う事によって、再生を行います。

この処理をするのがデコーダーで、それがない場合、映

像は再生できません。PCで非対応動画と言う状態になって

しまう物の場合、コーディックが入っていないだけなので

破損していないファイルだと昔のPCだとDirect Show Fil

terが入っていないだけなので、コーディックがないので再

生できなかっただけと言う話になります。

 

 こうした内容は、非対応コーディックやノンサポートな

コンテナの動画は読めないと言うのと同じなので、家電で

家電メーカーのカメラなどが動画のコンテナに自社製品で

再生できるMP4やM2TSなどを利用しているのもそれです

が、非対応と言うと、MOVが読めないのも非対応のコーデ

ィックだからになります。その為、iOSのユーザーとかス

マホのユーザーだと当たり前に読めてるものが読めない場

合がありますが、あれは仕様です。PCの場合だと、コンテ

ナもそうですが、それ以前に破損していない動画で再生で

きない場合、コーディックのリリース時期よりもOSのほ

うが古い場合にはサポートしていないので対応していない

事の邦画多いわけです。これは、x.265などは独自でイン

ストールしないと利用不能なのと全く同じです。

 

 つまり、そうした内容から、エンコーダーで符号化し、

圧縮して軽くした動画をデコーダー複合化し再生すると言

うのが現在の動画の仕様です。と言っても、8Kのパブリッ

クビューイングのテストで非圧縮の8Kに16chの音声つけ

て流したとかいうのがありますが、あれに関しては、コー

ディックが存在しているので圧縮はされていますが、少し

様子が異なる内容だと言え真鵜s。

 

 一般的になエンコードと言うのは

 

【 個人がマスターとなる映像と保存を視聴しやすい

  状態に圧縮して利用する時の何か 】

 

なので、【 エンコード=劣化 】なんですが、業務用ソー

スとかで中間ファイルとなる、ロスレスやProRes圧縮など

をかける場合だと、内容が異なります。これは劣化しないよ

うに中間ファイルを作る作業なんド絵、画質を落として圧縮

する仕様の処理と異なる為基本的に化け物じみたビットレー

トのそれで変変換していますから、個人が動画の保存用に

使うエンコード処理とは一線を画すものになります。

 

とりあえず、そういう仕様で圧縮処理と再生が行われていま

す。

 

 ちなみに、MP3に関しては、

 

 ■ 音声と圧縮

   http://www.slideshare.net/kiminobuni

   shimura/mp3and-audiocompression-simple

 

 ■ 【3】デジタル信号と音の圧縮 : MP3の仕組み

   http://www.f-kmr.com/synthesizer/no3.htm

 

に仕組みが書かれています。 

 

 MPEGと言うのは、All-Intraのようなソースではないので、

基本的に、構造が異なるものだと言えます。MotionJPEGや

All-Intra設定のMPEg-4_AVC/H.264などはフルフレーム記録

ですが、通常の動画はそうではなく、GOP(Group Of Picture)

と言う単位で構成された物で記録されています。

 

 これは、

 

  ■ Iフレーム( Intra Picture )

   コマの情報が残ったそのままのフレーム

 

 ■ Pフレーム( Predictive Picture )

   Iフレームから間引いたフレーム   

 

 ■ Bフレーム

   ダブった部分を間引いた状態を補完する

   ために策背うする予測変換したフレーム

 

で構成されています。映像ではダブった状態の駒が存在

する場合、それが全くない状態のフレームを最初に作って、

その後間を補完します。つまり、変化がない場所ンフレー

ムと言う尾は圧縮場所が少なく同じ状態のものと変わり

せんからIフレームで容量を撮るのがもったいないので、

そうしたエンコードを行います。H.262はこうした変換

においてマクロブロックがあまりにもあほすぎたため

 

 【 動きが激しい兄見栄のようなものですらブロッ

   クノイズが出る 】

 

のですが、そうした問題を解消しているのが、H.264以

降のものになります。とありあえず、All-Intraで行うと

とんでもなく重たいデータになるので、コンシューマで

は非常に使いにくいので

 

 ■ コンシューマは8bitカラーなので、業務用のよう

   な色数の多いソースよりも圧倒的い軽くしてあ

   る。(デジタルシネマで使われるカメラでは、

   16bitソースがあるので、既に比較してはなら

   ないほどの差があります。)

 

 ■ 色差情報(赤や青からそれぞれ輝度を引いたもの)

   もGH5のソースとコンシューマのそれが違うよう

   に、半分まで圧縮されている。(ちなみに、DNG

   は4:4:4ですから、GH5の10bit/4:2:2の倍の色

   差情報になります。基本的にRGBとは異なるので

   変換しないとRGBにはならないので、RGBとは異

   なるのですが、同様に圧縮による真備胃がない状態

   のも物になります。)

 

などの処理がされています。AVCHD 2.0辺りからコン

シューマのカメラでもプログレッシブのフルHDになり

ましたが、それ以前はインタレーススキャンでしたから、

 

 【 走査線で交互に出す事で、送信時の転送レートの

   負担を減らした仕様 】

 

ですから、相当間引かれた状態の物になっているわけです。

とりあえず、そうした仕様で院たれにしたものが放送で流

されているのが現在までのNTSC圏での映像になります。

 

 つまり、PCで作る動画と放送準拠のVTRなどではデジ

タルになった段階でも全く異なる物を使っていたわけです。

 

 とりあえず、DVコーディックの前の取り込みでもYV12

辺りやYUVを使う時点で、RGBとは異なる仕様になるので

変換が必要なのでそういう物になるのですが、映像コーデ

ィックの場合プログレッシブであっても、前述のような圧

縮がされているもののほうを多く見かけるはずです。

 

 とりあえず、映像の場合、一般流通しているモノは圧縮

して流されているのでそうしたロッシー形式なモノになっ

ています。

 


扱うのと作るのでは異なる


 表示に関しては今はリッチコンテンツを作る場合、あっ

さりと作れるのとワープロソフトでも画像や動画を挿入で

き、WEBオーサリングツールでもそうなっています。

 

 その為、動くものを配置するだけだとそう難しくない

物になってます。とりあえず、画像のフォーマットでそ

うしたアニメーション機能が合うう物や動画が使えない

環境も世の中には存在すrのでそうした場合には工夫す

る必要性が出てきます。

 

 そうした場合に、それを動かすプログラムをすると

言う方法があります。これは20世紀の概念に近そうで

すが、そうしたやり方もあります。

 

 まず、動画と言うのは

 

 【 連続した画像の集合体 】

 

です。これは、映像コーディックのようにコンテナに

巻けない条件だと フィルムと同じく当たり前の画像

用意する事になります。

 

 ただし、この条件だと、画像の集まった📂フォルダー

でしかないので📹映像とし適応しません。

 

 そうなると、これを動かす必要があります。

 

 この場合、

 

【 スライドショーのように同じ場所の画像を

  連番ファイルで掻きかえればいい 】 

 

と言う話になります。つまり、

 

 ■ 表示をする

 ■ 変更するまでのタイミングを指定

 ■ 画像の切り替え

 ■ ループ

 

とすれば、それが可能になります。つまり、

 

 xx1.jpg~xx120jpg

 

があったとします。この場合、

 

 for i=1; i=121; i=i++;

 

とすると、iの数値はそのまま増加しループします。

 

とりあえず、ここで

 

 "xx" + i + "jpeg"

 

と言う名称のファイルをIMGタグで呼び出せば、当たり前のように

ループの中に包含されます。しかし、この速度が異様に速い場合、

問題がありますから、速度が速い場合にも対応するべく最適な状

態を作る必要があります。

 

 そうした場合、【 処理待ちを入れる 】ことで、表示タイミ

ングを調整する事ができます。アニメーションGIFなどの場合、

ブラウザによっては、画像制作ソフトで指定したタイミングで表

示してくれるものがありますから、40ms指定で25Fにできるも

のがりますが、10fpsに指定されるものもあります。

 

 そうなると、このウィと調整を、40msにするのか100msに

するのかの問題はありますが、この秒数の違いでフレームレート

を指定できることになります。そうなると、このウェイトを、

ループに包含し、表示の後に指定すれば、ループがいったん止

まって、再度ループに走るので、コマの表示間隔が設定できる

と言う訳です。しかし、容量が大きく巨大ながお像や重たい画

像だとこれは出来ないので、制約を受けてしまうので、一旦、

画像をバッファしてそれを読み込んで操作するようなプログラ

ムにしないとダメな場合も出てきます。

 

 こうした処理ですが、ゲームを作ると仮定した場合、カット

インのアニメーションでビジュアルを入れる時に、キャラクタ

ーグラフィックを動画に吸うと透過処理が出来ないので画像で

対応する必要がある場合などで出てきます。

 

 個人が無料で使えるAVG制作のツールだと、動画ファイルで

はなく画像ファイルを利用するものの邦画多そうですから、こ

うした考え方で制御する方法になる場合もあります。ちなみに、

ウディタでは連番でアニメーションさせる方法もありますが、

こうした表示枚数指定をして、それを秒数で切り替える状態で

処理させれば、大き目な画像のアニメーションを行うことも

できるのでいろいろと操作できるようになります。

 音を合わせる場合だと、これはバッファの利用が必要にな

りそうですが、基本的に、前述のそれとフレームレートを合

わせた音の読み込みでどれ位さが出るかを考えて、映像の開

始を遅れ気味で初めて合わせるか、待ち時間を入れてバッフ

ァをする時間を稼ぐなどしないと映像のほうが先に走ってし

まう可能性があります。その為、整合性が撮れた状態で完成

している映像個ファイルのような状態にならない場合がりま

す。そうした場合に、素材を先行読み込みしていて整合性を

とった状態で双方を流す手段を模索する必要が出てくるわけ

です。

 

 とりあえず、映像ファイルの場合、当たり前に整合性がと

れた状態でしている代物なので、そのまま利用できるのです

が、個別にうっごかす場合にはバランスをとる必要性が出て

きます。ただ、サイレンスの状態でモーションを付けたもの

を作る場合だと、っ考え方はこうなるので、そういうプログ

ラムを組むと当たり前に動くと言う訳です。

 

 ちなみに、映像の処理用のプログラムとなると、前述のGO

Pだと画像解析を行い、一致部分を割り出す処理が発生するの

で高度なプログラミングが必要になりますから、動画をコンテ

ナに収める何かの前に画像解析系の勉強をしないとそうしたモ

ノを扱うプログラムは組めないのですが、動画ファイルやアニ

メーションGIFなどの画像ファイルを配置する以外の選択も物を

動かす場合だと上記のような考え方もあるわけです、また、こ

れとは別に、1枚の画像を複数に分割してシーケンシャルとして

認知させて利用する方法もあるので、そうしたアプローチも複

数存在しています。

 


■ データベース

2017年02月11日 | プログラミング

 データベースと言うとマイクロソフトのAccessをイメージ

される方も多いかもしれませんが、プログラミング言語では

SQLなどを使ってデータベース参照をする物を作る事が出来

ます。Visal C++がデータベースとの連携をさせるとそう

した事が出来るのですが、ウィザードに沿ってスケルトンの

構築をするとそうした選択肢が出てきます。

 

 データベース関連もコストがかかるというイメージがあり

ますが、個人がそうしたモノを使う場合には、昔のように

ソフトウェアを使うのにコストが必ずかかると言うもので

はなくなっています。

 


データベースを作る方法


 これは、スプレッドシートから書き出せるCVSのような

データの羅列でもデータベースで利用できるモノなんです

が、基本的に、これがデータでしかないのは、その検索・

ソート・条件抽出などが出来ないので、これはただのデー

タの羅列でしかないわけです。つまり、これを処理するソ

フトがなければそれはデータベースとして機能しません。

 

 つまり、そういうソフトになります。データと言うのは

単一ではなく様々なモノがありますあそういう物を一つに

まとめて共有して管理するものがデータベースです。

 

 そして、そうしたデータベースですが、一件のデータを

複数の属性の値の組として表現し、組を列挙することでデ

ータを格納していく方式である、リレーショナルデータベ

ースをAccessでは利用できます。

 

 SQLというのはこの管理言語なんですが、こうしたデー

タベース管理をサーバで行う場合に、サーバソフトとセッ

トでMY SQLなどをインストールするわけですが、データ

管理型のシステム構築では必然的にそうしたモノが必要に

なります。

 

 これは、テーブルと言う単位でデータが構成されており、

エクセルのシートのような二次的な構成になっていますが、

 

【 レコード 】

  これは、行に該当します。基本的に、主キーを

  追加した場合、オートナンバーで増加していき

  ますが特定のデータを指定するまとまりの区分

  けになります。

 

【 フィールド 】

  これは、列に該当します。基本的に、これは項

  目がそこに指定され、その差異で区分けされて

  います。

 

この二者の二次的なデータ構成で構築されたものがテーブ

ルになります。

 

 とりあえず、

 

日  付   顧客番号  氏名

2017/1/31    001  XXXX

2016/1/31    002  XYYX

2015/5/10    003  YYXX

 
 
と言うデータがあったとします。この時の顧客一人のそれが
レコードで、項目の羅列がフィールドになります。
 
 
 つまり、これが購入データだとすれば、エクセルなどの場
合だと、横に伸びていくことになります。リレーショナルデー
タベースは関連付けで、処理が出来るので、
 
 

顧客番号  商品名  価格

001    商品A  1,000円

002    商品B  2,000円

003    商品C  3,000円

 
 
と言う全く関係なさそうなものでも、顧客番号と言う共通点が
あるので、これで関連付けをして、データをそろえて、
 
 

日  付   氏名    商品名  価格

2017/1/31   XXXX   商品A  1,000円

2016/1/31   XYYX   商品B  2,000円

2015/5/10   YYXX   商品C  3,000円

 
 
という情報を導き出せます。つまり、IDに関連付けた付加
情報を別途広げておけば、参照可能になるので、新規にデー
タを追加するとしても、その情報はテーブルの追加とIDへ
の関連付けだけで済むわけです。その為、特殊な作業もな
く新規にそうした情報が付加されたとしてもそのデータの
追加がされれば、そのデータもちゃんとそのデータベース
のIDに紐づけされて管理できるわけです。
 

 ちなみに、この理論は1969年に登場し、1980年代か

ら大型コンピューターにRDBMSが実装され始め、1990年代

にはそれが普及し始めたので、その登場と普及だけで見ても

相当昔から存在していることになります。

 


クエリー


 データベースとは、先ほど書いたレコードとフィールドで

構成されたテーブルの集合体であり、キーは設定されていて

も点在するテーブルでしかありません。その為、単独で見る

と支離滅裂なデータな訳ですが、キーの設定をしたものを連

結したり条件抽出をする方法があります。

 

 そうした処理をするときにクエリーの制作を行います。

Accessでは、クエリーを作成・管理をすることで、必要

なデータの状態を作る事が出来ます。

 


 

 とりあえず、テーブルを作成して、クエリーで管理すれば、

必要なデータ抽出ができるのですが、Accessというのは、

 

【 データベースアプリケーションの制作ソフト 】

 

なので、クライアントサイドで機能するようなデータベース

を参照した数的処理を行うようなシステム設計が可能になっ

ています。

 

 その為、印刷用のレポートの作成や、表示・入力用のフォー

ムの生成なども可能になっています。

 

 その為、データベース管理のSQL単体とか少し毛色が違う物

になっています。

 

 こうした祖処理をする場合に、アプリケーションの構築が発

生した場合、でたべーーす参照でモノを動かす必要が出てきま

すが、この時の処理に同社の開発言語のVisualBASICを利用す

る事になります。VisualBASICというと、Internet Eplorer

では、JScript/JavaScriptとは別にVBSciriptが存在しており、

Powershell搭乗前までだと、WISHが存在し、これもVBSで

した。つまり、VisualBASICベースのものは多く存在したの

ですが、同社のオフィースのマクロもそうした仕様になって

います。とりあえず、ゲーム開発において、VisualBASICで

開発されたフリーウェアもあり(SRCとか。)ゲームも作れ

るのですが、オフィースソフトのマクロでゲームをっつくた

人もいるようでそうしたフリーウェアモア皮膚されていたり

しますから、当然のように自由度は高い物だと言えます。

(多分、それをやらない人が多いのは、リソース食いすぎて

速くないからと言う理由でしょうね。)

 


無料のオフィースソフト


 こうしたデータベースソフトですが、クライアントサイド

でそうしたアプリケーションを作る方法は現在だとほかの選

択肢も存在しており、

 

 ■ LibreOffice

   https://ja.libreoffice.org/

 

 

のBASEでリレーショナルデータベースとそれを利用したアプ

リケーションの開発が行えます。これについては、JA福岡に

 

 ■ JA福岡 : LibreOffice BASE

   http://www.ja-fukuoka.or.jp/libre/2332/

 

にPDF形式のマニュアルが存在しており、マクロリファレンス

まで解説されています。

 

 マイクロソフト製品は、VisualBASICをマクロとしていまし

たが、このソフトはLibreBASICと言う独自言語なのでマクロに

互換性はありません。

 

 とりあえず、リレーショナルデータべーうが何であり、それ

を構築する術とアプリケーションの制作間での作業だとOSSで

行えるようになっていますから、ソフトだけでもコストがかか

るんので勉強できないと言うのは虚偽になります。

 

 蔵書管理やアイテム管理などで使えるソフトですが、この利

点は【 特定の在庫がある場合に、水位が生まれた場合に逐次

その状態も確認出来る 】のでそうした利点があります。

 

 ECサイトで検索をかけてモノが見つかる条件や、本を探すと

きにジャンルでKネさくすると光勝と言うのはそうした条件で縛

りがある空で、データベースソフトだと、そのフィールド検索

をアプリっケーションに組み込んでおけば、当たり前のように

データベース登録段階で存在するそのフィールドデータに一致し

たものが条件抽出されて出てくると言う訳です。

 

 こうした内容は、個人の性別とか、年齢とか、青年か未青年か

なども含めてデータがあればの検索をかけれるわけですが、そう

した情報と言うのも

 

【 データが入力されて存在していなければ成立しない話 】

 

なので、その打ち込み作業と言う膨大な作業が発生するのは確か

です。w

 

 つまり、WikiPediaとか特定のwikiのように個人がクラスター

処理して勝手にデータがストックされていくようなものではなく

個人が自分単独で入力すっるとなると恐ろしい作業なのでデータ

入力における時間と言うのは恐ろしくかかる訳です。

 

 とりあえず、そうしたデータは存在していなければ、そういう

用途で使えるソフトと言うだけなので、機能はしないのですが、

データを管理するソフトと言うのはどういう物で、リレーショナ

ルデータベースがどういう物かを知る上での教材及びそれを使っ

た物を作る環境としてはみっぢかにある便利なモノのように思い

ます。

 

 とりあえず、ここで何度か触れていますが、VisualBASICの

コンパイルは.NetFrameworkで可能なので、ACCESSを導入

する場合やマイク度ソフトオフィースを追加する場合のマクロ

お利用方法を先行して学んでおきたい場合でも、実装機能で存

在していますからそれが使える訳です。

 

 とりあえず、マクロを使う場合にはLibreBASICの学習が必

要になりますが、リレーショナルデータベースの学習をする場

合にそうした選択肢も存在しているので、学習を行う上でのコ

ストが異様に低く名たと言えそうです。

 


□ IDE

2017年02月09日 | プログラミング

 HTML5ベースの開発環境って、JDKとJREをx68-64を入れて

おけば問題がないので、メモリーの多い爆速環境だと快適なん

ですが、Flash Bulderなどのように、JERのx86とかが必要に

なる場合もあると言う。

 

 その為、x86-x64環境でネイティブ64bitで使いたい場合と

かだとIDEを選ぶような気がした。

 

 

 

 

 

 


■ そ~いえば...。

2017年02月08日 | プログラミング

 WEBオーサリング系でいうと、マイクロソフトのExpression

WEB 4が開発終了で無償提供になっていますね。

 

 あと、追記ですが、FlashDevelopですが、JERとFLES SDK

を用意してインストールすると、どうもネットから何かダウンロ

ードしだめなようで、C#系などは追加されまないようです。

 

 Mono(Xamarin)はなぜかエラーが出てるので、理由が不明

なんですが、毎回おかしなエラーが出るので理由がわかりません。

あと、アプリケーション実行中のC++のエラーを始めてみたので

すが、おかしなことが起きるときにはそういうのがフツーに出る

ようです。(これは自前ではなく、フツーにダウンロードしてき

た代物)

 

 とりあえず、便利な物は複数ありますが、注意も必要なので、

その辺りは気を付けたいところです。

 

 とりあえず、インストールについてですが、オンラインである

条件で、IDが必要でログインしないと使えない物が複数あるので

sぽこは注意したいところですが、IDEを見てみると、

 

【 VisualStudio Comminuty UPDATE 4 】

  Live IDを取得し、ログインしないと使用不能

 

【 Unity・UnrealEngine・CryEngine 】

  それぞれのアカウント取得後にログインしない

  と使えない

 

というのがあります。あと、インストール時にネットから大量な

パッケージをインストールする必要がある、

 

 ■ AndroifStudio

 ■ Xamarin@マイクロソフト

 

なども注意が必要です。とりあえず、FlashDevelopはそれが

入ってなくてもWEB系のモノは動くのですが、32bit APIなの

で挙動がx64のスタンドアローンで動くそれとは異なるので、

その辺りは注意が必要なんですが、ネット接続環境と接続状態

でインストールしないと追加パッケージがインストール出来な

い物があるので注意が必要です。