Bash on Ubuntu on Windows に PHP をインストールして Slack API を送信する
Windows 10 Insider Preview Build 14316 で提供されている Bash on Ubuntu on Windows では、デフォルトで Perl や Python が利用できます。デフォルトで PHP は利用できませんが、apt-get
でインストールすることができます。今回は Bash on Ubuntu on Windows に PHP をインストールし、Slack API (Incoming Webhooks) を送信してみます。
なお、Bash on Ubuntu on Windows 自体のインストール方法は以下の記事を参照してください。 docs.hatenablog.jp
まず、Bash on Ubuntu on Windows を起動して次のコマンドを実行し、PHP をインストールします。
apt-get install php5-cli php5-curl
Bash on Ubuntu on Windows では、WindowsのCドライブは/mnt/c/
ディレクトリとして参照できます。今回はCドライブの下にonUbuntu
フォルダを作成し、そこにslack.php
というファイルを作成して以下のようなコードを書いて保存します。このファイルは vi で作成しても構いませんし、Windows 付属のメモ帳や使い慣れたテキストエディタで作成できるのも Bash on Ubuntu on Windows のメリットです。
<?php // Slackの[Webhook URL]欄に表示されているURL $webhook_url = 'https://hooks.slack.com/services/xxxxx'; // Slackに投稿するメッセージ $msg = array( 'username' => 'Slackテスト', 'text' => 'Hello, Slack Incoming WebHooks.' ); $msg = json_encode($msg); $msg = 'payload=' . urlencode($msg); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $webhook_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $msg); curl_exec($ch); curl_close($ch);
ファイルを作成したら次のコマンドを実行することで Slack にメッセージが投稿されます。
php /mnt/c/onUbuntu/slack.php
なお、Slack API について(特に「Webhook URL」の取得方法)は以下の記事を参照してください。 docs.hatenablog.jp
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログを見る
Windows 10 の Bash on Ubuntu on Windows をインストールしてRubyでHello, World.
Microsoft社は開発者向けカンファレンス「BUILD 2016」にて、2016年夏の Windows 10 の大型アップデート(Windows 10 Anniversary Update)で Bash を搭載することを発表しました。そしてその後公開した Windows 10 Insider Preview Build 14316(以下 Build 14316)では早くも Windows Subsystems for Linux ベータ版を提供して Bash on Ubuntu on Windows が実行できるようになっています。ここでは Build 14316 で Bash on Ubuntu on Windows をインストールして実行するまでの手順を説明します。なお、Build 14316 にアップデートするためにはスタートメニューの[設定]-[更新とセキュリティ]の[開発者向け]で[開発者モード]を選択し、[Windows Update]-[詳細オプション]でInsiderのレベルを[ファースト]に設定する必要があります。
まず、Build 14316 のスタートメニューから[すべてのアプリ]-[Windows システム ツール]-[コントロール パネル]を開き、[プログラム]-[Windows の機能の有効化または無効化]で[Windows Subsystem for Linux (Beta)]にチェックを入れて再起動します。
再起動後、スタートメニューから[すべてのアプリ]-[Windows システム ツール]-[コマンド プロンプト]を実行し、bash
と入力します。Type "y" to continue:
と表示されるので、y
を入力するとインストールが進みます。
インストールが完了すると、プロンプトが>
から#
へ変わります。
また、スタートメニューに[Bash on Ubuntu on Windows]が追加されています。
これで Bash on Ubuntu on Windows を実行する環境が整いました。さっそくスタートメニューの[Bash on Ubuntu on Windows]を実行して、いくつかのコマンドを試してみます。/
以下にはLinuxではおなじみのディレクトリが並んでいます。また、/mnt
以下には Windows のCドライブがあります。
デフォルトでssh
も実行できます。
デフォルトでperl
やpython
も実行できます。
デフォルトでruby
は入っていませんが、Ubuntuでおなじみのapt-get
が入っているので、apt-get install ruby
でインストールすることができます。
このように、ベータ版ながら、デフォルトでもLinux(Ubuntu)のコマンドがシームレスに、軽快に動作し、apt-get
でソフトウェアを追加できることが確認できました。今から Windows 10 Anniversary Update が楽しみです。
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る
最近のブラウザの JavaScript では class 構文が動く
Firefox 45 正式版がリリースされたことにより、Firefox、Google Chrome、Microsoft Edge では、デフォルトで JavaScript の class 構文がサポートされるようになりました。つまり、他のプログラミング言語でも馴染みのあるクラスを用いたオブジェクト指向プログラミングが可能となります。
class Browser { constructor(name) { this.name = name; } greet() { console.log('Hello, ' + this.name); } } var edge = new Browser('Edge'); edge.greet(); // Hello, Edge var chrome = new Browser('Chrome'); chrome.greet(); // Hello, Chrome var firefox = new Browser('Firefox'); firefox.greet(); // Hello, Firefox
クラスの継承もサポートします。
class LegacyBrowser extends Browser { greet() { console.log('Good bye, ' + this.name); } } var ie = new LegacyBrowser('IE'); ie.greet(); // Good bye, IE
なお、今まではプロトタイプを用いた次のようなコードでオブジェクト指向プログラミングを実現していました。
var Browser = (function () { function Browser(name) { this.name = name; } Browser.prototype.greet = function () { console.log('Hello, ' + this.name); }; return Browser; }()); var edge = new Browser('Edge'); edge.greet(); // Hello, Edge var chrome = new Browser('Chrome'); chrome.greet(); // Hello, Chrome var firefox = new Browser('Firefox'); firefox.greet(); // Hello, Firefox
- 作者: David Flanagan,村上列
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/08/10
- メディア: 大型本
- 購入: 12人 クリック: 252回
- この商品を含むブログ (18件) を見る
オープンソース化された Swift を Ubuntu で実行する
Apple 社が開発したプログラミング言語 Swift がオープンソース化されました。Swift.org というサイトが公開されており、ソースコードは GitHub で管理されています。
Swift はこれまで主に Apple 社の OS X や iOS 用のソフトウェアを開発するためのプログラミング言語として知られてきましたが、今回のオープンソース化によって Linux 用の開発ツールも提供されました。そこで、公式サイトで提供されている Ubuntu 用の開発ツールを使用してみます。サポートされているのは Ubuntu 14.04 または 15.10 です。バイナリファイルが用意されているので非常に簡単です。
まず、Swift の実行に必要なソフトウェアをインストールしておきます。
$ sudo apt-get install clang libicu-dev
次に、Swift.org から Ubuntu 用の開発ツールをダウンロードして展開します。今回は Ubuntu 14.04 版をダウンロードしました。
$ wget https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz $ tar xzf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
最後に、展開したディレクトリ内の usr/bin
を PATH
に追加します。
$ export PATH=/自分の環境に合わせて適切なパスを書く/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:"${PATH}"
これで swift コマンドが利用できるようになりました。
$ swift -version Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) Target: x86_64-unknown-linux-gnu
それでは、簡単なプログラムを書いて実行してみます。以下のコードを hello.swift
というファイル名で保存します。
print("Hello, Swift.")
以下のコマンドを実行すると結果が出力されます。
$ swift hello.swift Hello, Swift.
もちろん、Swift はコンパイルして実行可能ファイルを生成することもできます。デフォルトでパッケージマネージャの仕組みが用意されているため、それに則って実行してみます。
まず、パッケージ用のディレクトリを作成します。ここでは Hello
ディレクトリを作成します。
$ mkdir Hello $ cd Hello
次に、マニフェストファイル Package.swift
を作成します。デフォルトの設定では空のファイルで構いません。
$ touch Package.swift
ソースファイルを作成します。デフォルトでは Sources
ディレクトリの main.swift
というファイルから実行されます。
$ mkdir Sources
ここではソースファイル main.swift
に次のようなコードを追加します。
print("Hello, Swift.")
ディレクトリ構成は以下のようになります。
Hello/ ├── Package.swift └── Sources └── main.swift
ソースファイルをビルドするには以下のコマンドを実行します。
$ swift build Compiling Swift Module 'Hello' (1 sources) Linking Executable: .build/debug/Hello
ビルドが成功すると、.build
ディレクトリに実行可能ファイルが生成されます。
$ .build/debug/Hello Hello, Swift.
なお、デフォルトではデバッグ版が生成されます。リリース版をビルドするには -c release
オプションを追加して実行します。
$ swift build -c release Compiling Swift Module 'Hello' (1 sources) Linking Executable: .build/release/Hello
- 作者: 荻原剛志
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/12/25
- メディア: 単行本
- この商品を含むブログを見る
PHP 7 正式版をソースファイルからインストールして試してみる
何回かの延期を経て、ついに PHP 7 正式版がリリースされました。
http://php.net/archive/2015.php#id2015-12-03-1
PHP 7 は久々のメジャーバージョンアップであり、処理速度の大幅な向上が期待されるほか、新機能も追加されています。さっそくソースファイルからインストールして試してみます。
なお、ここではWebサーバなどは使わず、単純にコマンドラインで実行を確認します。OS は VirtualBox 上の Ubuntu Server 14.04.3 LTS を使用し、必要なソフトウェアは、都度 sudo apt-get install
でインストールしています。(例えば sudo apt-get install clang libxml2-dev
など)
まず、PHP 7 のソースファイルを取得します。
$ wget http://jp2.php.net/get/php-7.0.0.tar.gz/from/this/mirror -O php-7.0.0.tar.gz
ダウンロードしたファイルを展開し、展開したディレクトリに移動します。
$ tar zxvf php-7.0.0.tar.gz $ cd php-7.0.0
ソースファイルからビルドします。今回は試すだけなので ./configure
のオプションには特に何も指定していません。
$ ./configure $ make $ make test $ sudo make install
インストールに成功すると php
コマンドが利用できるようになります。
$ php -v PHP 7.0.0 (cli) (built: Dec 4 2015 15:39:25) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
では、試しに PHP 7 の新機能である無名クラスを利用してみます。以下のコードを sample.php
というファイル名で保存します。
<?php (new class { public function greet() { echo "Hello, PHP 7.\n"; } })->greet();
以下のコマンドを実行します。成功すると Hello, PHP 7.
と出力されます。
$ php sample.php Hello, PHP 7.
他の新機能や、PHP 5.6 から PHP 7 への移行ガイドなどは公式のドキュメントに詳細が記載されています。
PHP: PHP 5.6.x から PHP 7.0.x への移行 - Manual
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (59件) を見る
PHP 7 リリース予定日(2015年12月3日)
PHP 7の正式版リリースが2015年11月12日から2015年11月26日に延期されましたが、2015年11月26日にはさらにRC8がリリースされました。
http://php.net/archive/2015.php#id2015-11-26-1
This release candidate prepares the short jump to the RTM. If no major issues appear, the 7.0.0 general availability (GA) release will be brought out on December 3rd.
大きな問題が見つからなければ、正式版リリースは2015年12月3日に予定されています。
今回のRC8では11件のバグが修正されています。
Slack API (Incoming Webhooks) が簡単すぎた
Slack はビジネスなどでも使われているチャットツールですが、ただチャットしているだけでは Skype や LINE でグループチャットしているのと同じようなものです。Slack が真価を発揮するのは、API を利用して簡単に外部と連携できることでしょう。ここでは Slack API の中でも Incoming Webhooks を利用して、外部から Slack へ投稿する例を説明します。
まず、以下の手順で Webhook URL を取得します。
- Slackにログインして、左側のメニューから [Menu]-[Integrations] を選択します。
- [Configured Integrations]-[Incoming WebHooks]-[Add]ボタンを押して Incoming Webhook を追加します。
- [Webhook URL] 欄に今回利用するURLが表示されています。
あとは Webhook URL に対してJSON形式のメッセージをPOSTするだけです。
<?php // [Webhook URL]欄に表示されているURL $webhook_url = 'https://hooks.slack.com/services/xxxxx'; // Slackに投稿するメッセージ $msg = array( 'username' => 'Slackテスト', 'text' => 'Hello, Slack Incoming WebHooks.' ); $msg = json_encode($msg); $msg = 'payload=' . urlencode($msg); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $webhook_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $msg); curl_exec($ch); curl_close($ch);
Slackに次のように投稿されると成功です。
Incoming Webhooks では username
や text
の他にもアイコンを指定するプロパティなどが用意されています。詳細は公式ドキュメントを参照してください。