情報と地域 オープンソースと地域振興 ·...

Preview:

Citation preview

情報と地域-オープンソースと地域振興-

オープンソースとRuby

nodat@soc.shimane-u.ac.jp

tetsuo.noda.18

@tetsuo_noda

tetsuo-noda-873533b

本日のAgenda

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• Rubyによるマーケット拡大

• Ruby・OSSと地域産業振興

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• Rubyによるマーケット拡大

• Ruby・OSSと地域産業振興

プログラミング言語Ruby

• 1993年 まつもとゆきひろ氏によって開発

• 1995年 fj上で公開

Ruby was born in Shimane?

• 簡潔な文法構造で、効率のよい作業を実現

• 他言語に比べて高い開発生産性

Javaの10倍の生産性?

Ruby wan born in Hamamatsu and

opened from Nagoya.

プログラミング言語Ruby

• 2004年 Webアプリケーション開発フレームワーク Ruby on Railsの開発と公開によってビジネス分野でも注目を集める

Twitter

食べログ

プログラミング言語Ruby

• 2006年 Ruby City MATSUE Project

• 2008年 島根県IT産業振興• 2010年 ちゅうごく地域Rubyフォーラム• 2011年 JIS規格制定• 2012年 ISO取得

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• クラウド・ソーシャル革命とRuby

• Rubyによるマーケット拡大

• Rubyと地域産業振興と課題

Rubyの適用分野の広がり

• テキスト処理

CSVファイル、XMLファイル・・・

• システム管理

システム管理ツールの自動化

ネットワーク監視システム

• Webプログラミング

• スマートフォンアプリ

Rubyの適用分野の広がり

• 人工知能

• ゲノム解析(BioRuby)

• 気象情報処理

• NASA

スペースシャトル・チャレンジャー爆発に関するデータ分析

• NOAA(National Oceanic and Atmospheric Administration)

Rubyの適用分野の広がり

• Ruby on RailsとWebプログラミング

• オープンガバメント・オープンデータの「見える化」

←コミュニティ(草の根)からの取組

Where Does My Money Go?

Twitter

食べログ

Powerd by Ruby

Rubyの適用分野の広がり

• ゲーム

Ruby/SDL(Rubyでゲームを作るライブラリ)

• HPC(高性能計算機)

Rubyの応用分野の広がり(5)

• 組み込み(mruby) → IoT

• smalruby

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• Rubyによるマーケット拡大

• Rubyと地域産業振興

RubyとProductivity(生産性)

• Javaの10倍の生産性?

class Sample{private static int fib(int n){

if (n<2){return n;

}else {

fib (n-2) + fib (n-1);}

}public static void main (String[] argv) {

System.out.println (“fib (6) =“+fib (6));}

}

Javaによるフィボナッチ数※計算プログラム Rubyによるフィボナッチ数計算プログラム

def fib (n)if n<2

nelse

fib (n-2) +fib(n-1)end

endprint “fib(6)=“, fib(6), “ n”

出典:まつもとゆきひろコードの世界

※どの項もその前の2つの項の和となっている数列。0,1,1,2,3,5,8,13,21,34,・・・

RubyとProductivity(生産性)

BUT Rubyはインタプリタdef fib (n)

if n<2n

elsefib (n-2) +fib(n-1)

endendprint “fib(6)=“, fib(6), “ n”

1行翻訳 1行実行def fib(n)) 000001d0 7c 08 02 06 bf ・・

ソースプログラム

実行結果

RubyとProductivity(生産性)• ムーアの法則

• ハードウェアの処理能力の増大

→稀少性の消滅

RubyとProductivity(生産性)

• 稀少性は人間=プログラマー

RubyとProductivity(生産性)

モノの経済=アトム経済

情報通信の経済=ビット経済

「デジタル時代のユニークな特徴は、ひとたび何かがソフトウェアになると、それがかならず無料になることだ。」(クリス・アンダーソン『フリー』より)

モノ(+情報通信)の経済

ロングテール化

製造業は、過去100 年の間にひとつだけ変わらな

いことがある。ウェブのようにオープンではないことだ。従来の製造業は大量生産で、技術と設備とコストが必要になるため、大企業と熟練工にほぼ独占されてきた。それが今、変わりはじめている。もの作りがデジタルになったからだ。21 世紀

の製造業は、アイデアとラップトップさえあれば誰もが自宅で始められる。

• 21 世紀のメイカーズ(モノを作る人々)こそが、新しい産業革命の担い手なのだ。

RubyとProductivity(生産性)

伝統的な新古典派経済学理論

収穫逓減の法則

=限界費用増加の法則

ニュー・エコノミー論

収穫逓増の法則

=限界費用減少の法則

限界費用ゼロ・・・?

RubyとProductivity(生産性)

• RubyのProductivity

簡潔な文法構造で、効率のよい作業

def fib (n)if n<2

nelse

fib (n-2) +fib(n-1)end

endprint “fib(6)=“, fib(6), “ n”

RubyとProductivity(生産性)

• 開発感覚の変化

詳細な仕様からアジャイル(Agile)開発へ

• ARC(Agile、Ruby on Rails、Cloud)

Rubyの生産性と課題

• Rubyは言語の使いやすさ、コードの読みやすさ(可読性)、保守性(開発後のメンテナンス性)が特に優れている!

=すなわち、開発が効率化できる!

• 開発周辺環境面では、サポート体制、ライブラリ充実度が不足

=すなわち、サポート体制、ライブラリーの拡充が求められている!

Rubyの生産性と課題

• Rubyの他の言語と比較した生産性を計測

• 製造時間だけみればRubyがJavaの数倍の生産性があること(単純比較すれば4.5倍)が実証

• Rubyで初の製造で、5年経験したPerlとほぼ同じソースコード量で開発

• コーディング初級者向けの情報が少ない

• 共同作業や継続性のある作業に向かない点などの指摘

Rubyの生産性と課題• 他言語との比較使用言語 Java Ruby Perl

行数

(コメント除く)

177行 46行 42行

工数

(製造+テストの時間)

製造:8時間

テスト:1時間

製造+テスト:2時間 製造+テスト:0.75時間

読み込み

モジュール数

(import数)

19

(require数)

2

(use数)

4

動作条件 Servletコンテナ必須 一般的なHttpサーバ 一般的なHttpサーバ

動作確認

サーバ

Tomcat Apache Anhttp

(他CGI動作可能サーバ)

Apache Anhttp

(他CGI動作可能サーバ)

使用言語

経験年数

7年 0年

(※今回の製造が初使用)

5年

「ちゅうごく地域Rubyビジネス研究会報告」より

Rubyの生産性と課題

• 生産性の比較

使用言語 Java Ruby Perl

行数(コメント除く) 177行 46行 42行

工数(製造+テストの時間)

製造:8時間

テスト:1時間

製造+テスト:2時間 製造+テスト:0.75時間

Ruby側がコード量、製造時間共に大きく上回る結果となった。軽量言語である為容易に製造でき、テスト駆動開発がスムーズに可能。

Javaと比較

Perlと比較今回、Rubyは初の製造であるにも関わらず、5年経験したPerlとほぼ同量のソースコード量で製造できた。製造時間は倍近くかかっているがコーディングに慣れてしまえばPerl以上の速度での製造も可能。

「ちゅうごく地域Rubyビジネス研究会報告」より

Rubyの生産性と課題Rubyが劣る部分

Javaと比較最近ではRubyの書籍やWEB上のRuby情報も充実してきたが、コーディング初級者向けの情報がJavaに比べて圧倒的に少ない。また、軽量言語特有の「簡単にコーディングできるコード」は一歩間違えると「汚いソース」になりかねない。

Perlと比較

世界に公開されているWEBサイトの多くはPerl,PHPが多くRubyで作成されているサイトはあまり見ない。(実績が少ない)また、Perlの方が歴史も古く,多くのUNIX系OSで標準でインストールされている事が多く,UNIX系OSを利用した業務ではすぐに使える。

※アマゾンでのJavaとRubyの入門書検索結果。Rubyの書籍数の方が圧倒的に少ない。(2009年11月03日検索)

※Perlのモジュール・ライブラリ郡を集めた巨大アーカイブ。

※Ruby,Perl,PHPのindexキーワード検索結果(2009年11月03日検索)

「ちゅうごく地域Rubyビジネス研究会報告」より

「ちゅうごく地域Rubyビジネス研究会報告」より

Rubyの生産性と課題

JavaUser

JavaUser

JavaUser

JavaUser

JavaUser

RubyUser

Ruby技術者・案件不足

※2009年11月03日検索

現在市場では「Java」や「.Net」(主にVB)の案件が主流であり、Rubyと比較した場合圧倒的にJavaや.Net技術者が多い。Ruby技術を導入するには技術者の確保が困難。

上記図はGoogleにて各言語に“案件”というキーワードを付けて検索した結果。圧倒的にJavaが多い事が分かる。現在「rails」を中心に注目を集めているRubyだが,市場にはまだ浸透しきっていない。 「ちゅうごく地域Rubyビジネス研究会報告」より

Ruby:国際標準化

• 2008年 IPA Ruby標準化WG発足

(委員長:中田育男筑波大学名誉教授)

• 2010年4月 JIS原案→日本規格協会

Fast-Track提案(JISC → ISO/IEC JTC-1)

• 2011年3月 RubyのJIS規格(JIS X 3017)制定

→2012年 国際標準化へ

Ruby:国際標準化

• 安定・信頼できる言語仕様

→外部システムとの相互接続

→技術者の育成

→大規模システム開発への投資

→官公庁における調達

IPA プレスリリース資料より

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• Rubyによるマーケット拡大

• Ruby・OSSと地域産業振興

Rubyによるマーケット拡大• Rubyの生産性を活かす

×○

導入案1 ~自社システム構築~製造工数が極度に削減できるというメリットを活用し,社内システム(工数管理システム)等の構築を行いスキルフィードバックと社内事務工数削減を目指す。

導入案2 ~オフショア内需化~Rubyの導入により1システムあたりの製造単価を大幅に削減可能となる為,海外へ丸投げしていた製造工程部分をコミュニケーションが容易な国内製造へとシフト。

「ちゅうごく地域Rubyビジネス研究会報告」より

Rubyによるマーケット拡大• アジャイル、クラウドとの融合(ARC)

• Rubyの開発環境をクラウドで構築

• アプリケーションをクラウドで素早く提供

「ちゅうごく地域Rubyビジネス研究会報告」より

Rubyによるマーケット拡大Rubyは次世代クラウドコンピューティングの言語であり、Herokuは第一級のRuby PaaSだ

Mark Benioff Salesforce CEOSalesforce.com、RubyプラットフォームのベンチャーHeroku

を2億1200万ドルで買収(2010年12月)

• プログラミング言語Ruby

• Rubyの適用分野の広がり

• RubyとProductivity(生産性) 課題と対応

• Rubyによるマーケット拡大

• Ruby・OSSと地域産業振興

Ruby(ルビー)シティプロジェクト

• 2006年7月 Ruby City MATSUE Project

• 情報の交流拠点『松江オープンソースラボ』の開設

• 新たな市場の開拓による地域の産業活性化と地域ブランド創造

しまねOSS協議会の設立

• 2006年9月3日 しまねOSS(オープン・ソース・ソフトウェア)協議会が発足

• 島根県のオープンソースに関わる企業、技術者、研究者、そしてユーザが連携する

RubyシティーとOSS協議会の目的

• 地方自治体のオープンソース活用は日本のIT産業(情報サービス産業)におけるウォーターフォールモデル(下請け構造)を変えうるか?

39

ユーザ

情報サービス産業 (東京)

注文

親会社

一次下請

二次下請

40

ユーザ

情報サービス産業 (東京)

注文

地方の情報サービス産業

41

日本の情報サービス産業の受注先

経済産業省『特定サービス産業実態調査』(2009)より

42

島根県の情報サービス産業の受注先

『島根県の産業と労働』(2006)より

43

ユーザ

情報サービス産業 (東京)

注文

地方の情報サービス産業

地方自治体

注文

44

企業

従来のソフト開発 オープンソース・ソフトウェア

プログラマーなど 企業

コミュニティ販売

公開・無償利用開発・サポート

下請け・孫請け派遣

オープンソースの開発スタイルとビジネス

地方の中小情報サービス企業の

ビジネス参加の可能性!

+技術力

45

ユーザ

情報サービス産業 (東京)

注文

地方の情報サービス産業

地方自治体

注文

46

しまねOSS協議会の活動

• Ruby、Ruby on Railsを中心とした講習会、技術交流会の開催

• OSSを企業・産業振興、雇用拡大、地域振興に結びつけるための研究交流会(オープンソース・サロン)の開催

• 全国、全世界の開発コミュニティとの連携

Ruby勉強会

オープンソースサロン

シリコンバレー視察

Ruby、OSSの活動の広がり(島根県)

• 2008年 島根県 IT産業振興策

島根県ホームページより

Ruby、OSSの活動の広がり(島根県)

島根県 IT産業振興策• 人材育成事業・OSS/Rubyエンジニア育成講座・組み込みエンジニア育成講座・プロジェクトマネージャー育成講座 など

• 実践型OSS開発力強化支援事業・高度エンジニア派遣事業・高度ITエンジニアスキルアップ支援事業

• ソフト産業ビジネス研究会支援事業・専門家などを招聘したビジネス研究会の創設・運営を支援

• 販路拡大支援事業・県内のソフト系企業のソフトウェア製品の販路獲得、高い開発技術による業務獲得を目指し、首都圏で開催されるIT関連展示会への出展を支援

• 県内就職支援事業・県内外の情報系の学生などを対象にRuby講座を実施し、県内IT企業への就職につなげる研修を合宿形式で実施

島根県ホームページより

Ruby、OSSの活動の広がり(島根県)

• 島根県のホームページをRubyを使って構築

Ruby、OSSの活動の広がり(島根県)

• 島根県Ruby合宿(2008年~)

Ruby、OSSの活動の広がり(島根大学)

島根大学

• 2007年 Rubyプログラミング講座開設

• 2008年 オープンソースプロジェクト研究スタート

• 2009年 まつもとゆきひろ客員教授

Ruby、OSSの活動の広がり(島根大学)

島根大学Rubyプログラミング講座

Ruby、OSSの活動の広がり(島根大学)

• 島根大学でオープンソース研究の国際シンポジウム開催(2010年11月)

Ruby、OSSの活動の広がり

島根県情報産業協会調査より

島根県産業振興課調査より

Ruby、OSSの活動の広がり

Ruby、OSSの活動の広がり(中国地方)

• 2009年ちゅうごく地域Rubyビジネス活用研究会

Ruby、OSSの活動の広がり(全国)

• 福岡Rubyビジネス拠点推進会議(F-Ruby)

• 三鷹ICT・Ruby人材開発

• 塩尻市がRuby製図書館システムを導入

• 徳島県がRubyのCMS「Joruri」でサイトを刷新,OSSとして公開へ

Ruby、OSSの活動の広がり(全国)

• 徳島県がRuby、Railsで構築したCMS Joruriでサイトを刷新,OSSとして公開へ

Ruby、OSSの活動の広がり(全国から、松江へ)

オープンソースカンファレンス島根開催(松江テルサ)2008年から毎年開催 全国から約200人のエンジニア、経営者、研究者が松江に集結

Ruby、OSSの活動の広がり(世界から、松江へ)

Ruby World Conference 2015開催(くにびきメッセ)2015 年11月12日、13日開催来場者 12日 512名、13日 386名

Rails Girls の取組• フィンランド発プログラミング女子「レイルズガールズ」の世界的な取組

Linda Liukasさん(左)

Rails Girls Matuse開催第2回 Rails Girls Matsue 2015 年11月13日、14 日開催

Ruby、OSSの活動の広がり(世界から、松江へ)

Ruby World Conference 開催(くにびきメッセ)2009年から毎年開催 世界中から約1000人のエンジニア、経営者、研究者が松江に集結

Smalrubyとプログラミング少年団• 子供向けブロックプログラミング Smalruby

高尾宏治さん 本多展幸さん

Rubyプログラミング少年団http://smalruby.jp/

• Smalrubyを使った親子向けプログラミング教室の開催(毎月1回 公民館などで)

スモウルビープログラミング甲子園開催https://smalruby-koshien.jp/

• Smalrubyで対戦ゲームを中高生がプログラミング

島根大学でのRuby教育Rubyプログラミング教育から活用・応用・実践へ• Rubyとオープンデータの活用

Ruby・OSSによる学内情報・地域情報の可視化

オープンデータを活用したイベント

• Ruby・OSSを活用した学習支援システムの開発

• 特別副専攻「Ruby・OSS履修プログラム」設立(2015年度から)

• RubyとIoTへ

Rubyとオープンデータの活用• Ruby・OSSによる学内情報・地域情報の可視化

自治体や大学等の公共機関では,統計情報や観光,学術情報など様々な情報をオープンデータという形で保有・公開していますが,近年,オープンデータを地域資源として活用し,地域の活性化につなげようとする試みが行われています。Rubyプログラミング言語を用いてオープンデータをWeb上の地図にプロットし,可視化するシステムを開発

データベース

Wi-Fi機器情報

AED設置場所

樹木データ

食べられる植物

ゴミ箱・リサイクルステーション

アプリケーションプログラム

ユーザインターフェース

データモデル

地図描画

データ表示・登録

Ruby on Railsフレームワーク

O/R

マッピング

Webブラウザ

データベース

Wi-Fi機器情報

AED設置場所

樹木データ

食べられる植物

ゴミ箱・リサイクルステーション

アプリケーションプログラム

ユーザインターフェース

データモデル

地図描画

データ表示・登録

Ruby on Railsフレームワーク

O/R

マッピング

Webブラウザ

Rubyとオープンデータの活用• Ruby・OSSによる学内情報・地域情報の可視化

• オープンデータを活用したイベント「松江まちあるきオープンデータソン」で参加型の地図作成ツールのOpenStreetMapとマッ

プ編集ソフトを活用して、学生・市民がまち歩きをしながら集めたデータをマッピング、オープンデータを活用した地域マネジメントの効果を検証する機会となり、またデータ利用したアプリケーションの開発への可能性を示す

特別副専攻「Ruby・OSS履修プログラム」設立へ(2015年度~)

• 実践的なプログラミングの学習と、これを活用するための情報経済・情報産業に関する学習を通じて、実社会の場で活躍することが高度な人材を育成することを目的とする

Recommended