パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

Amebaでブログを始めよう!

こんにちは。パーク社員の千代です。

 

先日、プログラミング言語Rubyの25周年記念イベント「Ruby25」に参加してきました!!

http://25.ruby.or.jp/

 

パークは本イベントのSilverスポンサーとして応援していたので、今回はスポンサー枠での参加でした。

この記事では各セッションの内容・感想をざっくりとご紹介したいと思います。

 

 

特別講演 「Rubyの1/4世紀」

講演資料

高橋征義さんから、Rubyのこれまでの歴史について。

Rubyの25年間を5年毎に「誕生→認知→転換→発展→普及」のフェーズに分けて解説。

特に「転換」にあたる2003年~2007年の間にRuby on RailsがリリースされたことはRubyにとって重要で、Railsの普及、発展とともにRubyのエコシステムも大きく発展したのでした。

例えば2005年頃のRubyにはパッケージ管理ツールとして標準のモノが無かった所、RailsがRubyGemsを採用したため、結果としてRubyGemsが公式パッケージ的な立場を獲得した事などが挙げられてました。

 

基調講演 「Ruby after 25 years」

講演資料

まつもと ゆきひろさんの基調講演。Rubyのこれまでと未来について。

2020年リリースを目標にしているRuby3は「高速・分散・解析」を大きな機能として開発中です。

それぞれMJit(Jitコンパイラ)、Guild(マルチコア処理)、Steep(静的型推論)で実現する予定。

Ruby3は過去のRuby1.8からRuby1.9へ移行した時のような巨大な変更・ギャップを避け、現在のRubyからの「連続した変化」としてのリリースになるとのことでした。

Rubyの今後25年については予測が難しいと前置きしたうえで、

・よりインタラクティブなプログラミング環境の実現(アイデアとして、AIペアプロ、対話的なコンパイラなど)

・非均質な計算環境(例として、GPGPU、FPGAなど)への対応

といった変化の可能性があるとお話しされてました。

しかしながら今後も「人間(プログラマ)のためのRuby」というRubyの本質は変えずに開発されるそうです。

 

ちなみにこの日の午後、講演内で言及されたMJitを実装したRuby2.6.0-preview1がリリースされました。コミッターの皆さんありがとうございます!

 

 

ここからは「Rubyの今」というテーマで4つのセッションがありました。

 

「Ruby on Ruby on Rails」

講演資料

松田明さんから、Ruby on Railsについて。

Ruby on Railsの登場によってRubyが大きく発展したことはもちろん、Rails以降のRuby以外の言語で作られたWebフレームワークはRailsライクなものが多数あることから、RailsがWebに対しても新しい価値を提供してきたことがわかります。

Railsは常に継続して開発され、前進しているので、松田さん曰く「Webそのものが廃れない限りRailsも使われ続けると予想できる」とのことでした。

Railsは現在Rails6を開発中だそうなので、楽しみにしたいと思います。

 

「RubyとInfrastructure as Code、そして大規模インフラ」

講演資料

近藤宇智朗さんから、Infrastructure as CodeにおけるRubyについて。

「Infrastructure as Code(サーバインフラ管理のコード化)」の分野におけるRubyの強みはDSL(ドメイン固有言語 : 特定のタスク向けに作られた言語)を書くのに向いていることで、サーバの構成管理をDSLで記述できることで、インフラエンジニアの生産性に貢献しているとのこと(Chef、Vagrantなど)。

近年におけるWebサービス運用の大きな潮流として「マイクロサービス、コンテナ化、サーバレス」があり、現状これらの分野ではRubyで書かれたプロダクトが少ない。

しかしながらmod_ruby(Webサーバ)やHaconiwa(コンテナランタイム)などミドルウェアにmrubyを組み込んだものが登場してきており、将来的にmrubyを使用して新しいマイクロサービス/コンテナオーケストレーションを実現できる可能性について言及されてました。

 

「mruby、今IoT、組込界隈でこう使われています、最新事例紹介!」

講演資料

石井宏昌さんから、mrubyの今について。

mrubyとはRubyと同じように記述できる軽量言語で、200KBのRAMの環境があれば動作します。

またRubyと同様VM上で動作し、組み込み用の大抵のOSのに対応しているそう。

近年はIoTプロダクトに多数採用されていて、いくつか例が紹介されていましたが、その中では「車載アルコール検知器」が個人的に気になりました。

mrubyの今後の計画として、Web上のmrubyに関する情報不足の解消、Ruby2.0にキャッチアップ、グローバルカンファレンスの企画などに取り組んでいくとのことでした。

 

「Data Processing and Ruby in the World」

講演資料

田籠聡さんから、データ処理とRubyについて。

データ処理には「COLLECT(収集)→SUMMARIZE(集計)→ANALYZE(解析)→VISUALIZE(表示)」の4フェーズがあり、その内COLLECT(収集)の分野ではRubyで作られた強力なツールがあります(fluentd→Ruby、Logstash→JRuby)。

またAI・機械学習用のソフトウェアをRubyで実装する、現在進行中のプロジェクトもいくつか紹介されました(sonets/cumoなど)。

この分野でRubyを使うためのエコシステムが構築されつつあり、より多くの人がこの動きに参加して発展していくことが大事という話もあり、

僕も注目していきたいと思いました。

 

「Matz&Miyagawa 未来を語る特別対談」

最後にまつもとさんと宮川達彦さんの「Rubyの未来」についての対談。

現在のRubyは成熟した言語になっており、互換性のないバージョンアップによるコミュニティの分断を避けるため、原則として非互換な変更はしない方針だそうです。

先のまつもとさんの講演で言及されたRuby3、Mjit、Guild、Steepについての話もありました。

この日リリースされた最新プレビュー版に実装されているMjitは高速化に寄与する反面、立ち上げのパフォーマンスが悪くなる懸念があるため、デフォルトでONにするかしないかを今後も検討していくとのことでした。

まつもとさんの後継者問題にも触れ、機械学習でまつもとさんの言動を学習したbotを作るというアイデアがあるそうです(笑)。

25年も開発が続くと色々な課題があるんですね。

 

【感想】

今回初めてRubyコミュニティのカンファレンスに参加しましたが、非常に充実した内容でとても楽しかったです。

Anniversaryイベントのためなのか、スポンサー企業ブースの展示も皆さんのRuby愛が感じられるものになっていました(今までに出版されたRuby本の本棚とか笑)。

僕がRubyでプログラムを書き始めたのはここ数年のことで、勉強を始めたころ(当時Ver 2.1だったと思います)から既に成熟したRubyの恩恵を受けてきた身としては、これまでのRubyの発展に携わってこられたコミッター・エンジニアの方々に感謝の気持ちしかありません。

今後自分もスキルアップして、Rubyの発展に貢献できるよう頑張りたいと思うようになった一日でした。

 

Ruby 25周年、おめでとうございます!

 

 

 

 

 

ドーモ、onoGakkyです。

今回はWindowsのCUI環境/シェル編と言った感じです。
私が普段Windowsで使っているシェル[Nyagos]を紹介します。

Nyagos

Github zetamatta/nyagos

Go言語で書かれたLuaで拡張できるシェル

特徴

  • UNIX風
  • Luaで拡張できる
  • Unicodeサポート

UNIX風

  • UNIX系の幾つかのコマンドが使える
  • ヒストリが使える
    • ![ヒストリ番号]で再実行など
  • エイリアスを設定できる
  • ファイル名/コマンド名保管
  • パイプが使える
    • $ pwd | clipとすればカレントディレクトリのパスをクリップボードにコピーできる

Luaで拡張

  • LuaでBashの.bashrcや、スクリプトが記述できる

.nyagos

起動時の設定ファイル


-- This is a sample .nyagos written with Lua. 
-- Edit and put it on %USERPROFILE%, %HOME% or the same folder with nyagos.exe 
 
-- Simple Prompt for CMD.EXE 
nyagos.env.prompt='$L'.. nyagos.getenv('COMPUTERNAME'.. ':$P$G$_$$$s'
 
-- Coloring Prompt for NYAGOS.exe 
nyagos.prompt = function(this)
    local wd = nyagos.getwd()
    local env = nyagos.env
    local home = env.home or env.userprofile
    local home_len = home:len()
    if wd:sub(1,home_len) == home then
        wd = "~" .. wd:sub(home_len+1)
    end
    local title = wd .. " - NYAGOS"
    if nyagos.elevated() then
        return nyagos.default_prompt('$e[40;31;1m'..this..'$e[37;1m',title)
    else
        return nyagos.default_prompt('$e[40;36;1m'..this..'$e[37;1m',title)
    end
end

初期状態で上の記述がされています。
プロンプトにこだわりがある人はここをいじる。

エイリアス


alias {
    clear = "cls",
    ll = "ls -la $*",
    rm = "del $*",
    mv = "move $*",
    cp = "copy $*",
 
    -- Bash on Ubuntu on Windowsの起動(System32では起動できなかったので注意) 
    bash = [["C:\Windows\Sysnative\bash.exe" $*]],
 
    vi = [["(Vimのパス)\vim.exe" $*]],
    vim = "vi $*",
 
    -- TeraTerm起動 (Unixのsshコマンドと同じ使い方で起動できる) 
    ssh = [["(Teratermのパス)\ttermpro.exe" $* &]],
 
    -- シャットダウン/再起動 
    reboot = [["C:\Windows\System32\shutdown.exe" /r /t 0]],
    shutdown = [["C:\Windows\System32\shutdown.exe" /s /t 0]],
 
    -- ブラウザ起動 
    chrome = [["C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" $* &]],
 
    -- エクスプローラ起動(引数に指定したパスで起動) 
    exp = function(args)
      return "explorer " .. args[1]:gsub("/""\\")
    end,
}
  • alias関数にエイリアス上記のようなテーブルを与えると設定できる
  • Luaはテーブル内に関数も記述できるので、簡単なコマンドならエイリアス内に直接書ける
  • rm/mv/cpはDOSコマンドのため、UNIXっぽく使うにはもう少し改良が必要
インタプリタ名の追加

さらに、スクリプトファイルの拡張子とインタプリタを紐付けてファイル名のみの入力で実行できるよう設定ができます。



suffix.拡張子 = "インタプリタ名"
suffix.py = "python"
  • 最初から以下のものは設定済みのようです
    • .lua
    • .js
    • .rb
    • .py
    • .pl
    • .vbs
    • .ps1
    • .awk
その他

他にも機能があるので、readmegithubのWikiのページを参照
また、Luaのメタテーブルなどを駆使すれば大体のことができてしまうので、 自分の思いのままに拡張しましょう。

色覚バリアフリーについて③

 

緊急性を伝えるために利用される、赤地に黒文字や、黒地に赤文字は、色覚多様性の方には

ほぼ、黒に見えてしまう方も多いそうです。

以下の改善のようにちょっとした対応で、ここまで見やすきなるそうです。

一般視覚者からみてもずいぶんと見やすく感じます。

 

そのほかには、以下のような事例があげられています。

・名刺の背景の色と文字色が似ているために読みずらい。

 →同系色をつかわない

・レーザーポインターなどは、赤が多いため見えずらいそうです。

 →青や緑のレーザーポインターが発売されているそうです。

・電話などのボタンで、薄い緑と薄いオレンジなどは判別しにくい。

 ON/OFFの判定に薄いオレンジ点灯でしらせるものは、判別しにくい

 →濃い色を使う、点滅等に変更する

 

色のシミュレータも案内されています。
・PC・スマートフォン用色覚シミュレータ
 http://www2.cudo.jp/wp/?page_id=92

 

カラーユニバーサルデザイン推奨配色セット
 http://www2.cudo.jp/wp/?page_id=1565
 

 

 

 

色覚多様性の方でも認識しやすい3つのポイント

([カラーユニバーサルデザイン機構]様のガイドブック)

 

①できるだけ多くの人に見分けやすい配色を選ぶ。

②色を見分けにくい人にも情報が伝わるようにする。

③色の名前を用いたコミュニケーションを可能にする。

 

①②について記載いたします。

開発だけでは、ドキュメント作成にも利用できるのではないかと思います。

 

①できるだけ多くの人に見分けやすい配色を選ぶ。

 

 1.色を変える 

   色を組み合わせるときは、彩度は「高い色」と「低い色」の組み合わせ、明度は「明るい色」と「暗い色」 を組み合わせると見分けやすくする。

   (彩度の低い色(パステル調)同士を組み合わせると、色覚多様性の方は色の違いがわからなくなります)

 

 

 2.色の濃淡・明暗の差(コントラスト)をつける。

   背景の色と文字の色に明暗の差をつける。

 

 

 

②色を見分けにくい人にも情報が伝わるようにする。

 

 1.形を変える

   形を変えたりマークを併用する。表示位置をかえる。

 

   

 

 2.ハッチング(模様)をつける。

   地図やグラフなど、塗りつぶす面積が広い場合は、斜線やドットなどのハッチングをつけると、色の 違いが見分けられない場合でも、情報が伝わりやすくなりる。※ハッチングをつけた場所は目立たせる 効果があるため、使い方には注意が必要。

   折れ線グラフ等の場合は、マーカーを変えたり、線種を変える。

 

  

 

 3.文字や線を太くする。

   太い線 など面積が大きいほど色を感じやすく、色の違いがわかりやすくなりる。

 

   

 

 

 

 

「色覚バリアフリー」とは、色覚多様性の方々にも分かりやすい表示にしようという取り組みとなります。

鉄道、病院などの公共機関にかなり浸透してきているそうです。

 

以下、一般色覚者とP型の型の見え方の差異です。

シミュレーション結果の通り、色覚多様性の方々の認識できない表記は意味をなさないのです。

Webデザイン、アプリケーション開発の上で考えていかなくてはならないのではないでしょうか。

 

  

  [カラーユニバーサルデザイン機構]様のガイドブックより

 

 

色覚多様性について
人の場合は一般に、赤・緑・青の3色を感じる3種類の細胞があり、色を見分けている。
遺伝子のタイプによってどれかの色を感じる細胞の働きが低い方がいる。
赤色の場合を「P型」、緑色の場合を「D型」、青色の場合を「T型」と呼ぶ。
P型とD型を中心に国内に約300万人いるとみられ、特に男性では20人に1人の割合と高い。
かつては「色覚異常」や「色覚障害」などの用語が使われていたが、誤解や偏見につながる恐れがあり、
日本遺伝学会が2017年に見直し「色覚多様性」に改訂した。