右から左に書くコード？？～アラビア語プログラミング言語「قلب」「Qalb」について～

# はじめに

2016年4月に新卒で入社し、プログラミング歴は約９ヶ月です。

プログラミングは英語だけではなく、世界中の言語で生み出されているようですがその中でも唯一、右から左に書かれるアラビア語のプログラミング言語「قلب」「Qalb」について纏めてみました。

![2016-12-13_22h56_14.png](https://qiita-image-store.s3.amazonaws.com/0/147391/30793e3f-b2e9-a014-2f60-1794c407a96c.png)

figure#1：アラビア語で右から「Qalb:programming language」

# 環境
* Windows 7 Professional
* Ubuntu 16.04 (Windowsからリモートで接続)
* Ruby 2.3.1
* npm 3.5.2
* VIM 7.4（任意）

# 事前準備

* アラビア語入力の設定（Windows）
* アラビア語入力の設定（Ubuntu）←任意
* アラビア語入力の設定（vim）←任意

# Agenda

## アラビア語入力設定(Windows)
入力設定はできても、日本のパソコンであればキーボードにアラビア文字はないので↓ご参考に。
    
  ![key.gif](https://qiita-image-store.s3.amazonaws.com/0/147391/ed571c1a-afed-ec72-b0f3-b0ba73ead9aa.gif)
  
figure#2：アラビア文字のキーボード
  
2. アラビア語入力の設定(Linux)←任意
3. アラビア語入力の設定(vim)←任意

## アラビア語プログラミング言語「قلب」「Qalb」について

Qalbはコンピューターサイエンティストのラムジー・ナセル（Ramsey Nasser）が2012年に生み出したアラビア語のプログラミング言語。
https://github.com/nasser/--- よりクローンは可能だが、4年ほど更新されておらず、README.mdにも詳しい情報は記載されていない。

# 設定

* Gitクローン

```bash:console
$ git clone https://github.com/nasser/---.git　qalb
```

ディレクトリ名が「---」だと少々分かりにくいので、クローンと同時にプログラミング言語名の「qalb」へとディレクトリ名を変更しています。

* ~/qalbをワーキングディレクトリにする

```bash:console
$ cd ~/qalb
```

* npmのインストール

```bash:console
$ sudo apt install npm
```

* npmのバージョン確認

```bash:console
$ npm -v
3.5.2
```

* npm install コマンドでpackage.jsonのdependenciesとして記載されているモジュールがインストールされる 

```bash:console
$ npm install
---@0.0.0 ~/qalb
`-- pegjs@0.7.0
```

* bundleをインストールする

```bash:console
$ bundle install
Fetching gem metadata from http://rubygems.org/.........
Fetching version metadata from http://rubygems.org/.
Installing i18n 0.6.1
Installing multi_json 1.5.0
Installing builder 3.0.4
Installing daemons 1.1.9
Installing eventmachine 1.0.0 with native extensions
Installing rack 1.4.1
Installing tilt 1.3.3
Using bundler 1.13.6
Installing activesupport 3.2.9
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

[省略]

An error occurred while installing eventmachine (1.0.0), and Bundler cannot continue.
Make sure that `gem install eventmachine -v '1.0.0'` succeeds before bundling.
```

↑既存のGemfile.lockに記載されているgemのバージョンが古いため失敗

* 既存のGemfile.lockの削除

```bash:console
$ rm Gemfile.lock 
```

* bundle install再トライ

```
$ bundle install
Fetching gem metadata from http://rubygems.org/..........
Fetching version metadata from http://rubygems.org/.
Resolving dependencies...
Using concurrent-ruby 1.0.2
Using i18n 0.7.0
Using minitest 5.10.1
Using thread_safe 0.3.5
Installing bson 1.12.5
Using daemons 1.2.4
Using eventmachine 1.2.1
Installing rack 1.6.5
Using tilt 2.0.5
Using bundler 1.13.6
Using tzinfo 1.2.2
Installing bson_ext 1.12.5 with native extensions
Installing mongo 1.12.5
Installing rack-protection 1.5.3
Installing thin 1.7.0 with native extensions
Using activesupport 5.0.0.1
Installing plucky 0.6.6
Installing sinatra 1.4.7
Installing activemodel 5.0.0.1
Installing mongo_mapper 0.13.1
Bundle complete! 4 Gemfile dependencies, 20 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
```
↑bundle install 成功し、Gemfile.lockがアップデートされます。

* gem installでeventmachineをインストールする

```bash:console
$ sudo gem install eventmachine
Fetching: eventmachine-1.2.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed eventmachine-1.2.1
Parsing documentation for eventmachine-1.2.1
Installing ri documentation for eventmachine-1.2.1
Done installing documentation for eventmachine after 3 seconds
1 gem installed
```

* foremanのインストール（※今回はProcfileのtransitionをherokuではなく、foremanで試してみる）

```bash:console
$ sudo gem install foreman 
Fetching: thor-0.19.4.gem (100%)
Successfully installed thor-0.19.4
Fetching: foreman-0.82.0.gem (100%)
Successfully installed foreman-0.82.0
Parsing documentation for thor-0.19.4
Installing ri documentation for thor-0.19.4
Parsing documentation for foreman-0.82.0
Installing ri documentation for foreman-0.82.0
Done installing documentation for thor, foreman after 0 seconds
2 gems installed
```

* foremanをチェックする

```bash:console
$ foreman check
```

* Option1:foremanコマンドでポート番号を指定してProcfileを実行する
  Option2:またはProcfileに記載されているコマンドを実行する

```bash:console
$ foreman start -p 3000
```

* Web上ホスト名とポート番号を指定してアクセス（クライアントはChromeを使用しています）

```
http://localhost:3000
```
↓下記のような画面が出力されれば成功

* 実行結果

![Screen Shot 2016-12-16 at 4.47.27.png](https://qiita-image-store.s3.amazonaws.com/0/147391/582c73ce-dde8-ed89-4f50-d64251c6db2b.png "Screen Shot 2016-12-16 at 4.47.27.png")

figure#3

# 参考資料

https://github.com/nasser/---