OmniAICreator/Qiita-1.07M huggingface dataset:
Smalltalk入門（Pharo Smalltalkインストール）

# この記事について
Smalltalkは、様々な処理系が存在するのでどこから始めるか悩みますが、今回はPharo Smalltalkのインストールから日本語対応までをご紹介。

# Smalltalkについて
別の記事で紹介します

# Pharo Smalltalkのインストールと起動
まずは、Pharoの公式ページからダウンロードしましょう(2014/12/1時点ではPharo 3.0が最新)。

* Pharo（公式ページ） http://pharo.org/
* ダウンロードページ http://pharo.org/download

## Mac
1. 公式サイトよりダウンロードしたzipファイルを展開します
2. Pharo3.0.appをダブルクリック

## Windows
1. 公式サイトよりダウンロードしたzipファイルを展開します
2. [Pharo3.0]フォルダ内のPharo.exeをダブルクリックします

## Linux 

### CentOS 7
#### 動作に必要なパッケージを入れる

```bash
sudo yum install glibc
sudo yum install ld-linux.so.2
sudo  yum install libGLU
sudo yum install libX11.i686 libX11-devel.i686 mesa-libGL.i686 mesa-libGL-devel.i686
```

#### インストール
コマンドラインでインストールができるZeroconf(http://get.pharo.org )を使います。

```
curl get.pharo.org | bash
```

### Ubuntu
```bash
sudo add-apt-repository ppa:pharo/stable
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install pharo-launcher
```

### Pharo Smalltalkを起動してみる
起動すると以下のような画面、Pharo SmalltalkのWorld（ワールド）画面が表示されます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18287/168124e5-ef99-508e-0d3b-c6af0bdb8eac.png" width="600">
画面をみるとSmalltalkが、言語と開発環境と言われるのがわかると思います。Smalltalkではこの世界（画面）の中で開発をしていきます。

### 日本語フォントを表示可能にする
日本語表示を可能をする際には、Pharo内に日本語フォントを読み込む必要があります。
Worldのどこかでクリックして（背景のどこでもいいです）、World Menu（ワールドメニュー）を開きます。

[World Menu]-[System]-[Settings]を選択。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18287/fb59d323-a432-5237-45b8-956e94507b4c.png" width="600">

クリックをするとSettings browserが開きます。
[Appearance]-[Standard fonts]-[Code]を確認すると、現在[Bitmap DejaVu Sans Regular 9]が選択されております。フォントを日本語フォント選択しましょう。[Bitmap DejaVu Sans Regular 9]をクリックして、[Font for defaultFont]のウィンドウを開きます。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18287/0dea3746-9234-1ea0-d9f5-50cf2860b3f4.png" width="600">

[update]をクリックしてシステム内のフォントを選択可能にします。私の環境にはIPAフォントが入っているので、IPAPGothicを選択し[Apply]をクリックします。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18287/d1a64db9-80eb-5162-8631-2552051f095a.png" width="600">

日本語が表示させるか確認をします。World MenuからWorkspace（ワークスペース）を開き、日本語を入力できれば、OKです。
<img src="https://qiita-image-store.s3.amazonaws.com/0/18287/5ab41297-6e95-d358-9173-77c7b2e8ee84.png" width="600">

# Pharo Smalltalkの終了方法
Smalltalkを終了するには、World Menuから[Save and quit]または[Quit]を選択します。Save（保存）を選択すると、現在実行中のプログラム（プログラムの実行状態）をイメージに保存でき、再び起動した際に前回の状態が再現されて起動します。VMware, VirtualBoxを使ったことがある方はOSを起動したまま終了するイメージと思えば、イメージがつきやすいと思います。

# イメージの保存について
SmalltalkにはイメージというSmalltalkのオブジェクトをファイルにダンプしたものがあります。Smalltalk開発する際には、開発に応じてイメージの保存をこまめにしなければなりません。また、イメージの保存方法にもいくつが種類があります。

| 種類 | 内容| 
|:---- | ---- | 
| save | 現在の状態を現在使用しているイメージに保存 |
| save as... | 別のイメージに保存に状態を保存．イメージ名を決定する．保存後は、新たに作成したイメージ画面が表示 | 
| save and quit | 現在の状態を現在使用しているimageに保存して終了 |

#参考
自由自在 Squeakプログラミング PDF版
http://swikis.ddo.jp/squeak/13

今日から使おうSmalltalk
http://www.slideshare.net/newapplesho/smalltalk-32627289

Pharo by Example
http://www.pharobyexample.org/
[Swift] WebプログラマがiOSアプリ開発をする際に参考にしたサイト・学習方法

私はPHP,Ruby,Javaなどを学生時代に書いていましたが、新卒での最初の仕事はSwiftでiOSアプリを開発することでした。もし私がもう一度始めから勉強するならばこういう手順でするだろう、ということを書きたいと思います。

## はじめに
ある程度他の言語でプログラミング経験がある方ならば、Swiftは非常にとっつきやすい言語ですので基本的な文法はすぐに理解ができると思いますので、Storybaord(AutoLayout)、UIKit、Xcodeの使い方に多くの時間を使いましょう。文法をちまちま写経していくよりも、作りたいものがあるならばそれを作りながら学んでいくのが一番です。以下に文法・UIKit・Stoaryboardを学ぶ上でのオススメのサイトを紹介していきたいと思います。

##文法
####[ドットインストール(Swift入門)](http://dotinstall.com/lessons/basic_swift)
Swiftのレッスンがようやく登場しました。筆者が勉強し始める前はなかったので、載せようか迷いましたが今までお世話になっていましたので載せておきます。残念ながらPremium会員のみですが、この際登録してしまうのも良いと思います。とりあえずはこれで基本的な文法を写経してみましょう。

####[公式ドキュメント(A Swift Tour)](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-XID_1)
ある程度書くのに慣れてきたら、Appleの公式ドキュメントを読み進めても良い頃でしょう。何も知らない状態で読むよりは、ある程度手を動かしてから読むほうが理解度が上がるので、今まで何気なく書いてきたコードの理解を深めるという目的を持って読むのが良いと思います。

## UIKit
UIKitとはiOSのUIのコンポーネントです。
主に使うUIKitのクラスは
*　UIViewController
*　UIView
*　UITableViewController
*　UITableView
*　UIScrollView
*　UIButton
*　UILabel
*　UITextField
*　UITextView
*　UINavigationController
です。とりあえずこれらを使えれば一通り動くアプリを作ることが可能だと思います。テーブルビューを作ってみたり、ボタンを押すと画面の色が変わるといった実装をしてみてはどうでしょうか。以下のリンクではStoryboardを使わないでUIKitを使っていますが、慣れるためには良いと思います。

####[Swift Docs](https://sites.google.com/a/gclue.jp/swift-docs/)
神サイトです。何か実現したいことがありましたら、とりあえずここを見てみましょう。コピペで動くものが作れてしまいますが、当然初めは理解しながら写経しましょう。このサイトは頻繁に更新されていますので、とても信頼がおけます。

####[Swiftサラリーマン](http://swift-salaryman.com/)
虎の巻にどことなく似ていますが、サラリーマンの絵がすごい独特なサイトです。ここもサンプルコードを参考にするのに便利なサイトだと思います。とりあえずサンプルを動かしてみて、どういう挙動をするかを確認していったらいいと思います。

####[iPhoneアプリ開発虎の巻](http://iphone-tora.sakura.ne.jp/)
Objective-Cを書いたことがあるならば、誰でも知っているこれまた神サイトです。Swiftには対応していませんが、内容は豊富ですので使いたいクラスを調べて、Swiftで書くにはどうしたら良いかを改めて調べるのが良いでしょう。

####[公式ドキュメント(UIKit)](https://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=UIKit)
いきなり公式ドキュメントを見ても理解しにくいと思いますが、ある程度慣れてきたら読んでいくのは大事だと思います。

## Storyboard
先ほど紹介したサイトではUIKitをコードで表現しているのが多いと思いますが、実際開発していくうえでは、Storyboardを使ってUIを構成していくほうが良いです。StoryboardはAutoLayoutに慣れる必要がありますが、そこを乗り切れば非常に開発が楽になりますし、コードで書くよりもコード量が減らすことができます。AutoLayoutを学んでいく上で大事なキーワードは制約 (Constraints)です。以下にオススメな本とサイトを紹介しますが、正直、Storyboardの使い方は誰か知り合いにその場で教えてくれる人がいたら、2,3時間みっちり教えてもらうほうが効率が良いと思います。それで勘所をつかんでから本やサイトで勉強したら良いと思います。

####[AutoLayout徹底攻略](https://www.amazon.co.jp//dp/B00XKGB2K8)
Kindle本ですが、おすすめです。AutoLayoutをググってみてもよくわからずイライラしている人にはオススメの本です。

####[今度こそ克服するAutoLayoutの使い方](http://type.jp/et/log/article/ra-ios-tips06)
凄い丁寧に手順が書かれています。Storyboardで作成した画面をPreviewで確認する方法も書かれているので一度目を通しておきましょう。この記事にもあるように、いきなりAutoLayoutを初めて苦労するよりも、初めはコードでUIKitを扱うほうがよいかもしれません。

##基本的な考え方
iOSアプリでは、なんらかのユーザーの操作(タッチ、スワイプ、スクロール)が行われると、メソッドが呼び出されるという流れが非常に多いです。Javascriptの経験があるならば、イベント駆動という概念が理解できていると思いますので、非常にわかりやすいと思います。例えば、「UIButtonにアクションを追加して、押されるとHello Worldが表示される」という流れを理解しておきましょう。Webアプリの経験しかない人にとっては、この流れが意外に馴染みのない可能性があります(私がそうでした)ので、そこは覚えておきましょう。

UIKitについて述べましたが、大事なのでもう一度言っておきます。UIKitを一通り使えるようになれば、基本的な開発はできると言っても過言ではありません。ですので、まずは第一にUIKitの理解を深めることに努めてください。SwiftでもObjective-Cでもそこは同じです。

以上になります。他にも良いサイトがあるかもしれませんので、見つけ次第更新するつもりです。今日からSwiftを始めてみませんか？
[Node.js] istanbul でカバレッジが出力されないとき

`process.on("exit")` で書き込み処理が実行されるので、テストにおいて `process.removeListeners()` でハンドラを削除してしまっていると出力されない。

ハンドラを削除する必要がある場合は、`process.listeners("exit")` で事前にハンドラを退避し、事後に設定し直すことで対応できる。下記は istanbul + mocha での場合。

```javascript
var exitHandlers;

before(function () {
   exitHandlers = process.listeners("exit");
});

after(function () {
    exitHandlers.forEach(function (handler) {
        process.on("exit", handler);
    });
});
```
HTML5のmainタグをIEで利用する

コーディングしてるときにつまずいたのでメモとして残しておく。

##とりあえずIE8以下(IE9未満)に対応させる
GitHubにある「html5shiv」をHTMLファイル内に記述する。
URL：https://github.com/aFarkas/html5shiv

```
<!--[if lt IE 9]> 
<script src="js/html5shiv.js"></script>
<script type="text/javascript">
	document.createElement('main');
</script>
<![endif]-->
```
IE8あたりでだいたいのHTML5を使うならこのくらいで充分だったんですが…。
どうも```document.createElement('main');```入れてあげないとmainタグが上手く認識されず。

##mainタグのCSSを設定する
IE11でみてるとmainタグの部分がレイアウトが崩れていた。
Firefox、Chromeで見ると問題なかったのでIE固有の問題だろう。
解決策としてCSSでブロック要素にしてしまう。

```
main {
	display: block;
}
```

##Edgeの対応とWindows10に搭載のIE11について(2016/03/04追記)
Windows10が手に入ったのでEdgeとIE11まるごと検証しました。
Edgeはmainタグにバッチリ対応してます！
ただし、IE11は対応してません。
ということでmainタグを使う際はやはり、Windows10のIEユーザーもいることに注意する必要がありそうです。
Tomcat導入

サーバにjavaを入れていろいろ試してみたい、ということでvagrantで作成した仮想マシンにjavaとTomcatを入れてみることにしました。

環境
OS: CentOS release 6.4 (Final)
Webサーバ：Server version: Apache/2.2.15 (Unix)

<h2>Javaのインストール</h2>

最初はJavaが入っていないので、バージョンを調べようとしても当然ながらありませんと表示されます。

```
$ java -version
-bash: java: command not found
```

not foundほど悲しいものはありません。。。

ではまず、ランタイムのインストールを行います。

```
$ yum -y install java-1.7.0-openjdk
```

バーッと出てきて最後に　[y/N]　を求められるので　y を入力してエンターを押します。

java7開発環境のインストールも行います。

```
$ yum install java-1.7.0-openjdk-devel
```

これもバーッと出てきて最後に　[y/N]　を求められるので　y を入力してエンターを押します。

インストールが終わってJavaのバージョンを確認すると、

```
$ java -version
java version "1.7.0_71"
```

と出ました！

これでJavaがインストールされたことの確認にはなるのですが、Javaクラスを作成、コンパイル、実行して見ようと思います。

適当なディレクトリ内でおなじみのHelloWorldクラスを作成します。

```HelloWorld.java
public class HelloWorld{
 public static void main(String[] args){
  System.out.println("Hello World!!");
 }
}
```

上記を保存してコンパイルします。

```
javac HelloWorld.java 
```

そして実行します。

```
$ java HelloWorld
Hello World!!
```

表示されました！これでJavaインストールの確認とさせていただきます。

<h2>Tomcatインストール</h2>

Javaが導入できたのでTomcatを入れてみようと思います。

```
yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps
```

でインストールします。完了すると、

```
/etc/tomcat6/tomcat6.conf
```

というファイルが作成されているのでエディタで開いて編集する。
12行目あたりにある JAVA_HOME を修正する。

```
JAVA_HOME="/usr/lib/jvm/jre-1.7.0"
```

次に、ユーザ認証設定を行う。

```
/etc/tomcat6/tomcat-users.xml
```

というファイルができているのでエディタで開いて編集する。

```
<role rolename="manager"/>
<user username="admin" password="hoge" roles="manager"/>
```

上記を

```
<tomcat-users></tomcat-users>
```

で囲まれている箇所に差し込む。これは、Tomcatのアプリケーションマネージャなどを使用する際に必要なユーザ設定です。上記の場合はユーザ名：admin、パスワード：hogeで設定しています。

<h2>Tomcat起動</h2>

```
/etc/rc.d/init.d/tomcat6 start
Starting tomcat6:                                       [  OK  ]
```

でTomcatが起動します。また、ここでサーバを起動したときに同時にtomcat
起動するように設定しておきます。

```
chkconfig tomcat6 on
```

これで大丈夫です。

では、ブラウザで接続できるか確認してみましょう！

![スクリーンショット 2014-12-03 0.08.22.png](https://qiita-image-store.s3.amazonaws.com/0/58014/8804bc9b-e63b-1bfc-5a39-205ef4993914.png)


無事にTomcatのセットアップが完了しました。

最後までお読みいただきありがとうございました。
Scalaで時間の単位を簡単に扱う方法

1秒って何ミリ秒だっけ？とか悩まなくて済む。

# DurationInt
http://www.scala-lang.org/api/current/index.html#scala.concurrent.duration.package$$DurationInt

# 使い方
```scala
import scala.concurrent.duration.DurationInt
(中略)
val interval = 5 minutes
```

とか

```scala
Thread.sleep((1 second).toMillis)
```

簡単ふおおおおぉぉぉぉ ﾌｵｵｵ(((卍(＾ω＾)卍)))ﾌｵｵｵ
Ruboty | BestGems の検索結果を表示する ruboty-bestgems を作成しました #ruboty

# BestGems の検索結果を表示する ruboty-bestgems を作成しました

## <i class="fa fa-cubes" style="font-size:1em;"></i> 概要
BestGems の検索結果を表示する ruboty-bestgems を作成しました

## <i class="fa fa-cube" style="font-size:1em;"></i> 用途
任意の gem の

* 総ダウンロード数
* 日次ダウンロード数
* 総ランキング
* 日次ランキング

を取得します

## <i class="fa fa-cube" style="font-size:1em;"></i> Installation

Add this line to your application's Gemfile:

```ruby
gem 'ruboty-bestgems'
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install ruboty-bestgems

## <i class="fa fa-terminal" style="font-size:1em;"></i> Commands

|Command|Pattern|Description|
|:--|:--|:--|
|total_downloads|/total_downloads (?&lt;gem_name&gt;.+)\z/|latest total_download count|
|daily_downloads|/daily_downloads (?&lt;gem_name&gt;.+)\z/|latest daily_download count|
|total_ranking|/total_ranking (?&lt;gem_name&gt;.+)\z/|latest total_ranking|
|daily_ranking|/daily_ranking (?&lt;gem_name&gt;.+)\z/|latest daily_ranking|

## <i class="fa fa-file-text-o" style="font-size:1em;"></i> Usage
### <i class="fa fa-download" style="font-size:1em;"></i> total_downloads
* latest total_download count

~~~
>ruboty total_downloads ruboty-megen
>356
~~~

### <i class="fa fa-download" style="font-size:1em;"></i> daily_downloads
* latest daily_download count

~~~
>ruboty daily_downloads ruboty-megen
>10
~~~

### <i class="fa fa-trophy" style="font-size:1em;"></i> total_ranking
* latest total_ranking

~~~
>ruboty total_ranking ruboty-megen
>84052
~~~

### <i class="fa fa-trophy" style="font-size:1em;"></i> daily_ranking
* latest daily_ranking

~~~
>ruboty daily_ranking ruboty-megen
>12021
~~~

## <i class="fa fa-gears" style="font-size:1em;"></i> ENV

|Name|Description|
|:--|:--|
|--|--|

## <i class="fa fa-puzzle-piece" style="font-size:1em;"></i> Dependency

|Name|Description|
|:--|:--|
|BestGems API version 1|[BestGems API version 1](https://github.com/xmisao/bestgems.org/wiki/BestGems-API-v1-Specification)|

## <i class="fa fa-gavel" style="font-size:1em;"></i> Tools
※ Ruboty Handler Plugin の作成には以下のジェネレータを使っています

* [Ruboty | 【怠惰は正義】ruboty-gen で Handlers と Actions のひな形を作成](http://qiita.com/tbpgr/items/39c754bb17193c9b27e9)
* [Ruboty | Ruboty Handler Plugin 作成時に公開するための Markdown 形式の技術エントリ テンプレートジェネレータ](http://qiita.com/tbpgr/items/3974585421a0e9110782)
* [Ruboty | Ruboty Handler Plugin 作成時の README テンプレートジェネレータ](http://qiita.com/tbpgr/items/33ccf5709cb553b2095f)

## <i class="fa fa-arrow-circle-right" style="font-size:1em;"></i> 参照
* <i class="fa fa-external-link" style="font-size:1em;"></i> [ruboty-bestgems GitHub](https://github.com/tbpgr/ruboty-bestgems)
* <i class="fa fa-external-link" style="font-size:1em;"></i> [ruboty-bestgems RubyGems](http://rubygems.org/gems/ruboty-bestgems)
NSCellを使ってはいけない


NSCellは今後非推奨となります。新たに使用するのは控えましょう。

# NSCellが非推奨になる経緯

NSCellは元来、重厚で多機能なNSView（のサブクラスのNSControl）の描画部を軽量なオブジェクトとして独立させることでリソースを節約することを目的としていました。NSTableViewやNSMatrixといった大量のUI部品を並べるビューは、大量のサブビューを並べることによるオーバーヘッドが大きかったため、代わりに軽量なセルを並べることでこれを回避するというスタイルが採られました。

しかし、それは前世紀の話です。OS Xの時代になると、ハードウェアの進歩によってビューのオーバーヘッドは微々たるものになりました。実際、iOSのCocoa touchではUIControlからセルを分離していませんが、Macよりスペックの低いハードウェア上で問題なく動作しています。

セルはビューと比べて制約があるため、凝ったインターフェイスを作成しようとすると非常に手間がかかり、また扱いも面倒です。パフォーマンス上のメリットが得られないとなれば、セルを使用する動機はなくなります。

OS XではLeopardで大量のビューを並べるNSCollectionViewが導入され、LionでNSTableViewがビュー・ベースのテーブルをサポートするなど、セルではなくビューをそのまま扱うことで高い表現力を実現できるように進化するとともに、徐々に脱セルの動きが進められてきました。

そして、WWDC 2014にて、ついに将来的にNSCellを非推奨とすることが宣言されました。

# 段階的な非推奨

Yosemiteでは、まだNSCellは明示的にdeprecatedとはなっていません。

NSCellの非推奨化はCocoaにおいて非常にインパクトがあるため、NSCell本体はすぐには非推奨にはならず、NSCellを利用する周辺のAPIから段階的に非推奨となっていくようです。したがって、カスタムコントロール、カスタムセルを作成している場合、すぐに動かなくなるといったことはないでしょう。

Yomiseteではまず、`- [NSControl cell]`など、コントロールからセルにアクセスするための各種メソッドやプロパティはすべて非推奨となりました。セルを外部から操作している場合は、セルを直接操作するのではなく、対応するコントロールのメソッドを呼び出して操作するように修正しましょう。

また、セル・ベースのNSTableViewは非推奨になりました。今後はビュー・ベースのNSTableViewを使用するようにしましょう。NSBrowserなどの類似のUIコンポーネントも同様です。

NSMatrixは、明示的に非推奨とはされていませんが、セルを並べるだけのコンポーネントであるという性質上、新規開発においてこれを使用するべきではないでしょう。NSMatrixのサブクラスで、もともとあまり使用されてこなかったNSFormは非推奨になりました。

# まとめ

将来的にNSCellがdeprecatedとなる予告がなされただけで、Yosemiteではまだdeprecatedとはなっていません。APIとして実際に廃止された後も内部実装としてしばらくは残り続けるでしょう。

しかし、コントロールのセルにアクセスする手段の多くはYosemiteで非推奨となり、また（NSTableViewのように）かつてセルしか受け付けていなかったビューコンポーネントは今ではビューを受け付けるようになっています。かつてNSCellのメソッドをオーバーライドしなければ実現できなかったことの多くは、現在ではNSControlだけでも実現できるようになっています。

NSCellは、その役目を終えました。これから新規開発する場合にはNSCellを使用せず、また既存アプリの場合には少しずつ脱NSCellを進めていくべきでしょう。
マスク付きvpandd

> SSE, AVXでは、\_mm_and_si128(pand), \_mm256_and_si256(vpand) のように、全bitの論理積を取る命令しかなく、不便な場合がたくさんありましたが、AVX512になって、これが、\_mm512_and_epi32(vpandd) と \_mm512_and_epi64(vpandq) に分かれ、32bit内の各bitの論理積、64bit内の各bitの論理積を取れるようになり、大変便利になりました。

そんなわけが無いのだった。(bit ごとの演算なので 32bit, 64bit の区別が無い)


という話に関連する話を書きます。


AVX512 では、多くの命令に16bitマスクレジスタを入力とするマスクが付けられます。マスクレジスタの各bitはベクタレジスタの各要素と対応していて、\_mm512_mask_and_epi32(vpandd) と、\_mm512_mask_and_epi64(vpandq) では、このマスクの扱いが変わります。

\_mm512_mask_and_epi32 では、16bitのマスクレジスタ値が、32bit 16要素の各要素と対応します。\_mm512_mask_and_epi64 では、マスクレジスタの下位8bitが、64bit 8要素と対応します。

```cpp
__m512i _mm512_mask_and_epi32 (__m512i src, __mmask16 k, __m512i v2, __m512i v3)
```

とかいうようになっていて、k のビットが立ってる場合は、v2 & v3 の要素の論理積とった値を、k のビットが立ってない場合は、src の要素を取得できます。

これだと、3入力になるけどレジスタポート大丈夫か心配ですが、どうせvfmaddとかが3入力だから問題無いですね。ただこれの影響を受けてマスク付きvfmaddはオペランド一個が、出力 + 入力 or マスク入力の役割を背負う素敵命令となっています。


_mmask16, _mmask8 型変数は…KNC では存在した _mm512_int2mask が無くなってるしそのままスカラ値入れればいいんではないかと思います(調べたけどわからんかった(手抜き))

```cpp
#include <immintrin.h>
#include <stdio.h>

int in0[16] = {~0,~0,~0,~0,
               ~0,~0,~0,~0,
               ~0,~0,~0,~0,
               ~0,~0,~0,~0};

int and_bits[16] = {0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555,
                    0xaaaaaaaa,
                    0x55555555};

int out_epi32[16];
int out_epi64[16];

int
main(void)
{
    __m512i a;
    __m512i b;
    __m512i c;
    int i;

    __mmask16 mask_16 = 0x8181U;
    __mmask8 mask_8 = 0x81U;

    a = _mm512_loadu_si512(in0);
    b = _mm512_loadu_si512(and_bits);

    c = _mm512_mask_and_epi32(a, mask_16, a, b);
    _mm512_storeu_si512(out_epi32, c);

    for (i=0; i<16; i++) {
        printf("epi32 %2d:%08x\n", i, out_epi32[i]);
    }

    puts("");

    c = _mm512_mask_and_epi64(a, mask_8, a, b);
    _mm512_storeu_si512(out_epi64, c);
    for (i=0; i<16; i++) {
        printf("epi64 %2d:%08x\n", i, out_epi64[i]);
    }

}
```

```
 $ gcc -mavx512f vpand.cpp
 $ sde -skx -- ./a.out 
epi32  0:aaaaaaaa
epi32  1:ffffffff
epi32  2:ffffffff
epi32  3:ffffffff
epi32  4:ffffffff
epi32  5:ffffffff
epi32  6:ffffffff
epi32  7:55555555
epi32  8:aaaaaaaa
epi32  9:ffffffff
epi32 10:ffffffff
epi32 11:ffffffff
epi32 12:ffffffff
epi32 13:ffffffff
epi32 14:ffffffff
epi32 15:55555555

epi64  0:aaaaaaaa
epi64  1:55555555
epi64  2:ffffffff
epi64  3:ffffffff
epi64  4:ffffffff
epi64  5:ffffffff
epi64  6:ffffffff
epi64  7:ffffffff
epi64  8:ffffffff
epi64  9:ffffffff
epi64 10:ffffffff
epi64 11:ffffffff
epi64 12:ffffffff
epi64 13:ffffffff
epi64 14:aaaaaaaa
epi64 15:55555555
```

\_mm512_mask_and_epi32 と \_mm512_mask_and_epi64 では挙動が違っているのが確認できます

(は？入力マスク値変えてんだからこれでは命令の挙動が変わったことを確認できないだろ？？？)


明日、明後日は @tanakmura が昨日今日の内容をコピペして vpord の話を書いて二日分稼ぎます。(やる気が出なかった場合)

```
\   Hello!   /
〜０ 〜０ 〜０ 
```
プログラミング初心者に１Dayハンズオンをした結果 

##プログラミング初心者に１Dayハンズオンをした結果
こんばんは。
CoronaSDK Ambassadorの小野です。

先日、[GreenHack](http://gh.msp.in.net)さんでCorona SDKの勉強会を開催することとなり、
講師をして参りました。
GreenHackさんは、初心者向けのプログラミング教育を大学生をメインに社会人も含めやっておられ、
なんと運営は大学生がされております！
素晴らしいですね、僕が大学の時なんて部活と再履修しかしていなかったのに。。。

さて、Corona SDKをご存知の方にもそうでない方にもプログラミング初心者への最初の一歩に
なぜCorona SDKが最適かということを知っていただきたく、Corona SDK Advent Calendar 2014
第二日目を書かせていただきます。

##Corona SDKでアプリ開発：簡単３ステップ
* ダウンロード（無料）
* インストール（環境設定不要）
* 開発開始！（Lua言語 ＝ 学習コスト極小）

まず、無料でアプリ開発を始めることができます。
そして、ダウンロードしたCorona SDKを使い始めるのに特別な環境設定は不要です。
（Windowsの場合にはJDK6のダウンロードが別途必要です。）
インストールしたら、どんなテキストエディタで開発することも可能です。
最後に、Corona Simulatorを起動してアプリ開発を開始します。
ね？簡単でしょ？！

##そんなこと言われても。。。
プログラミングって難しいんでしょ〜？ってお思いのそこのあなた！
そんなあなたのような方のためのハンズオンを先日開催したんです。
その結果、初めての方にも終わる頃にはそれなりに動きもあり
タッチしたら画面内でアニメーションしたり音が出る各自オリジナルなアプリを
発表するまでになりました！パチパチパチパチー♪
（先生ホッとしたよ。。。）とさ。
![10624713_758082764267139_2075289235324260069_n.jpg](https://qiita-image-store.s3.amazonaws.com/0/16461/16f2929d-927f-5f02-a73e-76ab84c9367f.jpeg)


##デデン！次回予告！！
間髪入れずに次やります！
詳しくは、[こちら](http://greenhack1221.peatix.com)をご覧ください。
ちなみに、GreenHackさんの参加者は女子率高いよ！！
ご応募お待ちしておりまーす。

その２につづく
非Prolog的Prologプログラミング

論理型プログラミング言語Prologは述語を定義してプログラミングする。でも、関数を基本単位としたプログラミングをしてきたのに、いきなり述語で書けと言われても、どうすればいいか分からない。今回は、関数を述語で表現してみる。

# 関数

フィボナッチ数列のn項目を返す関数`f(n)`の定義を普通に書いてみる。

```
f(0) = 0
f(1) = 1
f(n) = f(n - 1) + f(n - 2) if n > 1
```

これをPrologで書きなおす。

```prolog
f(0, 0).
f(1, 1).
f(N, Y) :-
    N > 1,
    !,
    N1 is N - 1,
    f(N1, Y1),
    N2 is N - 2,
    f(N2, Y2),
    Y is Y1 + Y2.
```

`f(0) = 0`, `f(1) = 1`という定義を、Prologの`f(0, 0)`, `f(1, 1)`という命題で表している。

最後の節の、カット`!`の前に書いてある`N > 1`は、（この節で）関数が定義されている条件を表す。条件が満たされていれば、この次に進む。

カット`!`を通ると、失敗してもこれより前にバックトラックしなくなる。条件が満たされていれば、その時点で（プログラマーにとっては）この先失敗することがないと分かっているので、カットしてしまおう。

その後の命題の列は、`y = f(n - 1) + f(n - 2)`を表すためのものだけど、そのまま表現できないので、変数を導入して細かい命題に分割している。

# まとめ

関数を組み合わせてプログラミングしたいなら、Prolog以外の方が楽。
SwiftでiOSアプリ開発をしてみて（#^ω^）ﾋﾟｷﾋﾟｷ な点４つ(2014/12現在)

## Swift自体の不満というよりも環境への不満が大きいですが
最近になってようやく、SwiftでiPhoneアプリ開発を始めました。

やはり慣れない言語と環境に変わって、色々と不満な点が出てきて、たまに（#^ω^）ﾋﾟｷﾋﾟｷ  しながら開発しています。そんな（#^ω^）ﾋﾟｷﾋﾟｷ なところをまとめてみました。

どっちかというとSwift自体の問題よりも、Xcodeとかライブラリとかへの不満が多いですけどもね。


### 1.Xcodeが SourceKitService Crushed エラーを出しまくる
これ、ほんとーーに頻発するので（#^ω^）ﾋﾟｷﾋﾟｷ 度は高いです。

普通にコードを書いていると、SourceKitService Crushedエラーが表示されて、テキストエディタ部の色が単色になり、補完が効かなくなります。


#### 解決方法？
stackoverflowにも問題が上がっていました。
[ios - Swift SourceKitService Crashed - Stack Overflow](http://stackoverflow.com/questions/26230440/swift-sourcekitservice-crashed?lq=1)

上の記事によれば、

>~/Library/Developer/Xcode/DerivedData

を削除すると治ると書いてあったんですが、自分の場合は改善せずでした。


Xcodeはバージョン6.1です。同じXcodeでObjective-Cアプリを書いていた時はまったく問題なかったんですけどねえ。最近はエラーを無視してそのままコードを書き続けられるようになりました...w。

#### Xcode6.1.1で修正された？(2014/12/03 追記)
2014/12/03に正式リリースのXcode 6.1.1で、"Fixes SourceKit crushes when working with Swift" となったようです。

しかし、2時間ほど使ってみたところ、何度かSourceKit crushが発生..。
まだ（#^ω^）ﾋﾟｷﾋﾟｷ は続きそうです...。

### 2.Xcodeのリファクタリング機能に対応していない
これも Xcode6.1の問題。

「変数名をわかりやすい名前に修正したいなー」という時、Edit > Referctor > Rename とやると…。

![cant_refactor_swift_code.png](https://qiita-image-store.s3.amazonaws.com/0/13070/d8e0fec0-04d5-e68e-030a-37102c6bb354.png)

**"Xcode can only refactor C and Objective-C code.”**
**"Xcode can only refactor C and Objective-C code.”**

うーん、せっかくApple自ら新しい言語作ったのだから、そこは対応して欲しい（#^ω^）ﾋﾟｷﾋﾟｷ


### 3.サンプルコードが少ない

iOS開発関連で検索を行うと(例えば「UIView Animation」とか)、ヒットするのはサンプルコードがObjective-Cで書かれたサイトが大半です。やはり、長年使われてきたObjective-Cの資産は蓄積されていますね。


で、サイトの情報を参考にして自分のプロジェクトに取り入れるわけですが、この時にSwiftに書きなおすのが面倒です。「Objective-Cで書いていたら、移植の手間がなかったのにな（#^ω^）ﾋﾟｷﾋﾟｷ」と思うこともしばしば。


ある程度ソースコードがまとまっているなら、Objective-CをBridgeしてそのまま利用すればいいのですけどもね。


### 4.いい感じのライブラリ管理ツールがない
[Alamofire](https://github.com/Alamofire/Alamofire) の作者さんが書いてましたが、

> Due to the current lack of proper infrastructure for Swift dependency management, using Alamofire in your project requires the following steps:

今のところ、CocoaPods並みにいい感じのライブラリ管理ツールが無いみたいです。


で、代わりにGitのsubmodule機能を使ったりするんですが、これがわりと面倒（#^ω^）ﾋﾟｷﾋﾟｷ


まあ、今のところSwift製のライブラリが少ないということもあり、CocoaPodsを使ってObjective-Cのライブラリを使用する機会が多いので、そんなには気にならないですけども。。


## 結論：新言語への移行期なので、まだ我慢は必要かも

急に新しい言語が導入されたということで、周辺環境が追い付いていない感じですね。発表されてから、まだ半年ですし。


Xcode自体も十分なSwift対応ができていない(リファクタリングできない等)ですし、今までObjective-Cで開発していた人にとっては、ストレスが溜まるかもしれません。


ただ、これから環境が整っていけば、Swiftの方が生産性も良くなるんじゃないですかねー。個人的には、あと１年もすれば、状況はだいぶ変わると思います。
Primitive-obsession(基本データ型への執着)

オブジェクト指向を用いた設計を考えて調べものをしていた時に**Primitive-obsession(基本データ型への執着)**という言葉を知ったので自分なりにまとめておきました。

# Primitive-obsessionとは
「Primitive-obsession(基本データ型への執着)」とは、ドメインの概念を表すのに基本データ型を用いることを言います。
たとえば、メッセージを表すのに文字列を使う、金額を表すのに整数を使う、なんらかのオブジェクトを表すのに構造体・ディクショナリ・ハッシュを使うといったものです。


# なにが良くないのか?
たとえば電話番号を表すのに文字列や数値を使っていた場合、電話番号特有の処理などを書きたい場合(-を抜いた数値型に変換したり、その逆をしたりする処理)、そのオブジェクト自体のメソッドとして記述できないので処理用の関数がバラバラに置かれることになります。
そうなるとメンテナンス性が下がるし、変更にも弱くなりやすいです。

そういう時にはPhoneNumberというクラスを作って、PhoneNumberのインスタンスを使うという設計にした方が電話番号に関する処理がカプセル化して良い設計になります。

# コード例
名前と電話番号を持っているUserクラスを元にPrimitive-obsessionになっている例とそれを改善した例を示しながら説明します。

まず以下のPrimitive-obsessionになっているUserクラスをみて下さい。

````ruby:user.rb
# Primitive-obsessionになっているUserクラス
class User

  def name
    self.name
  end

  #
  # nameにユーザーの名前に文字列を代入する
  #
  def name=(string)
    self.name = string
  end

  def phone_number
    self.phone_number
  end

  #
  # phone_numberに電話番号を表す数値を代入する
  #
  def phone_number=(integer)
    self.phone_number = integer
  end

end

````

一見問題ないように見えますが、要件が増えてくると複雑になっていきます。

例えば、ユーザーの名前を苗字(lastname)と名前(firstname)で分けて管理したい、電話番号をハイフン付きで表示したい、などの要件が出てきたとき、それらの処理を行うメソッドをすべてUserクラス内に記述しないといけません。

そうすると、Userクラスが電話番号と名前という複数の責任を負わないといけないため、オブジェクト指向の原則である**単一責任の原則**から外れてしまい、すぐにクラスが肥大化してしまいます。

では、今度はPrimitive-obsessionを改善した例を以下に示します。

````ruby:user.rb
#
# Primitive-obsessionを改善したUserクラス
#
# User.nameはUserNameクラスのインスタンスになっている
# User.phone_numberはPhoneNumberクラスのインスタンスになっている
#
class User

  def name
    self.name =|| new UserName()
  end

  def name=(user_name)
    self.name       = user_name
  end

  def phone_number
    self.name =|| new Telephone()
  end

  def phone_number=(phone_number)
    self.telephone = telephone
  end

end

#
# ユーザー名を管理するクラス
#
class UserName
  
   def initialize(first_name=null, last_name=null)
      self.first_name = first_name
      self.last_name  = last_name 
   end 

   def first_name
      self.first_name    
   end

   def first_name=(string)
      self.first_name = string   
   end

   def last_name
      self.last_name
   end

   def last_name=(string)
      self.last_name = string
   end

end

#
# 電話番号を管理するクラス
#
class PhoneNumber
   
  def initialize(integer)
     self.number = integer
  end

  def number
     self.number
  end

  def number=(integer)
     self.number = integer
  end

end

````

前回と違い、電話番号はPhoneNumberクラス、ユーザーの名前はUserNameクラスで表現するように変更しました。

これにより、ユーザーの名前に関する責任はUserNameクラス、電話番号に関する責任はPhoneNumberクラスに分割することが出来ました。

このような設計を行うことで、Userクラスが負っていた複数の責任を分割してクラスを小さく出来るだけでなく、例えば求人サイトなどの企業を表すCompanyクラスなどが出来た場合にはPhoneNumberクラスを使いまわす事ができます。

# 終わりに
いままではフレームワークの流儀に合わせたクラス設計(MVC)ぐらいしかしてこなかったのであまりオブジェクト指向を強く意識したことがなかったですが、勉強するとなかなか発見が多くて結構面白いです。

自分はいまRubyでプログラムを書くことが多いので、これを気にちゃんとオブジェクト指向の書き方を勉強し直したいと思います。
Leiningenでプロジェクト専用タスクを作る

　Leiningenの3分間コネタTipsを書きます。

　以下の例はLeiningen 2.4.2で確認しました。執筆時点で[heroku-buildpack-clojureがLeiningen 2系で指定しているバージョン](https://github.com/heroku/heroku-buildpack-clojure/blob/master/bin/compile#L28)と同じはずです。

## やりたいこと

　たとえばWebアプリでは、実行前に静的ファイルを生成したいことがあります。LESSからCSSを生成したり、CSSやJavaScriptを縮小（minify）したりする場合などです。一般的なタスクについては、Leiningenの[プラグイン](https://github.com/technomancy/leiningen/wiki/Plugins)などが揃ってきています。

　しかし、処理がプロジェクト特有で適切なプラグインがない場合には、プロジェクト内に専用のタスクを作ることになります。

　私の場合は、プロジェクト内で定義された文字列のリストから、そのいずれかにマッチする正規表現を生成してJavaScriptファイルに埋め込む処理を、タスク化することにしました。先頭からトライ木状にマッチする効率のよい正規表現の生成には、Maven Centralに登録されている[regexp-trie](https://github.com/tokuhirom/regexp-trie)というJavaライブラリを選びました。

　以上のやりたいことを、箇条書きでまとめます。

* プロジェクト専用のタスクを作る
* タスクからMaven CentralのJavaライブラリを使う

## タスクを作る

　プロジェクト専用のタスクを作る方法は、Leiningenオフィシャルのプラグイン作成ドキュメント「Leiningen Plugins」に[「Project-specific Tasks」](https://github.com/technomancy/leiningen/blob/master/doc/PLUGINS.md#project-specific-tasks)として書かれています。

　まずはこれにのっとって、Hello World代わりに「yo」というタスクを作ってみます。

　プロジェクトのルートディレクトリにいるものとします。まず、tasks/leiningenディレクトリを作ります。

```console
$ mkdir -p tasks/leiningen
```

　yoというタスクなら、tasks/leiningenのyo.cljにleiningen.yoという名前空間でyo関数を書きます。

```clojure:tasks/leiningen/yo.clj
(ns leiningen.yo)

(defn yo [project]        ; projectにはproject.cljでの定義が渡ってくる
  (println "Yo") )        ; とりあえず文字列を表示するだけ
```

　プロジェクトのルートディレクトリの.lein-classpathに、tasksディレクトリを追加します。.lein-classpathファイルがないのであれば、「tasks」とだけ書いておきます。

```console
$ echo tasks > .lein-classpath
```

　もし.lein-classpathがすでにあるのであれば、クラスパス形式で追記します。

　これだけでタスクが作られました。実行してみます。

```console
$ lein yo
Yo
```

　簡単ですね。

　ちなみに、leiningenのデフォルトテンプレートで作られる.gitignoreには、初期状態で`/.lein-*`という行が含まれます。gitを使う人はご注意を。

## Maven Centralのライブラリを使う

　さて、project.cljの:depenciesにすでに`[me.geso/regexp-trie "0.1.10"]`を登録してプロジェクト本体で使っているものとします。このregexp-trieをfooというタスクのtasks/leiningen/foo.cljからimportしてみます。

```clojure:tasks/leiningen/foo.clj
(ns leiningen.foo
  (:import [me.geso.regexp_trie RegexpTrie]) )

;; 以下略
```

　しかし、実行したらClassNotFoundExceptionになってしまいました。

```console
$ lein foo
clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: me.geso.regexp_trie.RegexpTrie, compiling:(leiningen/foo.clj:1:1)

（以下略）
```

　Maven Centralのライブラリは参照できないようです。

　そこで、Leiningenが使っている[pomegranate](https://github.com/cemerick/pomegranate)のadd-dependenciesを呼んでregexp-trieをクラスパスに追加してから、importしてみます。

```clojure:tasks/leiningen/foo.clj
(ns leiningen.foo
  (:use [cemerick.pomegranate :only [add-dependencies]]) )  ; まずpomegranateをuse

(add-dependencies                                           ; ライブラリを追加
  :coordinates '[[me.geso/regexp-trie "0.1.10"]]            ; project.cljと似た感じで
  :repositories cemerick.pomegranate.aether/maven-central ) ; maven-centralはpomegranate内で定義されている

(import [me.geso.regexp_trie RegexpTrie])                   ; ここでregexp_trieをimport

;; 以下略
```

　実行してみます。

```console
$ lein foo
```

　エラーなく実行できました。よかった。

## 別解

　Leiningenプラグインの[lein-exec](https://github.com/kumarshantanu/lein-exec)を使えば、`lein exec hoge.clj`のようにClojureのスクリプトを実行できます。ただし、今回はタスクとしてまとめたかったので、lein-execは採用しませんでした。

　なお、上で書いたpomegranateでMaven Centralライブラリを呼べるようにする方法は、lein-execを参考にしました。
Dartのプロジェクトジェネレータ Stagehand

こんにちは、らこです。Dartアドベントカレンダー3日目も私が担当します。

# Stagehandとは？
![image](https://qiita-image-store.s3.amazonaws.com/0/20253/a5b29318-f6fb-7735-a00f-18a1b8fccd25.png)

http://stagehand.pub/

Stagehandとは、GoogleのDartチームが開発したプロジェクトスキャフォールディングツールです。Stagehandを使えば、コマンドラインで簡単にDartアプリケーションのテンプレートから自分のプロジェクトを生成できます。現在Stagehandに搭載されているテンプレートは以下のプロジェクトです。

- webapp : 簡単なWebアプリ
- consoleapp : 簡単なコンソールアプリ
- package : ライブラリやアプリケーションの起点
- polymerapp - [Polymer.dart](https://www.dartlang.org/polymer/)を使ったWebアプリ
- shelfserver - [shelf](https://pub.dartlang.org/packages/shelf)を使ったWebサーバーアプリ

Stagehandはまだβ版で、利用者からのフィードバックを強く求めています。開発はそこそこに活発で、GitHubにIssueやPRを投げると大体ちゃんと対応してくれます。

# 使い方
## インストール方法
まずは最新のDart環境を作りましょう。Dart1.7以降はpubが改善され、activateしたパッケージが直接実行できるので便利です。

Dart1.7以降をインストールしたら、コマンドラインで以下のコマンドを実行します。

```
pub global activate stagehand
```

pubにパスが通ってなければ、`dart/bin`をPATHに追加しておきましょう。
global activateできたら、あとは実行するだけです。

## プロジェクトの生成
Stagehandは、コマンドが実行されたディレクトリをプロジェクトのルートディレクトリとして、そのディレクトリ名をプロジェクト名とします。なので、まずは作りたいプロジェクトの名前でディレクトリを作りましょう。

```
mkdir myDartApp
cd myDartApp
stagehand webapp
```

これで`myDartApp`という名前のWebアプリケーションが完成します。生成されたプロジェクトはどれもすぐに実行できる状態になっているので、動かしながら自分のアプリケーションに改造していくことができます。

プロジェクト生成時にauthorオプションを渡すことも出来ます。

```
stagehand webapp --author laco
```

# 使ってみた感想
#### DartEditorを使ってない人にオススメ
私はWebStormでDartを書いているので、プロジェクトのテンプレートがWebアプリとコンソールアプリの2種類しかなくて、ちょこっと不便だったのがそこそこに解消されました。特にPolymer.dartに関しては何かしら試そうと思って環境を作ろうとするとWebアプリ用のプロジェクトを作って、pubspec.yamlを書いてpub getして、HTMLにいろいろ書いてと手間があったのですがコマンド1つなので重宝してます。

特にWebStormと相性がいいです。WebStormでEmpty Projectを作成して、WebStorm内のTerminalでStagehandを叩くのが最近の流れになってます。

#### ドキュメントがなさすぎる
上のauthorオプションはソースコード見ないとわからないです。本当に駆け出しのプロジェクトなのでドキュメンテーションが足りてないですが今後どうにかなると思います。

# おまけ
ここからが本番なんですが、Stagehandのテンプレート、少ないと思うんですよ。Polymer.dartにしてもshelfにしてもDart Teamのライブラリですし、もっと多様性が欲しいなと思ってIssueを投げました。

https://github.com/google/stagehand/issues/127

「独自のテンプレートを追加できるようにしてほしい！」という要望に対して、Seth氏の回答は「それならyeomanのgenerator-generatorを使うほうがいい」とのことでした。Seth氏はDartだからといってNode.jsのツールを使ってはいけないみたいなのは全然ないっぽくて、むしろ有用だから使い分けていこうなみたいな事を言われたと思う。Stagehandは選りすぐりのテンプレートだけを提供して、質を高めていくつもりらしいです。

# おまけ2
それでもやっぱりテンプレート少ねえなと思ったので自分でテンプレート書いてPR投げました。

https://github.com/google/stagehand/pull/128

AngularDartがちょうど1.0になった頃だったので、AngularDartを使ったWebアプリのテンプレートを作って投げてみたら結構感触よくてあっさり採用されました。テンプレート少ないのは単純に手が足りてないのも大きいみたいです。見た感じ実質作業してるの二人くらいのようですし。

しかし採用決定されたのはいいですが未だにジェネレータが実装されません。何故かというと、AngularDartが依存してるcore_transformersにバグがあって、アーカイブのDL以外のインストール方法（aptやbrew）でインストールされたSDKのシンボリックリンクが解決できない事案が発生してるからです。

https://github.com/google/stagehand/pull/140

私はアーカイブ落として展開してたので問題なかったんですが、Seth氏は自分のMacにbrewでDartを入れてるので、動かねえぞ～と問題発覚して今に至るまで凍結状態になってます。core_transformers早くして！

# おまけ3
そうやっているうちにいつのまにかGitHub上にAppEngine用のプロジェクトテンプレートが追加されてました。

https://github.com/google/stagehand/tree/master/templates/appengineapp

これはジェネレータまで実装されてて、実はもう使えるっぽいんですが、CHANGELOGやREADMEにもまだ書かれてないので使うなってことだと思いますし、アナウンスを待ちます。

----
以上、開発途上感がハンパないDartの新プロジェクト「Stagehand」の紹介でした。機能自体はほとんど完成されててめっちゃ便利なので普段せっせこ自分でディレクトリ作ってpubspec.yaml置いて`/web`とか`/lib`とか`/bin`とか作ってる人は一度試してみるといいと思います。

明日はzukkunさんです。
【気分転換】盛岡のノマドカフェ【作業が捗る】


こんにちは， @isseium です．
この記事は，Iwate Developers Advent Calendar 3日目の記事になります．

ノマドという言葉が死語になりつつある今日この頃いかがお過ごしでしょうか．
たまにはいつもの作業場から離れてで開発をしたくなったりしますよね？たまの土日は家じゃなくて違うところで開発したいですよね？

そんな Iwate Developer のみなさんのために，独断と偏見で選ぶノマドカフェをまとめました．

※私の活動圏の事情で盛岡・滝沢エリアのみの内容です！

## Culfe Morioka TSUTAYA

![](http://i.gyazo.com/a2f14e4de632dcb8f0fec89a44eae63d.png)

盛岡のノマドワーカーなら誰もが知っているTSUTAYA直営のWiFi・電源ありカフェです．
営業時間も 9:00 〜 24:00 （Culfeは23時まで）で年中無休．TSUTAYAの購入前書籍を持ち込んで読むこともできます．文句なしです！

土日祝の混んでいる時間帯は2時間制になることがあるのでご注意ください．

## 風の扉（SHINSEIDO TOUCH 盛岡フェザン店）

![](http://i.gyazo.com/b8f384c9a85b5a0acea0093d4bf65424.png)

盛岡駅徒歩圏ダントツの作業空間です．WiFi・電源も完備しています．

コーヒーや軽食もCulfe よりもお値段は一回り安いですので気軽に利用できます．
駅も近いので待ち合わせの場としてもピッタリな気がします．営業時間は 10:00 〜 21:00 です．

週末を中心に定期的にライブが開催されているようです．生演奏を聴きながら作業ができます！

## プロント 盛岡駅フェザン店

![](http://i.gyazo.com/3124328fa9b9823bc155309a402bd7b7.png)


ビアコーディングができます！タバコ席あります！
残念ながらお店公式のWiFiは用意されておりませんのでテザリング機器を持って行きましょう．


## マクドナルド 盛岡西バイパス本宮店

**24時間利用**できるのが最大のポイントです！
電源席とWiFi（mobilepoint）が設置されています．


## スターバックコーヒー 盛岡菜園店

繁華街に近いので，大通りでの飲み会前に少し作業を...というときにぴったりです．
席数は少ないですが電源席があります！

# ちょっと風変わりなノマドスポット

よく行くところをいくつか挙げたところ，どれもチェーン店であまり驚きもない内容になったので，少し風変わりなスポットを紹介します．

## イオンモール盛岡南 / イオンモール盛岡 フードコート

WiFi（mobilepoint）があります．電源席はありません．多くの人が行き交いますので，強靱な精神力と集中力が身につくと思います．雑多な空間のほうがよいという方はオススメです！

## 岩手県立図書館

![](http://i.gyazo.com/2f1b4f5f844ce8356e797cfb3a261c2e.png)

駅近で本とともにパソコンを使うならココ！（電源席あり，WiFiなし）
Culfeは盛岡駅から歩いていくのはちょっと距離がありますが，盛岡駅西口アイーナ内にあるので徒歩圏です．あくまで図書館の書籍とともにパソコンを利用するという前提でなければ利用できませんのでご注意を．

## 岩手県立大学

![](http://i.gyazo.com/904e4e5dc8e4d52d1c4382ac3d63d72d.png)

大学は地域に開かれた施設ですね！学生でなくとも入館申請を書けば大学図書館を無料で利用することができます．大量の蔵書と電源席がありますのでどうぞ．（WiFiは学生限定）

# さいごに

ノマドワークは，セキュリティやクライアントとの機密保持契約によっては外で開発を控えたほうがよかったりしますし，すべてがノマドワークできるわけではないですが，新しい気づきや出会いがあったりと街を感じながら生きる一つの方法としてとてもよいと思っています！店舗や周りのお客様への配慮も忘れずに節度を持って利用していきたいですね！

明日は，"岩手と共に半世紀"で有名な会社の中の人 @iwadatedenki さんです！僕と同じく2013年に岩手に戻ってこられた方です．どんな記事か気になりますね！

<iframe width="420" height="315" src="//www.youtube.com/embed/7TN5EE5J2w0" frameborder="0" allowfullscreen></iframe>
CMake: コメント

## はじめに

みなさん、こんにちは。今回は、コメントについて書いていきます。

実は CMake のコメントは以下の2種類あり、それぞれ違う特徴を持っています。

## Line Comment

まず、Line Comment からですが、
これは`#`文字から始まるコメントで、行末までが有効範囲になります。
普段はこちらを使うことになるでしょう。

```cmake
message(a) # aと出力する
```

## Bracket Comment

次に、Bracket Comment ですが、これは CMake 3.0 から追加されたコメントで、前回のコマンド引数の記事で示した Bracket Argument と似た構文を持っています。つまり、`#`文字の直後の、二重の対となるブラケット`[[`・`]]`で囲われていて、ブラケットの間に任意の数の等号`=`をいれることができます。この等号`=`の数は対となるブラケットで同じでなければなりません。

```cmake
message(a) #[[aと出力する]]
message(a) #[=[aと出力する]=]
message(a) #[==[aと出力する]==]
```

この Bracket Comment は次のように複数行に書くことができます。

```cmake
message(a) #[[
  aと出力する
]]
```

また、引数の間に書くこともできます。

```cmake
message(a #[[値a]] b #[[値b]])
```

`=`の数を変更すれば、ネストしたコメントアウトにも使えます。

```cmake
#[[
  message(a)
  #[=[
    message(b)
    #[==[
      message(c)
    ]==]
  ]=]
]]
```

## おわりに

以上、コメントについてでした。CMake 3.0 で追加された Bracket Comment は複数行に渡るコメントを書くときに便利そうですね。

明日は、mrk_21 さんの『CMake: 変数』です。
「dl,dt,ddタグ」の使い方とhtml5,slimでの記述方法

![](https://qiita-image-store.s3.amazonaws.com/0/63640/3c15bea4-7567-553d-6fc9-ba1a34e02810.png "logofix.png")

## dlタグ
- ブロック要素
- 入れ子にできるのはdtタグとddタグのみ
- Description List(ディスクリプションリスト)の略
- html4まではDefinition List(ディフィニションリスト)の略とされていた
- 定義リストを表示させたい時に使う
- リストの各項目はdtタグとddタグで記述する

```html
<dl>
	<dt>マイクロブタ</dt>
	<dd>突然変異の超小ブタからできたブタで、体重20kg程度にしか成長しない。</dd>
</dl>
```
			
```RubySlim
dl
	dt
		| マイクロブタ
	dd
		| 突然変異の超小ブタからできたブタで、体重20kg程度にしか成長しない。
```

## dtタグ
- ブロック要素
- 入れ子にできるのはインライン要素のみ
- Description Term(ディスクリプションターム)の略
- html4まではDefinition Term(ディフィニションターム)の略とされていた
- 定義する用語や専門的な用語をdtタグで記述する


## ddタグ
- ブロック要素
- どんな要素も入れ子にできる
- Description Description(ディスクリプションディスクリプション)の略？？？
- html4まではDefinition Description(ディフィニションディスクリプト)の略とされていた
- dtタグで記述された用語の説明をddタグで記述する

## 改行(brタグ)を含む定義リストの記述方法

```html
<dl>
    <dt>ミニブタ</dt>
    <dd>通常のブタは大きいもので300kgを超えるが、ミニブタは体重40〜50kg程度にしか成長しない。
    <br>鳴き声が少なく、毛によってアレルギーを引き起こす心配が少ない。
    <br>きれい好きで、排泄場所をしつけることも可能。
    </dd>
</dl>
```

```RubySlim
dl
	dt
		| ミニブタ
	dd
		| 通常のブタは大きいもので300kgを超えるが、ミニブタは体重40〜50kg程度にしか成長しない
		br
		| 鳴き声が少なく、毛によってアレルギーを引き起こす心配が少ない。
		br
		| きれい好きで、排泄場所をしつけることも可能。
```
"Seven More Languages in Seven Weeks"

こんばんは、先日行われた会社の忘年会にて、Juliaを使ったビンゴ大会を開催し失笑を買った（？）@soramiです。[Julia Advent Calendar](http://qiita.com/advent-calendar/2014/julialang)の12/19担当予定でしたが、12/22までずれ込んでしまいました、すいません。。

さて、私は先日「[データサイエンティスト養成読本 R活用編](http://www.amazon.co.jp/dp/4774170577)」という書籍に、Juliaについて少々書かせていただきました。まだまだJuliaの情報が少ない世の中ですが、これ以外にもいくつか紙のメディアにJuliaについての情報があります。

まず最初に挙げられるのは、夜道さんによる「Julia 本Vol.1」でしょう。こちらは、2013年の夏コミで出されたもので、Juliaについて日本語で丁寧に解説されている貴重な資料です。[現在はWebで公開されており、手軽に読むことができます](http://yomichi.hateblo.jp/entry/2014/01/05/160714)。本文の最後に「予告」がありますが、夜道先生の次回作が待ち遠しい限りです（たしか今年冬に出すと仰っていたような...）。

他には、現在Leah Hansonさんが「Learning Julia」という本を執筆されているそうで、ゆくゆくはオライリーから出版されるようです。現在はまだ第1章しか書き終わっていないようですが、[表紙のデザインをTwitterの投稿から伺うことができます](https://twitter.com/astrieanna/status/512745979078918144)。

2014年12月現在もっともまとまっている出版物は、「[Seven More Languages in Seven Weeks](https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks)」でしょう。こちらは、多種多様なプログラミング言語を紹介した「Seven Languages in Seven Weeks（邦題: [７つの言語 ７つの世界](http://www.amazon.co.jp/dp/4274068579)）」の続編で、今年11月に出版されたばかりのものです。

![Seven More Languages in Seven Weeks](https://imagery.pragprog.com/products/410/7lang.jpg)

この本、[Juliaの公式サイトにも、学習用の参考書籍として一番に挙げられています](https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks)。ちなみにこれら以外にも、Pragmatic Bookshelfの[Seven in Sevenシリーズ](https://pragprog.com/categories/7in7)は興味深いものばかりですね。

前作は*Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell*というラインナップでしたが、今回は*[Lua](http://www.lua.org/), [Factor](http://factorcode.org/), [Elm](http://elm-lang.org/), [Elixir](http://elixir-lang.org/), Julia, [miniKanren](http://minikanren.org/), [Idris](http://www.idris-lang.org/)*という、更に面白げな、選りすぐり面子が揃っています。ちなみに、今回紹介されている7言語のうち、Juliaが最後に（7言語目として）選ばれたそうです。

Juliaの章は、Jack MoffittとBruce Tateが担当しています。まずデータ型や簡単な文法から始まり、並行性（Concurrency）やマクロにも触れ、最後は画像のコーデックをつくる、という3日間コースの体裁で、間にはJuliaのクリエイターら（Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman）へのインタビューもあります。4人がまとめて質問に応対しているのが、Juliaという言語、そしてコミュニティをよく表しているなあと思いました。

ちなみに、インタビューではreal-time radioへの応用があるとか、スタートアップがWebアプリにデプロイしてるとかという話が出ていましたが、詳細が気になりますねえ...

Juliaに関する数少ないまとまった資料です。この言語に興味がある方は、読んでみて損はないかと思います。

Julia以外だと、miniKanrenが面白そうですねえ。

--

2015-01-03: "[Learn Julia The Hard Way](https://github.com/chrisvoncsefalvay/learn-julia-the-hard-way/)"というものも執筆が進められているようです。

--

参考:
- [The Pragmatic Bookshelf | Seven More Languages in Seven Weeks](https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks)
- [Book: Seven More Languages in Seven Weeks - Google Groups](https://groups.google.com/forum/#!topic/julia-users/f7G85uwxlVs)
esa.io 関連記事 #esa_io

更新日: 2015/05/29 23:25:38

|No.|タイトル|作成日|ストック数|
|--:|:--|:--:|--:|
|1|[Chrome 拡張 esarea でブラウザ内でも快適 Markdown 生活](http://qiita.com/tbpgr/items/25ee2f41e77e3b848d93)|2015/05/23 00:20:02|3|
|2|[Qiita の記事タイトル命名時にコンテキストを明示する #qiita #esa_io](http://qiita.com/tbpgr/items/ec82a2ba0c4ab26fd3a3)|2014/12/28 17:22:36|2|
|3|[esa API 略して esapi を esa-ruby 経由で利用し、生煮え率を計測する #esa_io #ruby](http://qiita.com/tbpgr/items/b8055fc829e8dd79dd1a)|2015/05/29 23:20:17|0|
|4|[esa.io pplog emoji FizzBuzz #esa_io #pplog #fizzbuzz](http://qiita.com/tbpgr/items/1fc6d50e745fa3198b42)|2015/03/01 01:01:27|0|
|5|[esa.io で、 Markdown を使ってスライドショーを作成し、内部公開する #esa_io](http://qiita.com/tbpgr/items/33f6992368bf7163a6f3)|2014/12/22 23:10:18|0|
|6|[esa.io で、 Markdown を使ってスライドショーを作成し、外部公開する #esa_io](http://qiita.com/tbpgr/items/0167b99d684918899908)|2015/01/13 03:32:06|3|
|7|[esa.io でゆるふわ情報共有 - Middleman Blog への Export サンプル付き #esa_io](http://qiita.com/tbpgr/items/779e6eea9e9dec24e273)|2014/12/17 22:19:16|20|
|8|[esa.io に emoji 見出しの投稿テンプレートを作成する #esa_io](http://qiita.com/tbpgr/items/2010ce4b89365f42211f)|2014/12/22 23:23:06|0|
|9|[esa.io の通知を Slack で表示するため、 Webhooks の設定を行う #esa_io #slack](http://qiita.com/tbpgr/items/5437b73fb01bc778b9b3)|2014/12/19 23:42:11|7|
|10|[タスク管理ツールNight! タスク管理ツールの宴 リンク集 #TaskToolNight](http://qiita.com/tbpgr/items/4d8e8c28f050a944a8e1)|2015/02/17 01:08:14|12|
esa.io に emoji 見出しの投稿テンプレートを作成する #esa_io

# :baby_chick: esa.io に emoji 見出しの投稿テンプレートを作成する #esa_io
## <i class="fa fa-cubes" style="font-size:1em;"></i> 概要
:baby_chick: esa.io に emoji 見出しの投稿テンプレートを作成します

## <i class="fa fa-flag-checkered" style="font-size:1em;"></i> 目的
* 文字のみの平坦な記事を emoji で強調して読みやすくする
* 投稿テンプレートで emoji を利用した記事フォーマット統一を楽に実現

## <i class="fa fa-flask" style="font-size:1em;"></i> 具体例
### <i class="fa fa-file-text" style="font-size:1em;"></i> 仕様
ほげシステムの運用監視メールの対応情報をテンプレート化する

### <i class="fa fa-tree" style="font-size:1em;"></i> カテゴリ
下記のようにタイトル付することで、

~~~
ほげシステム/運用監視メール/2014/12/17/1
~~~

下記のようにカテゴライズされます

~~~
ほげシステム
 ┗ 運用監視メール
     ┗ 2014
         ┗ 12
             ┗ 17
                 ┗ 1
~~~

### <i class="fa fa-gears" style="font-size:1em;"></i><i class="fa fa-file-text" style="font-size:1em;"></i> 投稿テンプレートを作成する（ emoji なし）
※markdown の中に markdown を記述する場合に、コードブロックの部分がうまく表示できなかったので
 本来の内容から少し変更してあります。

```markdown
## 概要
%{Year}/%{month}/%{day} / 監視メール / エラー原因調査

## エラー内容
TODO: エラーの内容の要約

`TODO: エラーログの抜粋など`

## 原因
TODO: 要調査

## 対応
TODO: 
```

![template1.png](https://qiita-image-store.s3.amazonaws.com/0/43480/81f28854-59bb-7655-03c7-660c2ec20255.png)

### <i class="fa fa-plus-square" style="font-size:1em;"></i> 投稿テンプレートを利用して記事を新規作成する（ emoji なし）
* 作成した投稿テンプレートを利用して記事を作成します
* Select Template のリストから利用する投稿テンプレートを選択します
* 年月日にシステム日付が設定され、投稿テンプレートのファイル名をもとに記事タイトルも設定されます。楽

![template2.png](https://qiita-image-store.s3.amazonaws.com/0/43480/c3968424-c55e-5d9e-c41b-69fe4a706597.png)

### <i class="fa fa-gears" style="font-size:1em;"></i><i class="fa fa-file-text" style="font-size:1em;"></i> 投稿テンプレートに emoji を追加
※markdown の中に markdown を記述する場合に、コードブロックの部分がうまく表示できなかったので
 本来の内容から少し変更してあります。

```markdown
## :scroll: 概要
%{Year}/%{month}/%{day} / 監視メール / エラー原因調査

## :warning: エラー内容
TODO: :bangbang::pencil2: エラーの内容の要約

`TODO: :bangbang::pencil2: エラーログの抜粋など`

## :red_circle: 原因
TODO: :bangbang::pencil2: 要調査

## :large_blue_circle: 対応
TODO: :bangbang::pencil2:
```

![template3.png](https://qiita-image-store.s3.amazonaws.com/0/43480/721780bb-70ac-7c6c-b129-6efcb28a623b.png)

### <i class="fa fa-plus-square" style="font-size:1em;"></i> 投稿テンプレートを利用して記事を新規作成する（ emoji あり）

![template4.png](https://qiita-image-store.s3.amazonaws.com/0/43480/c9a8ba15-24bf-800f-3d1f-db3a6197ce48.png)

### <i class="fa fa-refresh" style="font-size:1em;"></i> 記事の内容を適当に埋めてみる

![template5.png](https://qiita-image-store.s3.amazonaws.com/0/43480/2fc2309d-853c-5dc1-3120-bcc750547a17.png)

## <i class="fa fa-book" style="font-size:1em;"></i> 外部資料
* <i class="fa fa-external-link-square" style="font-size:1em;"></i> :baby_chick: [esa.io | How to use | 投稿テンプレート](https://docs.esa.io/posts/7)

## <i class="fa fa-recycle" style="font-size:1em;"></i> 関連記事
* <i class="fa fa-external-link" style="font-size:1em;"></i> [Qiita の記事の見出しに Font-Awesome を利用して見栄えを良くする](http://qiita.com/tbpgr/items/361d8aaa38fb57d75216)
* <i class="fa fa-external-link" style="font-size:1em;"></i> [GitHub の README の見出しに emoji を利用して見栄えが良く・・・なるといいですね](http://qiita.com/tbpgr/items/e748c24b87c28031d715)
Swiftで簡単にローディング画面を表示する


iPhoneアプリの開発をしていて、APIの呼び出しや何か重い処理を行う際に、ローディング画面を表示したい！というケースがあると思います。

有名どころではSVProgressHUDというライブラリを利用すると良いですが、ライブラリ自体はObjective-Cで書かれているため、Swiftで書かれたViewControllerで利用する場合は一工夫必要です。

このエントリでは、SwiftでSVProgressHUDを導入してローディング画面を表示するための方法をまとめたいと思います。

#### プロジェクトにSVProgressHUDを導入する

SVProgressHUDはGithubにリポジトリがあります。
[TransitApp/SVProgressHUD - Github](https://github.com/TransitApp/SVProgressHUD)

README.mdに書いてあるとおりCocoapods経由で追加するか、cloneして必要なファイルをリポジトリ内に配置して導入してください。

この時注意すべきなのはSVProgressHUDはObjective-Cで書かれているため、Swiftから呼び出す際はBridging-headerファイルを設定し、ヘッダーをincludeしておく必要があることです。

Objective-CのソースをXcodeに新たに追加した場合、自動的に生成ダイアログが表示されるはずです。
うまくいかない場合はプロジェクトのターゲットの、Building Settings->Swift Compiler->Code Generation->Objective-C Bridging Headerで任意のヘッダファイルを指定してください。

指定したBridging Header fileに`SVProgressHUD.h`のインポートを記述します。

```
#import "SVProgressHUD.h"
```

これでSwiftからSVProgressHUDを呼び出す準備が出来ました。

#### ViewControllerで呼び出す

##### 便利関数の用意

```
    func dispatch_async_main(block: () -> ()) {
        dispatch_async(dispatch_get_main_queue(), block)
    }
    
    func dispatch_async_global(block: () -> ()) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
    }
```

GCD(Grand Central Dispatch)と呼ばれるバックグラウンド処理を行うため、このような便利関数を用意しておきます。

こちらの関数はtakabosoftさんのQiitaの記事から引用させていただきました。
[SwiftでGCD(Grand Central Dispatch)を呼びやすくしてみる](http://qiita.com/takabosoft/items/adef75dfa421837e996c)


##### 処理の間に便利関数を挟む

時間のかかる処理の間に先ほどの便利関数を挟んでローディング画面の表示のハンドリングを行います。

```
        SVProgressHUD.showWithStatus("読み込み中")
        dispatch_async_global {
            // 何か時間のかかる処理(APIの呼び出しなど)
            self.dispatch_async_main {
                if (self.isSuccess == true) { // 呼び出し結果の確認
                    SVProgressHUD.showSuccessWithStatus("成功!")
                    // 成功時の処理を行う(APIのレスポンスを利用して描画処理など)
                } else {
                    SVProgressHUD.showErrorWithStatus("失敗!")
                    // エラーハンドリング
                }
            }
        }
```

これだけで簡単にローディング表示を行うことが出来ます。

#### SVProgressHUDのメソッド例

最後に、すぐ使えるおすすめのメソッドを数例紹介して終わりたいと思います。

###### ローディング中

 * 単にローディングを表示したい場合

```
SVProgressHUD.show()
```

* ローディングにメッセージを添えて表示したい場合

```
SVProgressHUD.showWithStatus("読み込み中")
```

###### ローディング完了

* 単にローディングを消したい場合

```
SVProgressHUD.dismiss()
```

* ローディング中の処理が成功した旨を表示したい場合

```
SVProgressHUD.showSuccessWithStatus("成功!")
```

チェックマーク（✔）と、引数に渡した文字列が表示されてローディングが消えます。

* ローディング中の処理が失敗した旨を表示したい場合

```
SVProgressHUD.showErrorWithStatus("失敗!")
```
バツマーク(✗)と、引数に渡した文字列が表示されてローディングが消えます。
「ハイパフォーマンスWebサイト」の目次の写経

地歩を固めるため「ハイパフォーマンスWebサイト」の目次に記載されている「ルール」を写経してみる。
情報源は、http://www.oreilly.co.jp/books/9784873113616/

1. HTTPリクエストを減らす
2. CDNを使う
3. Expiresヘッダを設定する
4. コンポーネントをgzipする
5. スタイルシートは先頭に置く
6. スクリプトは最後に置く
7. CSS expression の使用を控える
8. JavaScript と CSS は外部ファイル化する
9. DNSルックアップを減らす
10. JavaScript を縮小化する
11. リダイレクトを避ける
12. スクリプトを重複させない
13. ETagの設定を変更する（ETagは使い込むか削除する）
14. Ajaxをキャッシュ可能にする
esa.io で、 Markdown を使ってスライドショーを作成し、内部公開する #esa_io

# :baby_chick: esa.io で、 Markdown を使ってスライドショーを作成し、内部公開する #esa_io
## <i class="fa fa-cubes" style="font-size:1em;"></i> 概要
:baby_chick: esa.io で超絶簡単にスライドショーを作成して、内部公開します

## <i class="fa fa-video-camera" style="font-size:1em;"></i> esa.io のスライドショーって？
esa.io では、作成した記事をそのままスライドショーとして利用できます。
つまり、 esa.io で Markdown の記事を書くだけでスライドショーを開発チーム内に公開できるのです。
実装の内部は、 reveal.js を利用しているそうです。

<blockquote class="twitter-tweet" lang="ja"><p><a href="https://twitter.com/tbpgr">@tbpgr</a> ｾﾔﾃﾞ</p>&mdash; esa_io (@esa_io) <a href="https://twitter.com/esa_io/status/545234262840995841">2014, 12月 17</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

reveal.js は Markdown でスライドショーショーを作成、公開するための
小さなフレームワークです。
リポジトリはこちら。 <i class="fa fa-github-square" style="font-size:1em;"></i> [reveal.js](https://github.com/hakimel/reveal.js/)

reveal.js に関する設定など幾つかのフィーチャーについて、私のエントリでもまとめてありますので、
気になる方はこちらをどうぞ。

* <i class="fa fa-external-link" style="font-size:1em;"></i> [tbpgr | reveal.js 関連記事一覧](http://qiita.com/tbpgr/items/dfe984e65323371fb9f0)

参考までに私が reveal.js で作成したスライドショーを下記に貼り付けておきます。
Qiita のエントリ数やストック数、フォロー数に応じて戦闘力を返却するジョークツールの紹介スライドです。( RubyGem )

* <i class="fa fa-video-camera" style="font-size:1em;"></i> [Qiita Scouter 技術情報のアウトプット戦闘力計測器](http://tbpgr.github.io/qiita_scouter_slide/#/)

esa.io も内部で reveal.js を利用しているということは、これと同等のことができるということです。

## <i class="fa fa-flask" style="font-size:1em;"></i> esa.io のスライドショーを試してみる
### <i class="fa fa-plus-square" style="font-size:1em;"></i> スライドショー向けの記事を作成
Markdown の記事を作成します。
各見出しがスライド1ページに割り当てられます。

* 記事タイトル

~~~
:baby_chick:esa.io で超絶簡単にスライドショーを作成
~~~

* 記事内容

```
## 目次
* :baby_chick:esa.io のスライドショーって？
* :baby_chick:esa.io のスライド作成方法
* :baby_chick:esa.io のスライドサンプル

## esa.io のスライドショーって？
:baby_chick:esa.io では、Markdown で作成した記事を  
そのままスライドショーとして利用できます。  

## esa.io のスライドショー作成方法
* Markdown で記事を作成する
* これだけ！

※内部では reveal.js を使っています

## esa.io のスライドショーサンプル
* esa.io の how to use の「チームメンバー追加・管理」をスライドショーでみてみる
* :link:[チームメンバー追加・管理](https://docs.esa.io/posts/13/slides#/)

※この記事はスライドショー向けではないので、見栄えは気にしない

## まとめ
* :baby_chick:esa.io ならスライドショー作成も楽々ですね
```

### <i class="fa fa-play-circle" style="font-size:1em;"></i> スライドショーの再生アイコンでスライドスタート
※アニメーションGIFの容量の都合上、画面を小さくしてます

![esa_slide.gif](https://qiita-image-store.s3.amazonaws.com/0/43480/444b5981-d126-3756-0fd0-334cb7646cfc.gif)

## <i class="fa fa-eye" style="font-size:1em;"></i> 今後への期待
内部的に、 reveal.js を利用している、とのことなので
reveal.js が提供しているテンプレートやスライド効果種類なども、
将来的にカスタマイズ可能になるのではないか、と予想しています。
（あまり欲張らずにシンプルな機能のまま、という選択肢もありえますが）

## <i class="fa fa-recycle" style="font-size:1em;"></i> 関連
* <i class="fa fa-external-link" style="font-size:1em;"></i> [tbpgr | reveal.js 関連記事一覧](http://qiita.com/tbpgr/items/dfe984e65323371fb9f0)