CodeIgniter 4.0.0-rc2.1 をインストールする

CodeIgniter 4 の正式リリースが近づいています。

CodeIgniter 4.0.0-rc2.1 がリリースされていますので、インストールしてみます。

要件

  • PHP 7.2 以上、そして intl 機能拡張
  • composer コマンド

インストール

さて、composer コマンドでインストールを実行します。

$ composer create-project codeigniter4/appstarter ci4-app -s rc
Installing codeigniter4/appstarter (v4.0.0-rc.2)
  - Installing codeigniter4/appstarter (v4.0.0-rc.2): Loading from cache
Created project in ci4-app
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 33 installs, 0 updates, 0 removals
  - Installing zendframework/zend-escaper (2.6.1): Downloading (100%)         
  - Installing psr/log (1.1.0): Downloading (100%)         
  - Installing kint-php/kint (2.2): Downloading (100%)         
  - Installing codeigniter4/framework (v4.0.0-rc.2.1): Downloading (connecting..Downloading (100%)         
  - Installing mikey179/vfsstream (v1.6.7): Downloading (100%)         
  - Installing sebastian/version (2.0.1): Loading from cache
  - Installing sebastian/resource-operations (2.0.1): Loading from cache
  - Installing sebastian/recursion-context (3.0.0): Loading from cache
  - Installing sebastian/object-reflector (1.1.1): Loading from cache
  - Installing sebastian/object-enumerator (3.0.3): Loading from cache
  - Installing sebastian/global-state (2.0.0): Loading from cache
  - Installing sebastian/exporter (3.1.2): Downloading (100%)         
  - Installing sebastian/environment (4.2.2): Loading from cache
  - Installing sebastian/diff (3.0.2): Loading from cache
  - Installing sebastian/comparator (3.0.2): Loading from cache
  - Installing phpunit/php-timer (2.1.2): Loading from cache
  - Installing phpunit/php-text-template (1.2.1): Loading from cache
  - Installing phpunit/php-file-iterator (2.0.2): Loading from cache
  - Installing theseer/tokenizer (1.1.3): Loading from cache
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache
  - Installing phpunit/php-token-stream (3.1.1): Downloading (100%)         
  - Installing phpunit/php-code-coverage (6.1.4): Loading from cache
  - Installing doctrine/instantiator (1.2.0): Loading from cache
  - Installing symfony/polyfill-ctype (v1.12.0): Downloading (100%)         
  - Installing webmozart/assert (1.5.0): Downloading (100%)         
  - Installing phpdocumentor/reflection-common (2.0.0): Downloading (connecting.Downloading (100%)         
  - Installing phpdocumentor/type-resolver (1.0.1): Downloading (100%)         
  - Installing phpdocumentor/reflection-docblock (4.3.2): Downloading (connectinDownloading (100%)         
  - Installing phpspec/prophecy (1.9.0): Downloading (100%)         
  - Installing phar-io/version (2.0.1): Loading from cache
  - Installing phar-io/manifest (1.0.3): Loading from cache
  - Installing myclabs/deep-copy (1.9.3): Downloading (100%)         
  - Installing phpunit/phpunit (7.5.16): Downloading (100%)         
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.6.0)
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0)
phpunit/phpunit suggests installing ext-soap (*)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files
Generating autoload files

はい、できました。簡単ですね。

環境の設定

デフォルトでは本番環境(production)となっている環境を、開発環境(development)に変更します。

プロジェクトのルートにある env ファイルを .env としてコピーし、CI_ENVIRONMENTdevelopment に変更します。

--- env 2019-09-27 14:09:24.000000000 +0900
+++ .env    2019-10-12 20:15:36.269146079 +0900
@@ -14,7 +14,7 @@
 # ENVIRONMENT
 #--------------------------------------------------------------------

-# CI_ENVIRONMENT = production
+CI_ENVIRONMENT = development

 #--------------------------------------------------------------------
 # APP

ビルトインサーバの起動

開発用のビルトインサーバを起動してみましょう。

$ cd ci4-app
$ php spark serve
CodeIgniter CLI Tool - Version 4.0.0-rc.2 - Server-Time: 2019-10-12 05:57:38am

CodeIgniter development server started on http://localhost:8080
Press Control-C to stop.

サーバが起動しました。

Welcome ページの表示

ブラウザで http://localhost:8080/ にアクセスしてみましょう。

Welcome ページが表示されました!


右下の CodeIgniter のアイコンを押して、デバッグツールバーの情報を見てみましょう。


処理時間の確認。


Views を押すと、ビューファイルがわかります。


ロードされたファイル。


ルーティング情報。


変数の情報。


システム構成。

まとめ

  1. CodeIgniter4 は composer コマンドからすぐにインストールできます。
  2. CodeIgniter4 は rc2 まで進んでおり、正式リリース目前です。
  3. CodeIgniter4 は軽量です。--no-dev でインストールすると vendor フォルダは 5.6MB です。

参考

Tags: codeigniter4, codeigniter

トイドローン Tello を PHP でプログラムする

昨日に引き続き Tello です。

Tello とは?

1万円ちょっとで買える200g未満のドローンで、スマホでコントロールします。動画や静止画を撮ることもでき、また、プログラムでドローンを制御することが可能です。

オンラインでもいろいろなところから買えますし、

実物も 大須ドローンステーション などで見られると思います。

初期設定の手順は以下を見るとわかります。

ちなみに、Tello はドローン本体が Wi-Fi AP になっており、それにスマホやMacなどを接続するため、1台のドローンしかコントロールすることができません。複数台にコマンドを送信し制御したいという人は Tello EDU という機種があり、そちらはドローン本体を既存の Wi-Fi AP に接続できるそうです。

開発環境の構築

昨日は、公式にサポートされている Scratch でした。

ただし、Scratch と言いながら何で Node が必要なの?と疑問に思われた方や、あるいは、Tello.js のコードを読むと Scratch いらないんじゃない?と思われた方も多いかと思います。

はい、Tello をプログラムするためには、Scratch も Node も必須ではありません。 PHP でも OK です。

ということで、すでに PHP の開発環境は構築済みだと思いますので、先に進みましょう。

プログラミング

ということで PHP で書いてみましょう。

tello-php.php

<?php

$tello_ip = '192.168.10.1';
$tello_port = 8889;

if (! $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) {
    echo "Can't create socket" . PHP_EOL;
    exit(1);
}

// コマンドモードにする
sendCommand("command");

sleep(2);

// 離陸する
sendCommand("takeoff");

sleep(5);

// 着陸する
sendCommand("land");

function sendCommand($command)
{
    global $socket;
    global $tello_ip;
    global $tello_port;

    echo date("c") . ': ' . $command . PHP_EOL;

    socket_sendto($socket, $command, strlen($command), 0, $tello_ip, $tello_port);
}

UDP で Tello の Port 8889 にテキストでコマンドを送信すればいいだけです。簡単ですね!

Tello のコマンドについては、Tello SDK や以下のブログ記事を参考にしてください。

プログラム実行の準備

Tello の起動

Tello のスイッチを on にします。

Wi-Fi 接続

Mac から Tello に Wi-Fi で接続します。

プログラムの実行

ドローンの位置とプログラムの内容を確認してから、ターミナルからプログラムを実行しましょう。

$ php tello-php.php

一旦実行すると、ドローンを途中で止めることができませんので、誤った場所から飛ばすと、壁に激突したりして危険です。

うまくいけば、Tello が飛んでいるはずです。

参考

Tags: tello

トイドローン Tello を Scratch でプログラムする

Tello とは?

1万円ちょっとで買える200g未満のドローンで、スマホでコントロールします。動画や静止画を撮ることもでき、また、プログラムでドローンを制御することが可能です。

オンラインでもいろいろなところから買えますし、

実物も 大須ドローンステーション などで見られると思います。

初期設定の手順は以下を見るとわかります。

ちなみに、Tello はドローン本体が Wi-Fi AP になっており、それにスマホやMacなどを接続するため、1台のドローンしかコントロールすることができません。複数台にコマンドを送信し制御したいという人は Tello EDU という機種があり、そちらはドローン本体を既存の Wi-Fi AP に接続できるそうです。

開発環境の構築

Mac で開発環境を構築してみます。

Windows でも似たようなものだと思いますが。

Scratch 2.0 Offline Editor のインストール

https://scratch.mit.edu/download/scratch2 にアクセスします。

リンクから、Adobe AIRをダウンロードし、インストールします。

Scratch 2.0オフラインエディターをダウンロードし、インストールします。

Node.js のインストール

https://nodejs.org/en/ にアクセスします。

「10.15.3 LTS Recommended For Most Users」をダウンロードします。 Node.js をインストールします。

Tello.js のインストール

Tello公式ウェウサイト にアクセスし、「Scratch README」をクリックします。PDFファイル「Tello Scratch README」が開きますので、「Click here to download」のリンクをクリックします。

Scratch_For Tello.7z がダウンロードされますので、展開します。

$ 7z x Scratch_For\ Tello.7z

展開すると「Scratch_普通版」フォルダが作成されます。

Scratch に Tello.s2e をインストール

Scratch を起動します。

Shift キーを押しながら、「ファイル」メニューをクリックし、「実験的なHTTP拡張を読み込み」をクリックします。

「Scratch_普通版」フォルダの中の「Tello.s2e」を選択します。

これで、「スクリプト」タブの「その他」に「take off」「land」などの Tello を制御するコマンドが追加されました。

プログラミング

Scratch でプログラミングします。

Scratch の使い方がわからない方は、以下の記事などを参考にしてください。私もよくわかっていません。

プログラム実行の準備

Tello の起動

Tello のスイッチを on にします。

Wi-Fi 接続

Mac から Tello に Wi-Fi で接続します。

Tello.js の起動

ターミナルから、「Scratch_普通版」フォルダに移動して、Tello.js を実行します。

$ cd Scratch_普通版/
$ node Tello.js 
---------------------------------------
Tello Scratch Ext running at http://127.0.0.1:8001/
---------------------------------------
server listening 0.0.0.0:8890
Data received from server : ok
Received 2 bytes from 192.168.10.1:8889

[lhp_debug]carryCMD_else

これで、準備 OK です。

プログラムの実行

ドローンの位置とプログラムの内容を確認してから、Scratch からプログラムを実行しましょう。

一旦実行すると、ドローンを途中で止めることができませんので、誤った場所から飛ばすと、壁に激突したりして危険です。

うまくいけば、Tello が飛んでいるはずです。

参考

Tags: tello