Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

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

2016-12-13_22h56_14.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

figure#2:アラビア文字のキーボード

  1. アラビア語入力の設定(Linux)←任意
  2. アラビア語入力の設定(vim)←任意

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

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

設定

  • Gitクローン
console
$ git clone https://github.com/nasser/---.git qalb

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

  • ~/qalbをワーキングディレクトリにする
console
$ cd ~/qalb
  • npmのインストール
console
$ sudo apt install npm
  • npmのバージョン確認
console
$ npm -v
3.5.2
  • npm install コマンドでpackage.jsonのdependenciesとして記載されているモジュールがインストールされる
console
$ npm install
---@0.0.0 ~/qalb
`-- pegjs@0.7.0
  • bundleをインストールする
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の削除
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をインストールする
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で試してみる)
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をチェックする
console
$ foreman check
  • Option1:foremanコマンドでポート番号を指定してProcfileを実行する Option2:またはProcfileに記載されているコマンドを実行する
console
$ foreman start -p 3000
  • Web上ホスト名とポート番号を指定してアクセス(クライアントはChromeを使用しています)
http://localhost:3000

↓下記のような画面が出力されれば成功

  • 実行結果

Screen Shot 2016-12-16 at 4.47.27.png

figure#3

参考資料

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away