MEAN を動かしてみる
MEAN は MongoDB、Express、AngularJS、Node.js で構成される Web アプリケーションを構築するための アーキテクチャであり、LAMP (Linux、Apatch、MySQL、PHP) に変わる技術として注目されています。
全て JavaScript で記述でき、データを JSON でやり取りするので、シンプルにアプリケーションを構築することができます。
MEAN の環境を容易に構築するためのツールが MEAN.IO から提供されています。
MEAN をインストールし動作の確認までを行っていきます。
MEAN のインストール
最初に、MEAN を動かすのに必要なものをインストールします。
Node.js、MongoDB、Git が必要で、さらに npm で Gulp と Bower がインストールされていなければなりません。
MongoDB 以外はすでにインストールされているので、MongoDB のインストールを行います。
MongoDB のインストール
MongoDBのドキュメントを参考にインストールを行います。
最初に Homebrew をアップデート。
$ brew update
続いて MongoDB をインストール。
SSL を利用するためのオプションをつけて実行しました。
$ brew install mongodb --with-openssl
インストールが完了したら最後に表示される指示通りにコマンドを実行。
$ ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
MongoDB にアクセスできるかを確認。
$ mongo MongoDB shell version: 3.0.2 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2015-04-15T19:05:12.483+0900 I CONTROL [initandlisten] 2015-04-15T19:05:12.483+0900 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
問題なく動作しているようです。
mean-cli のインストール
mean-cli は Node.js の v0.10.x が必要ですとのことなので、nodebrew を使って v0.10.x の最新である v0.10.38 をインストールして切り替え。
そして、npm で mean-cli をインストール。
$ npm install -g mean-cli
完了後、バージョンを確認。
$ mean -v 0.9.29
コマンドでアプリケーションの作成
作業ディレクトリに移動後、以下のコマンドを実行。
$ mean init HelloMEAN
HelloMEAN
ディレクトリに移動し、依存するモジュールをインストール。
$ npm install
完了後、gulp のデフォルトタスクを実行。
$ gulp
localhost の 3000 ポートでサーバ起動。
無事にアクセスすることができました。
$ node server
server.js からサーバが起動することも確認。
nodebrew を使った node.js のバージョン管理
今まで homebrew で直接 node.js をインストールしていたのですが、nodebrew を使ってバージョン管理できるようにしました。
node.js のアンインストール
最初にすでにインストールされている node.js をアンインストールします。
npm をアンインストール。
$ rm -rf /usr/local/lib/node_modules $ rm -rf /usr/local/bin/npm
homebrew を利用してインストールした node.js をアンインストール。
$ brew uninstall node
パッケージでインストールした際はここを参考に。
nodebrewのインストール
node.js のバージョン管理を可能にする nodebrew をインストールします。
hodebrew を利用してインストールすることができます。
$ brew install nodebrew
パスの設定
nodebrew へのパスを設定します。
以下を.bash_profile
に記載。
export PATH=$HOME/.nodebrew/current/bin:$PATH
.bash_profile
の変更を反映します。
$ source .bash_profile
node.jsのインストール
node.js の最新版をインストールします。 バイナリでインストール可能な最も新しいものを指定します。
$ nodebrew install-binary latest
完了後、ローカルにインストールされているバージョンの確認を行います。
v0.12.2 が最新のようです。
$ nodebrew list v0.12.2 current:none
続いてインストールしたバージョンを利用するように設定します。
$ nodebrew use v0.12.2
別のバージョンで利用していた npm パッケージの移行
nodebrew でインストールした node.js のあるバージョンで利用していた npm パッケージを、他のバージョンに移行する際は、以下のコマンドを実行すればよいようです。
$ nodebrew migrate-package [version]
Raspberry Pi を Bluetooth Low Energy (BLE) の Peripheral として動作させる
Raspberry Pi に Bluetooth ドングルを接続し、BLE の Peripheral として動作させてみました。
Raspberry Pi のモデルは、Model B+ V1.2 、Bluetooth ドングルは Planex の BT-Micro4 を利用しています。
BlueZ のインストール
BlueZ はオープンソースの Bluetooth プロトコルスタックです。
Linux 等で利用されており Android でも、 4.1 まで BlueZ が利用されていました。
ライブラリのインストール
RPi Bluetooth LE を参考に、必要なライブラリをインストールします。
$ sudo apt-get update $ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libical-dev libreadline-dev libudev-dev libusb-dev make
BlueZ のダウンロード
BlueZ のソースコードをダウンロードします。
$ mkdir ble $ cd ble $ wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.4.tar.xz $ xz -d bluez-5.4.tar.xz $ tar xvf bluez-5.4.tar
BlueZ のインストール
ソースコードをビルドします。
ビルドには少し時間がかかります。
$ cd bluez-5.4 $ ./configure --disable-systemd $ make
ビルドが完了したらインストール。
$ sudo make install
動作の確認
Bluetooth ドングルのチェック
Raspberry Pi に Bluetooth ドングルを接続し、以下のコマンドを実行。
$ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) Bus 001 Device 004: ID 0789:0168 Logitec Corp. LAN-W150N/U2 Wireless LAN Adapter
Device 005 が接続した Bluetooth ドングルです。
Bluetooth ドングルの詳細を表示。
$ sudo lsusb -v -d 0a12:
hcitool を使ってみる
Bluetooth の状態を確認。
$ hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:05:XX:XX ACL MTU: 310:10 SCO MTU: 64:8 DOWN RX bytes:547 acl:0 sco:0 events:27 errors:0 TX bytes:384 acl:0 sco:0 commands:27 errors:0
Bluetooth を起動。
$ sudo hciconfig hci0 up $ hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:05:XX:XX ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:1094 acl:0 sco:0 events:54 errors:0 TX bytes:768 acl:0 sco:0 commands:54 errors:0
3行目が UP RUNNING に変わり、Bluetooth が起動しました。
Bluetooth デバイスのスキャン
$ sudo hcitool lescan LE Scan ...
周囲にある Bluetooth デバイスのリストが表示されます。
特に問題なく Bluetooth ドングルは動作しているようです。
node.js で Bluetooth を利用する
node.js の bleno を利用します。
nodebrew で node.jsをインストール
bleno を利用するために、まずは node.js をインストールします。
node のバージョン管理を行う nodebrew を利用してインストールします。
$ curl -L git.io/nodebrew | perl - setup
インストールが完了したら.bashrc
に PATH を追加。
export PATH=$HOME/.nodebrew/current/bin:$PATH
設定を読み込みます。
$ source .bashrc
PATH が通ったかどうかを確認。
$ nodebrew help
node をインストール。
Raspbian で動作するバイナリの最新バージョンは v0.10.28 のようなので、そのバージョンを指定してインストール。
$ nodebrew install-binary v0.10.28
インストールできたことを確認。
$ nodebrew list v0.10.28 current: none
インストールしたバージョンを利用するように設定します。
$ nodebrew use v0.10.28
nodeのバージョンを確認
$ node -v v0.10.28
bleno のインストール
bleno をインストールするまえに、必要なライブラリをインストール。
sudo apt-get install bluetooth bluez-utils libbluetooth-dev
作業ディレクトリを作成し、ローカルに bleno をインストール。
$ cd workspace $ mkdir ble $ cd ble $ mkdir GATT $ cd GATT $ npm install bleno
root/sudo を使わなくても実行できるようにします。
$ sudo apt-get install libcap2-bin
setcap を実行するためのライブラリをインストール後、npm install
を実行したディレクトリで以下のコマンドを実行します。
$ find -path '*bleno*Release/hci-ble' -exec sudo setcap cap_net_raw+eip '{}' \;
GATT ディレクトリにindex.js
ファイルを作成し、sandeepmistry/bleno を参考に GATT のサービスを構築しました。
実行して、Apple の Bluetooth Explorer で、動作を確認します。
$ node index
Service UUID がアドバタイズされ、接続して設定した Characteristic の値を読み出すことができました。
Swiftのライブラリ管理ツール『Carthage』
転職してから少しiOSアプリ開発から遠ざかっていたのですが、その間にSwiftに対応した新しいライブラリ管理ツールCarthageが出ていました。
Objective-Cの時から有名なライブラリ管理ツールのCocoaPodsも昨年末にSwiftの対応が行われたようですが、一度Carthageも試してみます。
インストール
brewを使ってインストールできます。
インストール用のpkgが用意されているほか、Githubのソースからコンパイルすることも可能なようです。
まずはbrewのアップデート
$ brew update
完了したらインストールコマンドを実行
$ brew install carthage
完了したらバージョンを確認
$ carthage version
インストールした時点のバージョンは0.6.2
ライブラリの追加
JakeLin/SwiftWeatherでライブラリの追加方法を確認します。
まずはSwiftWeatherをクローン。
クローンできたら、プロジェクトファイルと同じディレクトリのCartfileを確認。
Carthageでは利用するライブラリをCartfileで管理します。
github "SwiftyJSON/SwiftyJSON" github "ishkawa/Alamofire"
SwiftWeatherはSwiftyJSONとAlamofireを利用しています。Carthageを使って、この2つのライブラリをインストールします。
Cartfileがあるディレクトリに移動し、以下のコマンドを実行。
carthage update
としたのですが、
DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-6269/Xcode3Core/LegacyProjects/Frameworks/DevToolsCore/DevToolsCore/SpecificationTypes/BuiltInSpecifications/Compilers/XCGccMakefileDependencies.m:77
からはじまるエラーメッセージが表示されてうまくインストールできませんでした。
プロジェクトを新規で作成してCartfileを作成しても同じエラーが…。
何気なくiOS Simulatorでアプリを起動してみようとすると、「Unable to determine device.」のポップアップが。
どうもTimeMachineで復旧すると、このような状況になるよう。
XcodeのWidnow > Devicesからデバイスを追加。
Simulatorの起動を確認して、再度carthage updateを行うと無事にライブラリのインストールができました。
CarthageはGithubのソースコードをCarthage/Checkoutsディレクトリにクローンし、ライブラリの設定に従ってCarthage/Buildにframeworkをビルドするよう。
なお、Carthage 0.4からディレクトリの構成が現在のように変わったようです。
SwiftWeatherはそれ以前の構成を前提にframeworkの場所が指定されているため、修正が必要です。
"General"の"Linked Frameworks and Libraries"に、ビルドされたフレームワークを追加します。 SwiftWeatherの場合は、Swift Weather Instant、SwiftWeatherSerivceにも追加が必要です。
続いて、アプリの"Build Phases"タブの左上の「+」から"New Run Script Phase"を追加。
以下の内容を記載し、
/usr/local/bin/carthage copy-frameworks
Input Filesに以下を追加。
$(SRCROOT)/Carthage/Build/iOS/AlamoFire.framework $(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework
以上で無事、Simulatorと実機でSwiftWeatherを動かすことができました。
iOS Simulatorのデバイスがなくてビルドエラーが発生したところが、情報もなくて戸惑いました。。
CocoaPodsのように設定済みのWorkspaceが生成されないので、自分で依存関係の設定が必要だけれどシンプルだからビルドセッテイングとかではハマることは少なくなりそう。
対応しているライブラリはまだCocoaPodsの方が多いですが、有名なライブラリはだいぶ対応しているようなのでそこまで困らないかも。
CSSフレームワーク『Rigging』を作ってみました。
WebアプリケーションのUI作成のためのCSSフレームワーク『Rigging』を作ってみました。
http://akira-miyake.github.io/Rigging/
フレームワークとはいっても、CSSリセットやタイポグラフィ、ボタン等の基本的なコンポーネントのスタイル定義とシンプルなグリッドシステムくらいの軽めな感じ。
アプリケーションのデザインに合わせて、基本となるスタイルは変数でカスタマイズ可能に、プロジェクト固有のコンポーネントを作るときになるべく邪魔しないように、という思想で作っています。
また、スタイルガイドの検証として、Docsの作成にFrontnoteを利用してみました。
最初はgulp-kssを試してみたのですが、//のコメントと/ /のコメントが混ざるとうまく動かなかったり、章番号をつけなきゃいけないのが煩雑だったりでFrontnoteを使うことに。
gulp-frontnoteを使ってgulpで簡単にスタイルガイドの作成ができました。
スタイルガイドの部分は別プロジェクトに切り出して、もう少し汎用化するかも。
マークアップしながらデザインして、それと一緒にスタイルガイドも出力して、実際にアプリケーションを開発するエンジニアにわたす、みたいなことができればと。
色を扱うJavaScriptライブラリ「ColourJS」
新年明けましておめでとうございます。
転職して3ヶ月がすぎ試用期間が終了しました。
2015年もぼちぼち頑張っていきたいと思います。
年末年始はギリギリまで仕事だったり大阪の実家に帰ったりでけっこうドタバタだったのですが、ColourJSという色を扱うJavaScriptライブラリを作成しました。
hexのカラーコードやRGBやHSVなんかの表色系の座標オブジェクトをから、「色」を表すcolourオブジェクトを得ることができます。
colourオブジェクトはRGBからHSV、CIELabなんかの座標を返すメソッドを持っていたり、明度や色相を操作したオブジェクトを生成するメソッドを持っていたりします。
生成したオブジェクトは基本的にイミュータブルで、新しい色オブジェクトを生成して返す仕様になっています。
色の操作は基本的にCIELab表色系をベースに行っているので、見た目の感覚に沿った色の操作ができるようになっています。
ざくっと作った感じなので、変換式まわりに不備があるかもしれませんが…ぼちぼち手を入れていく予定です。
MacへのAndroid Studioのインストール
1月からのプロジェクトで、Androidアプリを開発することになりそうなので開発環境構築のメモ。
12月に入りAndroid Studio 1.0が正式リリースされ、Googleは今後Eclipse向けのサポートを終了する意向のようなので、Android Studioを素直にインストールします。
Macの概要 * OS X Yosemite 10.10.1 * MacBook Air(13-inch, Early 2014) * Oracleのjdk1.8.0_25をインストール済み
ダウンロードとインストール
Android Studioの起動
appを起動しようとすると、「Java not found」のアラートが表示され起動せず。
どうやらIDEの動作にJava 6を使用しているためのよう。
$STUDIO_JDKで7や8のSDKを使用することもできるけれども、フォントレンダリングがうまく動かないかもねー的なことが書かれていたので、Java 6をインストールすることに。
ここからdmgをダウンロードして、JDK 6をインストール。
Java 6がインストールされていれば、IDEはそれを自動で選択して使うようです。