機械系大学生の修行ログ

sh-lu0's Tech Blog

アイドルが力をくれる

UnityでAndroidにビルドする(Mac)

書き込みの流れ

Unityのプロジェクト ↓ Android用実行ファイル apkファイル作成 ↓ 実機に書き込み

ビルドの設定

  • ツールバーからFile->Build Settings Platform欄からAndroidを選択 Switch Platformをクリック
  • 書き込みたいSceneが「Scenes In Build」にあるかチェック
  • Gameビューの画面サイズが適切かチェック

SDKのパスを設定

  • Unity->Preference->External Toolsを開く Android/SDK欄に「/Users/ユーザ名/Library/Android/sdkAndroid/JDK欄に「/Applications/AndroidStudio.app/Contents/jre/jdk/Contents/Home」

Androidへの書き出し設定

  • File->Build Settings->Player Settingsをクリック
  • InspectorのCompany Nameを設定
  • Inspector->Settings for Android->Other Settings->Package Nameを「com.ユーザ名.プロジェクト名」に変更

Android本体側の設定

  • 設定->システム->端末情報->「ビルド番号」を7回タップ →「デベロッパーになりました!」という表示が出てくる
  • 設定->システム->開発向けオプションをON USBデバッグをON
  • USBでPCに接続

書き出し

  • 実機のロックを解除
  • File->Build Settings->Build And Run
  • 書き込みが終わるとアプリがスタートする

Docker ComposeでLAMP環境構築にチャレンジ(Mac)

前回は本通りに掲示板を作成しました.MAMPを使用したので,環境構築が爆速でした.よく分かっていないのに「なんか繋がった!」「なんかデータベースいじれる!!」「できた!!!」という感じでした. sh-lu0.hatenablog.com

なので,今回はMAMPに頼らず自分で環境構築をしてみようと思います.せっかくですので,今まで「使った方がいいっぽい」と思いつつ難しそうと敬遠していたDockerを使います.

(2019/05/14 追記) 作業順に書いており分かりにくかったため構成を修正.

Dockerをインストールする

Install Docker Desktop for Mac | Docker Documentation

作業ディレクトリ構成(最終盤)

最終的なディレクトリ構成とコードを先に載せる.

├── Docker
│   └── web
│       └── Dockerfile
├── README.md
├── client
│   └── index.php
├── db
│   └── mysql_data
└── docker-compose.yml

db:DBサーバ用ディレクト
client:クライアントディレクト
DockerfileはDockerフォルダでまとめて管理

docker-compose.yml(最終盤)

version: '2'
services:
  db:
    image: mysql:5.7
    ports:
      - '3306:3306'
    volumes:
      - ./db/mysql_data:/var/lib/mysql ---(1)
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
  web:
    build: ./Docker/web
    ports:
      - '8080:80' ---(2)
    volumes:
      - ./client:/var/www/html ---(3)
    depends_on:
      - db ---(4)

(1)ローカルのmysql_dataディレクトリにデータを残す
(2)8080がホスト側のポート,80がdockerコンテナ側のポートで紐付け
(3)トップページのデータが入っているディレクトリをclientに指定
(4)dbとリンクさせる.※depends_onとlinkの違いは,version2ではないらしい

docker-compose.ymlというファイルを作成することによって,
DBコンテナ立ち上げて...WEBサーバーコンテナ立ち上げて...linkさせて...
というのを一気にやってくれる.すごい!
(最初はdocker-composeて何??こわ!!と思い,1つずつlinkやport設定をコマンドで指定してた・・・)

web/Dockerfile(最終盤)

サーバーに接続したところで,pdo_mysqlがインストールできなくて詰まったため,
Dockerfileでpdo_mysqlのインストールを行う.

From php:7.1-apache
Run apt-get update && docker-php-ext-install pdo_mysql

index.php(最終盤)

MySQLに接続
dbnameに使用するdb名,hostにdocker-composeに書いたコンテナ名

<?php
phpinfo();
try {
    $db = new PDO('mysql:dbname=test_db;host=db', 'root', 'root');
} catch (PDOException $e) {
    print('Error:'.$e->getMessage());
    die();
}
 ?>

<p>hello world!</p>

いざDocker起動!

$docker-compose up-d

f:id:sh_lu0:20181208213425p:plain
起動しているか確認

$docker ps

f:id:sh_lu0:20181208213510p:plain
ちゃんと2つ起動してる!

client/index.phpにhelloworldを書いて,
docker-composeのportでホスト側8080を指定したので,http://localhost:8080/にアクセスすると,
f:id:sh_lu0:20181208213711p:plain
繋がりました!

ちなみに,なんとなくup -dと書いていたけど,

$docker-compose up

とすると f:id:sh_lu0:20181208213802p:plain
のようにアクセスされるたびに出力が見れる.-dをつけるとバックグラウンド上で起動する.

MySQLにログインしてDBを作成

$mysql -uroot -proot -h127.0.0.1  #ログイン
$CREATE DATABASE test_db;

無事ブラウザに表示されるまでの道のり

ぼつになったディレクトリ構成とdocker-compose.yml

php_bbs
├── README.md
├── db
│   └── mysql_data
├── docker-compose.yml
├── client
│   └── index.php
└── web

docker-compose.yml

version: '2'
services:
  db:
    image: mysql:5.7
 ports:
      - '3306:3306'
    volumes:
      - ./db/mysql_data:/var/lib/mysql 
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
  web:
      image: php:7.1-apache
      ports:
        - '8080:80' 
      volumes:
        - ./client:/var/www/html 
      depends_on:
        - db 

ハマった点①pdo_mysqlがインストールできてない

ちゃちゃっとpdo接続の構文を探してきて,
http://localhost:8080/で確認して終わり!!かと思ったらエラーが出てハマった.

client/index.php

<?php
phpinfo();
try{
    $db = new PDO('mysql:dbname=testdb;host=localhost';port=3306,'root','root');
}catch (PDOException $e){
    print('Error:'.$e->getMessage());
    die();
}
 ?>

<p>hello world!</p>

でテストしたところ,could not find driverとエラーが出たので,phpinfo();で確認. f:id:sh_lu0:20181208213709p:plain 確かにpdo_mysqlがない.

①解決法:dockerfileでpdo_mysqlをインストール

docker-compose.yml上にpdo_mysqlをインストールさせる指示は書けないので,
ディレクトリ構成を最終盤に変更して,
・docker-compose.ymlのwebをimage→buildに書き換える.
・web/Dockerfileの中でpdo_mysqlをインストールする.

すると f:id:sh_lu0:20181208213703p:plain
ちゃんとインストールできた.

ハマった点②ホストの指定先がlocalhostじゃダメ

ドライバーないよ問題を乗り越えたかと思ったら,今度はこのエラーが出た.

Error:SQLSTATE[HY000] [2002] No such file or directory

原因が分からずに散々ググってググって途方に暮れていたけど,hostの指定先がdocker上になっていないからダメだった(涙)

②解決法:hostをdocker-composeで設定した名前に変更

$db = new PDO('mysql:dbname=test_db;host=localhost';port=3306,'root','root');

↓変更

$db = new PDO('mysql:dbname=test_db;host=db','root','root');

docker-compose.ymlでDBコンテナ名をdbとしていたので,host=dbとすると,

繋がりました・・・!!

(portの設定もいらないみたいです.書くとエラーになりました.)

参考にしたサイト:
Docker Compose - docker-compose.yml リファレンス - Qiita
Docker for MacとDocker ComposeでささっとLAMP環境を作る - Qiita
ありがとうございます

よくわかるPHPの教科書買った

とりあえず本買って作ってみる

新しいことを始めるときはまず本を買う(楽しい).
受験などで感じたことですが,参考書は「自分のレベルに合っているか」「楽しいか(最後まで続けられそうか)」が大事だと思っているので,今回も店頭で実際に見てみて,直感で選びました.挫折しないことが重要なので,最初はできるだけハードルの低そうな本を選びます.笑

今回購入したのはたにぐちまことさんの,「よくわかるPHPの教科書」です.

よくわかるPHPの教科書 【PHP7対応版】

よくわかるPHPの教科書 【PHP7対応版】

この本の良かった点は,以下の2点.

・デザインがスッキリしていて分かりやすい
・一通り学べる

1章:プログラミングの考え方
2章:環境構築
3章:PHPの基本
4章:DBの基本
5章:Twitter風の掲示板を作る(DBも使って)

の構成になっていて,考え方〜DBを使用したサイト作成まで一通り学べました. サーバー起動やDB作成もMAMPを使うので爆速で終わります.初心者でも安心です.私はPythonを少し使っていたので3章を飛ばしましたが2日程度で完成できました.

注意するとすれば,サンプルの結果表示が本上では装飾つきになっていますが,本の中ではCSSのコードは出てきません.なので,真似して作っても同じ見た目にはなりません.自分でCSSファイルを作成して,HTMLファイルとリンクさせる必要があります.

参考:CSSはどこに書く?外部CSSファイルの読み込み方&インラインでの書き方