読者です 読者をやめる 読者になる 読者になる

のぐそんブログ

暗いおじさんがシコシコ書くブログです。

Unityの基礎の基礎操作

Unityの基礎の基礎操作です。自分用のメモの為に書きました。

基本ショートカット

a.png

Sceneビューの操作

操作 内容
平行移動 option + commandを押しながらクリック&ドラック
回転 optionをおしながらクリック&ドラック
回転  optionをおしながらクリック&ドラック
ズーム マウスのスクロールホイール操作
トラックパッドの2点スワイプ
フォーカス オブジェクトを選択後、shift + Fキー

透視投影と平行投影の切り替え

赤で囲った箇所をクリックで透視投影(パースのかかる状態)と平行投影(パースのかからない状態)を切り替える。

透視投影をPerspectiveモード、平行投影をIsometricモードとよぶ。

現在の視点にカメラを揃える

Sceneで表示中の視点にカメラの位置を揃えることができます。

カメラを選択した状態で、[GameObject > Align With View]

オブジェクトに(簡単に)物理属性を追加

  1. Add Componentから[Physics > Rigidbody]
  2. Projectから[create > Physics Material]を選択してオブジェクトに設定

Rigidbodyのプロパティ設定

プロパティ 内容
Mass 物体の重さ
Drag 空気抵抗。値が大きいとすぐ止まる
Angular Drag 回転に対する空気抵抗。値を大きくすると回転が止まりやすくなる。0だと回り続ける
Use Gravity 重力のオンオフ
is Kinematic 物理エンジンによるpositionの変更のオンオフ
Interpolate 物理効果をスムーズにする
Constraints 物理的な制約を設定。チェックを入れると、動かなくしたり回転しないようにできる

単位

太いグリッドが

マテリアル設定

Shader

オブジェクトの質感設定を行うのがShader(シェーダー)です。 物質によって、光の反射や吸収の仕方が違います。それを計算してくれるのがシェーダーです。

Standardシェーダー

物理現象を忠実にシュミレートしてくれるシェーダーです。 リアルな表現に適しています。

プロパティ 内容
Metallic 値が高いと金属らしくなり、値が低いと土や石のようになる
Smoothness 表面のなめらかさ
Emission マテリアル自身の発光の値。発光色も設定できる

SQL基礎の基礎の基礎〜WHERE句での絞込〜

SELECT文ではほとんどのケースでWHERE句を使用します。 つまり WHERE句が使えなければ、SELECT文は使えないことになるので、 まとめてみたいと思います。

WHERE句での絞込

WHEREは処理の対象を絞り込む場合に使用します。 SQLの修飾語のなかで1番利用するのがWHEREです。

WHERE句の基本

  • SELECT、UPDATE、DELETE文で使用する。INSERTでは使用できない
  • WHEREの後ろに条件式を記述する
  • SELECT、UPDATE、DELETE文でWHEREを指定しない場合は全ての行が対象になる
SELECT 列名,列名,...
FROM テーブル名
WHERE 条件式

条件式の基本構文

条件式に使える比較演算子です。

比較演算子 意味
= 左右の値が等しい
< 左は右より小さい
> 左は右より大きい
<= 左は右の値以下
>= 左は右の値以上
<> 左右の値が等しくない
!= 左右の値が等しくない

NULLの判定

NULLの判定に上記の比較演算子は使用できない。

IS NULL(値はNULL)、もしくはIS NOT NULL(値はNULLではない)を使用する。

SELECT *
FROM user
WHERE name IS NULL

LIKEで部分一致の絞込

LIKE演算子を使用すると、文字列を部分一致で検索することができます。 部分一致で検索する場合は、パターン文字列を使用します。

SELECT 列名
FROM テーブル名
WHERE 列名 LIKE パターン文字列

パターン文字列

パターン文字列 意味
% 任意の0文字以上の文字列
_ 任意の1文字
SELECT name
FROM user
WHERE name LIKE '%SATO%' 
  • %sato%の場合はhogeSATOhogeのように「前後」に0文字以上のも文字列がついてても検索される
  • %satoの場合はhogeSATOのように「前」に0文字以上のも文字列がついてても検索される

パターン文字列のエスケープ

もし検索対象にパターン文字列がある場合は、エスケープ句を使用します。

「りんご100%」の文字列の「%」をエスケープします。

SELECT name
FROM drink
WHERE name LIKE '%りんご100$%'  ESCAPE '$'

BETWEEN演算子で範囲を指定する

BETWEEN演算子は英語と同じで、「BETWEEN 値A AND 値B」「値Aと値Bの間」のような範囲指定をすることができます。

SELECT 列名,列名,...
FROM テーブル名
WHERE 列名 BETWEEN  値1 AND 値2

10才以上 〜 20才以下の範囲を検索する場合

SELECT *
FROM user
WHERE age BETWEEN  10 AND 20

IN演算子で複数の値と比較

IN演算子は任意の複数の値と比較することができます。

SELECT 列名,列名,...
FROM テーブル名
WHERE 列名 IN (値1,値2,...)

名前がsato、もしくはsuzukiで検索する

SELECT *
FROM user
WHERE name IN ('sato','suzuki')

NOT INにすると、比較に合致しない値を検索します。

ANY/ALL演算子で複数の値と比較

IN演算子はリストの複数の値と比較して、1つでも合致するものがあればtrueを返しました。 単体で利用することはあまりないですが、複数の値を大小比較する場合に使用します。

ANY

ANYは値の大小を比較して1つでも真のものがあればtrueを返します。

SELECT *
FROM user
WHERE age < ANY (10,11)
ALL

ANYは値の大小を比較して全て真であればtrueを返します。

SELECT *
FROM user
WHERE age < ALL (10,11)

SQLの基礎の基礎の基礎

基礎の基礎の基礎ですが、SQL分の4大命令について自分のメモ用にまとめたいと思います。

SQLの4大命令

命令 命令文詳細 絞込 検索 タイプ
SELECT 列名 FROM テーブル名 テーブル検索系
UPDATE テーブル名 SET 列名=値 テーブル更新系
DELETE FROM テーブル名 テーブル更新系
INSERT INTO テーブル名(列名)VALUES (値) テーブル更新系

SELECT

テーブルから目的のデータを取得する。

基本構文

SELECT 列名 ・・・ ①
FROM   テーブル名・・・ ②

① 取得したいテーブルの列名。複数の列を指定する場合はカンマで区切る。 アスタリスクを指定すると全ての列を指定できるが、パフォーマンス上問題になる場合があるのであまり使用しない。

② データを取得するテーブルを指定

例)userテーブルからnameとemailの情報を取得する
SELECT name,enail
FROM user

UPDATE

既にあるテーブルのデータを更新する。

基本構文

UPDATE テーブル名               ・・・   ①
SET 列名1 = 値1,列名2 = 値2,... ・・・  ②
WHERE 条件                     ・・・   ③

① データを更新するテーブルを指定。

② 更新したい列名と、その列に書き込むデータ

③UPDATEは「WHERE」を使って更新条件を指定するケースがほとんどです。 WHEREを使用しない場合は指定した列の全てのデータが書き換わってしまいます。

例)userテーブルのnameとemailの情報更新する
UPDATE user
SET name ='sato' ,email = 'sample@gmail.com'
WHERE date ='2017-05-10'

DELETE

テーブルの行を削除。 特定の列だけを削除することはできません。

基本構文

DELETE 
FROM テーブル名 ・・・ ①
WHERE 条件     ・・・ ②

① データを削除するテーブルを指定。

② DELETEは「WHERE」を使って削除条件を指定するケースがほとんどです。 WHEREを使用しない場合は指定したテーブルの全てのデータが削除されてしまいます。

例)userテーブルのnameが'sato'の列を削除
DELETE 
FROM user
WHERE name ='sato'

INSERT

テーブルに新しいデータを追加する。

基本構文

INSERT INTO  テーブル名         ・・・ ①
             (列名1,列名2,...) ・・・ ②
VALUES       (値1,値2,値3)    ・・・ ③

① データを挿入するテーブルを指定

② 追加する列名。追加する列名は省略することができる。省略した場合は③の値はテーブルの列の順番と対応させる必要がある。

③ 追加する値

例)userテーブルにname:suzuki、email:suzuki@gmail.comを追加
INSERT INTO user
            (name,email)
VALUES      ('suzuki','suzuki@gmail.com')

機械学習は難しい②

前回は「人工知能って何?」というところからやり始めましたが、

今回は機械学習の基礎の基礎の基礎について調べてみました。

機械学習

機械学習とは人工知能を実現する為の手法の1つです。

機械学習(きかいがくしゅう、Machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。

(Wikipedia)

私の理解だと、プログラム(アルゴリズム)によって膨大なデータをコンピューターが解析してデータの規則性やパターンから分類や、新たな予測を立てれるようになる。。。ようなイメージです。

教師あり学習と教師なし学習

機械学習の問題は大きく分けて、「教師あり学習」と、「教師無し学習」に分類されます。 


教師あり学習

機械学習の手法の一つである。事前に与えられたデータをいわば「例題(=先生からの助言)」とみなして、それをガイドに学習(=データへの何らかのフィッティング)を行うところからこの名がある。
プログラムに対して、人間がデータを与え(答えを教える)、そのデータを貯めていくことで、
データの特徴を見つけ出してが判断の基準を作っていくことです。

(Wikipedia)

コンピューターはデータを与えられても何をしていいかわかりません。

そこで、出入力の例(教師データ)をいくつかコンピューターに与えます。

新たな入力データがあった場合にコンピューターが出入力の例(教師データ)を元に、

正しい値を予測して出力することです。

教師なし学習

機械学習の手法の一つである。「出力すべきもの」があらかじめ決まっていないという点で教師あり学習とは大きく異なる。データの背後に存在する本質的な構造を抽出するために用いられる。(Wikipedia)

教師あり学習はなんとなくわかったのですが、教師なしはまったくわかりません。

答えは与えられていないが、データの規則性やパターンからコンピューター自身が法則を導き出していく手法だと思います(説明になっていませんが)。

まとめ

あ〜難しいです。

機械学習は難しい①

 

世間ではバズワード的に「人工知能(AI)」という言葉が流行っています。

書店に行けば関連書だらけです。

 

しかし、己の知能が劣化が激しく、自分の知能のメンテナンスで忙しい私には関係のない話だと思っていましたが、社内で人工知能」のプロジェクトの話が出てきたため、必要に迫られる形で勉強しだすことにしました。

 

とは言え、JSの知識しかない私が、いきなり機械学習などができるわけもなく、

まずは、「そもそも人工知能って何よ」という概念的なところから調べることにしました。

 

人工知能(AI)とは

人間の知能の一部をコンピューターで再現する技術。

人工知能の分類

人工知能といっても、用途や機能によって分類されます。

大きくは下記の4種類になるようです。

特化型と汎用型

AIの用途によって分けられます。

特化型人工知能

自動運転や、将棋対局、画像識別など特定の役割に特化した人工知能

世の中にあるほとんどのAIが特化型。

汎用人工知能

特定の役割に特化せず、人間と同じように自律的に行動する人工知能

 

強いAI、弱いAI

AIの持つ機能によって分けられます。

強いAI

映画やテレビ出てくるAI。

人間のように物事を考えて、判断できるAIのことを指します。

知能そのものを持つ機械です。

 

私の持っていた人工知能のイメージはこれです。

 

例)ドラえもん鉄腕アトム

 

弱いAI

人間が与えた知識で判断するAIのことを指します。

知能を使ってする処理を代わりにやってくれる機械です。

限定的な問題解決に使います。

 

例) 自動運転、将棋対局、画像識別

 

弱いAIの使いみち

今実用化されているほとんどのAIは弱いAIです。

◎画像認識、画像処理

顔認識、画像のフィルタリング

 

◎音声、会話認識

音声入力、会話エンジン

 

◎文章の認識、文章の作成

チャットボット、小説作成

 

◎機械の制御

自動運転、産業用ロポット

 

◎作曲、作画

自動作曲、絵の模倣

 

まとめ

まずは、人工知能基礎の基礎の基礎について調べてみました。

次回からは少しつづ機械学習について調べていこうと思います。 

 

あ〜〜辛い。

 

デザイナーがプログラムを学ぶ理由

この話は、私のような会社のお荷物化しているデザイナーに向けての記事になります。

デザイナーとしてバリバリやってる方にはまるで関係ない話です。

 

私のメインの業務内容は、デザインとフロントエンド開発です。

ワイヤー書いて、デザインして、HTML書いて、JS書くまでが基本の業務です。

デザインにしても、プログラム(JSしか書けませんが・・・)にしても、

実力的には中の下、もしくは下の中くらいです。

若ければ未来がありますが、おじさんなのでいつ社会から抹殺されてもおかしくない実力です。

 

元々「デザイン」という言葉に憧れ、ファッションデザイナーも、グラフィックデザイナーも区別が付かない状態でこの業界に飛び込みました。

 

知ってるデザイナーを聞かれた場合は、MICHIKO LONDONや、岡本太郎と答えて失笑を買っていました。

 

そんな脳みそがつるつるの玉袋みたいな私ですが、今はデザインだけでなくプログラムも少し書いたりします。

 

デザインがあまり上手でない私は、デザインを任せてもらえずHTMLのコーディングばかりをやっていた流れでjavascriptを書くようになりました。

 

その結果気づいた、プログラムをやってよかったこと書きたいと思います。

 

1.デザイン上の演出を自分で調整できる

「ぐぁ〜と横から出したいんです」とメニュー表示の演出をお願いしても、

当然「ぐぁ〜と」の感じ方が人によって違うので正確に伝わりませんし、

「それ大変だから、他のにしてくれない」と言われてしまうかもしれません。

 

少しプログラムができれば、自分でいい感じのぐぁ〜と」を実装することができます。

途中でやっぱり「ビューンと」にしたいと思っても自分で実装していれば気兼ねなく直すこともできます。

 

当然、他の演出方法も実装できるようになりますので、イメージに近い表現が可能となります。

 

イデアのアウトプットを自分だけで完結できるのは素敵なことです。

 

2.次の工程を考慮できるようになる

デザインだけをやっていると、次工程で実装しずらいデザインにしてしまうことがあります。

もちろん、ユーザーにとってそれが有益なデザインであればがんばって実現すべきですが、チームで仕事をしている以上次工程のことは考慮すべきだと思います。

 

デザインは、全体の工程の中で実装フェーズより上流にある場合があります。

その為、デザインによって実装上の難易度は変わってきます。

デザイナーは、作ったデザインはどのように実装されるかをイメージできたほうがよいです。

 

3. エンジニアと共通言語で話ができる

基本的にエンジニアの言ってることは難しくてわかりません。

わかりやすく説明してくれる人もいますが、稀に専門用語を織り交ぜてわざとわかりづらく話してくる場合があります。

そんな時は、「◯◯さん、やっぱりすごいですね〜」と褒めて気持ちよくさせてからもう一度聞くようにしています。

 

少しプログラムができれば、なんとなく言っていることがわかるようになり、前戯しなくてすみます。

 

4.表現の幅が広がる

これが一番のメリットかもしれません。

映像や、3D、ゲームなど何をやるにしてもプログラムはついて回ります。

プログラムができることで、今までグラフィックデザインしかできなかった私が

WEBデザインをやることができました。

頑張ればアプリも作ることもできます。

 

もちろん、プログラムができなくてもWEBデザインも、3Dもゲームデザインもできます。

しかし、プログラムができることでインタラクティブな表現や、細かいエフェクト表現、アニメーションの制御など表現の幅を広げられるのではないかと思います。

 

まとめ

私自身はプログラムを書けるというレベルではありません。

しかもおじさんになってから始めた為、辛い思いをすることも多いです。

 

しかし、時代がおじさんの怠惰を許さなくなってきているので少しずつでもやっていくしかないと思っています。

 

あ〜辛い。