ページ

2016年9月8日木曜日

普段お世話になっている便利なWebツール紹介 2


前回から少し普段使ってるWebツールが増えたので、
便利なものをご紹介できればと思います。

・正規表現チェッカー

既に有名かもしれませんが・・
正規表現を使う時に、ちょこっと確認したい時があるかと思います。
そんな時に便利なサイトがこちらです。



サイト自体はRubyで正規表現を試す事に特化してますが、
基本的な正規表現はRuby関係なく試す事が出来ます。

↓ここに試したい正規表現を入力し、


↓こっちには正規表現をテストしたい文字列を書きます。


すると正規表現にマッチしたものがここに表示されます。

マッチしない場合は↓のようにエラーになります。



・AppHtmlWeb

こちらも有名かとは思いますが、
ブロガーの方などはよく使われてるかもしれません。
iPhone/iPadやMacアプリや、Musicアルバム、Book、映画などを
iTunesから検索しリンクを作成してくれるサイトです。

http://connect1ngdots.github.io/AppHtml/




使い方も簡単で、以下検索対象
  • iPhone App
  • iPad App
  • Mac App
  • Song
  • Album
  • Movie
  • Book

と書式テンプレート
  • 小さいボタン
  • 大きいボタン
  • テキストのみ
  • アイコン付き(小)
  • アイコン付き(大)
を選択し、リンクを作成したいアプリなどを検索します。

以下はEvernoteのアプリをアイコン付き(大)で作成したものです。

Evernote - メモ、Web ページ、文書、名刺などをまとめて記憶
カテゴリ: 仕事効率化, ユーティリティ


色々デザインも変更できて便利です。


2016年9月3日土曜日

Reactを使う 1 - 開発環境と簡単なサンプル -


今更感もありますが、最近仕事でフロントエンド周りをやっていた為、
色々勉強していこうと今回はReactに手を出してみます。

Reactとは?
Facebookが開発しているJavascriptのライブラリで
UIをコンポーネントベースで構築していきます。

開発環境構築

Reactが登場して、いろいろ周りの環境などが落ち着いて来たので
以下の組み合わせで進めて行こうかと思います。
  • Babel
  • webpack
  • ESLint
  • Mocha
それぞれどんなものかというと・・・

Babel
2015年にECMAScript(ES6)が登場しました、何かというと・・・
Javascriptの標準化されたものがECMAScriptでEcmaインターナショナル
の元で標準化が行われています。
そして、2009年に発表されたものがES5で、現在のモダンなブラウザは
ほとんど実装されています。ただES6はまだ対応中です。。
そこでBabelを使うとES6や次期のバージョンのソースコードから
旧バージョンのES5などに変換します。

webpack
Webアプリケーションに必要なリソースや依存関係などを解決する
ビルドツールです。
今回はwebpackでbabelなどの必要なものを取り入れてビルドします。

ESLint
Javascriptの静的検証ツールです。
検証ルールを設定できES6の構文やjsxもチェックできます。

Mocha
Unitテスト用フレームワークです。

簡単なサンプル作成

今回はただHelloと表示させるだけの簡単なサンプルを作成するので
MochaESLintは使いませんが、とりあえずインストールだけしています。
早速もろもろインストールします。
$ npm init
$ npm install -g webpack
$ npm install -g webpack-dev-server
$ npm install -g mocha
$ npm install --save react
$ npm install --save react-dom
$ npm install --save-dev babel-core
$ npm install --save-dev babel-loader
$ npm install --save-dev babel-preset-es2015
$ npm install --save-dev babel-preset-react
$ npm install --save-dev eslint
package.jsonに関しては今回はこんな感じで作成しました。
{
  "name": "Sample",
  "version": "1.0.0",
  "description": "React sample.",
  "main": "container.js",
  "scripts": {
    "lint": "aslant src --ext .js --ext .jsx"
  },
  "author": "XXXXXXXX",
  "license": "MIT"
}
scriptsにてeslintを起動できるようにしています。
src配下のjs, jsx拡張子のファイルが対象です。実際に動作させる場合は
$ npm run lint
で実行できますが、今回は使いません。
次に以下構成でファイルを作成していきます。
.
├── README.md
├── index.html
├── package.json
├── src
│   ├── container.js
│   └── hello.jsx
└── webpack.config.js
  • webpack.config.js
var path = require('path');

module.exports = {
  entry: './src/container.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
  module: {
    loaders: [
      {
        test: /.jsx?$/,
        loader: 'babel-loader',
        exclude: /(node_modules|bower_components)/,
        query: {
          presets: ['es2015', 'react']
        }
      }
    ]
  },
};
上記設定ではbabelを使用して、container.jshello.jsxから
bundle.jsを作成しています。
最終的にindex.htmlbundle.jsを読み込むようにしています。
  • container.js
import './hello.jsx';
  • hello.jsx
import React from 'react';
import ReactDOM from 'react-dom'

class Hello extends React.Component {
  render() {
    return <h1>Hello</h1>
  }
}

ReactDOM.render(<Hello/>, document.getElementById('container'));
  • index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>React Sample</title>
</head>
<body>
  <div id="container"></div>
</body>
<script type="text/javascript" src="bundle.js"></script>
</html>
それでは早速実行して確認してみたいと思います。
↓のwebpack-dev-serverコマンドで色々よろしくやってくれます。
$ webpack-dev-server --progress --colors
起動後、
http://localhost:8080/webpack-dev-server/index.html
を確認して↓このようにHelloと表示されとけば成功です。



2016年8月27日土曜日

オリジナルのPebbleアプリを作成 2 - シンプルな時計表示 -


今回もCloudPebbleを使ってシンプルな時計を表示するアプリを作成してみます。
最小プログラム

まずは一番最小となるアプリを作成してみます。
新規にプロジェクトを作成します。プロジェクト名はSAMPLE2にしてます。

  • PROJECT TYPE : Pebble C SDK
  • SDK VERSION: SDK3
  • TEMPLATE: Empty project
※今回はTEMPLATEをEmpty projectにしています。

作成後新規にソースファイルを追加します。
ファイル名はmain.cにしてます。
作成したmain.cを以下に編集します。
#include <pebble.h>

static Window *s_window;

int main(void) {
  s_window = window_create();
  window_stack_push(s_window, true);

  app_event_loop();

  window_destroy(s_window);
}
処理内容としては、
  1. Windowポインタをwindow_create()で取得
  2. 表示させる為にwindow_stack_pushでstackにpush
    この時の第二引数はアニメーションの有無です。
    ※PebbleOSはWindow Stack APIにて画面遷移など行います。
  3. app_event_loopでExitするまでメインループを実行
  4. 最後window_destroyでWindowを破棄して終了
となります。
早速エミュレータで確認してみます。
COMPILATION > EMULATOR > RUN BUILD > APLITEで実行できます。
実行した結果がこちら↓
当然ながら何も表示されてませんが、一応最小のプログラムができました。

時計表示

最小限のプログラムを改良して、シンプルな時計を表示させるアプリを作成してみます。
#include <pebble.h>

static Window *s_window;
static TextLayer *s_time_layer;
static char s_buffer[] = "00:00:00";

// Windowが読み込まれた時に呼ばれる
static void window_load(Window *window) {
  // ルートのレイヤーのサイズを取得
  Layer *window_layer = window_get_root_layer(s_window);
  GRect bounds = layer_get_bounds(window_layer);

  // 時計を表示するレイヤーの作成
  s_time_layer = text_layer_create(
      GRect(0, 0, bounds.size.w, bounds.size.h));

  // レイヤーの設定
  text_layer_set_background_color(s_time_layer, GColorPastelYellow);
  text_layer_set_text_color(s_time_layer, GColorBlack);
  text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_ROBOTO_CONDENSED_21));
  text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter);

  // レイヤーの追加
  layer_add_child(window_layer, text_layer_get_layer(s_time_layer));
}

// Windowが解放された時に呼ばれる
static void window_unload(Window *window) {
  text_layer_destroy(s_time_layer);
}

// 時間更新
static void update_time() {
  // 現在時刻の取得
  time_t temp = time(NULL);
  struct tm *tick_time = localtime(&temp);

  // フォーマット指定で文字列に出力
  strftime(s_buffer, sizeof(s_buffer), "%T", tick_time);

  // ディスプレイ出力
  text_layer_set_text(s_time_layer, s_buffer);
}

// 秒毎に呼ばれるハンドラ
static void tick_handler(struct tm *tick_time, TimeUnits units_changed) {
  update_time();
}

// メイン
int main(void) {
  // ウィンドウの作成
  s_window = window_create();
  window_set_window_handlers(s_window, (WindowHandlers) {
    .load = window_load,
    .unload = window_unload
  });
  // イベント登録
  tick_timer_service_subscribe(SECOND_UNIT, tick_handler);
  // Window Stackに追加
  window_stack_push(s_window, true);
  // 一度現在時刻で表示
  update_time();

  // メインループ
  app_event_loop();
  // 終了処理
  window_destroy(s_window);
}
やってる事としては、、
  1. window_set_window_handlersでWindowがload、unloadした時のハンドライベントを設定します
  2. Windowがloadしたタイミングで時計を表示するレイヤー(s_time_layer)を作成します
    ※指定できるフォントはこちらを参考にしました
  3. tick_timer_service_subscribeで1秒毎にtick_handler関数を呼び出すように登録します
  4. update_timeで現在時刻をs_time_layerに書き出します

です。ただ今回tick_timer_service_subscribeで1秒毎(SECOND_UNIT)に
ハンドラを呼び出してますが、実機だと電池がその分消費されるので注意です。

最後にエミュレータで動作させた結果がこちらです↓


2016年8月24日水曜日

Pebbleを購入して約3週間 よく使うアプリやWatchface


最近Pebbleネタが続いてますが、、
今回は個人的にPebbleを購入して約3週間でよく使ってるアプリやWatchfaceを
紹介できればと思います。

Watchface

かなりの数のWatchfaceがあるので、
選ぶだけでかなり時間を使ってしまいますw

MIYAMOTO REDUX


最近はデザインが気に入ってずっとこのWatchfaceをしてるんですが、
時計盤がデジタル/アナログの切り替えができるのと、
時間と共に時計盤の周りが変化するので飽きないです。



MARIO TIME WATCHFACE


言わずもがなマリオです。
ユニークなWatchfaceですが、なかなか機能面でも優れてます。
バッテリーやBluetoothの接続状態
(接続が切れると振動で教えてくれるように設定できます)
気温などを表示してくれます。
ただちょっとおもちゃっぽくなってしまう感じが。。(自分だけ?)

Apps

まだまだ全然いろんなアプリを試せては無いんですが、
インストールして今も使ってるアプリを紹介したいと思います。

STOPWATCH


StopWatchかよ!!と思われるかもしれませんが、
やっぱり地味に便利ですw
カップラーメンのタイマーやらやら、直ぐ測れるのは便利です。


COMPASS


こちらは頻繁に使うわけでは無いんですが、
たまにポケモンGOしながら使ってますw


まだ3週間なのでこんなもんですが、、
また新たなWatchfaceやアプリが出てきた時は紹介したいと思います。





2016年8月21日日曜日

オリジナルのPebbleアプリを作成 1 - 環境設定 -


以前「Pebble Time Round 購入!!」という記事を書きました。
それからずっとPebbleをつけてますが、スマホを取り出さずに通知の確認や、
音楽の再生などがとても便利で活用してます。
そんなPebbleですが、Pebble上で動くアプリが結構簡単に作れるらしいので
早速試してみようと思います。
作成方法

Pebbleのアプリを作るにはCloudPebbleでWeb上で作る方法と、
SDKをダウンロードしてpythonで開発していく方法があります。
今回は前者のCloudPebbleを使ってアプリを作ってみたいと思います。
また、開発時にはiOS/Android端末とPCが同ネットワーク上にいる必要があります。
CloudPebble

まずはCloudPebbleにアクセスし、アカウントを持ってない場合は作成し、
ログインします。ログイン後の画面は以下のようになってます。
※iOS/Android端末のアプリのログインアカウントと同一である必要があります。

早速プロジェクトを作ります。右上のCREATEボタンを押します。
するとダイアログが表示されるので、作りたいプロジェクトの内容を設定します。

今回は最初なのでHelloWorldを表示するsample1プロジェクトを作成します。
作成後hello_world.cファイルがWebエディッタ上で編集できるようになってます。
では早速動かしてみたいと思います。。が、
まずは端末側の設定です、Pebbleアプリを立ち上げて、
Apps>メニューSettingsを選択し、Developer ModeをONにします。
Apps>メニューSettings>Developer(off)を選択します。
Enable Developer ConnectionsをONにします。

正常に接続できる状態になるとStatusがWaitingになります。
次にCloudPebbleに戻って、左側のメニューからCOMPILATIONを選択します。
RUN BUILDをクリックしビルドを行い、上部のタブPHONEを選択し、
INSTALL AND RUNを実行します。

無事Pebble上で実行されていれば成功です。