= Rubyと仕事と\n自由なソフトウェア : author 須藤功平 : institution 株式会社クリアコード : content-source Rubyセミナー Online : date 2021-01-22 : allotted-time 40m : start-time 2021-01-20T14:05:00+09:00 : end-time 2021-01-20T14:45:00+09:00 : theme . = 私とRubyと仕事と自由なソフトウェア * 2003年より自由なソフトウェアを開発 * 2004年よりRubyコミッター * 2006年よりクリアコードに勤務 * 2008年よりクリアコード代表取締役 * 2009年よりRubyKaigiにスポンサー\n (('note:2011年までは日本Ruby会議')) = クリアコード * ↓の両立を重視 * 自由なソフトウェアの推進 * 稼ぐ * Rubyの活用方法 * ミドルウェアの柔軟性向上\n (('note:メールフィルター・全文検索エンジン・ログコレクター・…')) * Webアプリはあまり作らない = 想定参加者 業務で\n Rubyを使っている\n プログラマー = 話すこと * 自由なソフトウェア? * 仕事と自由なソフトウェア * Rubyの仕事で自由なソフトウェア * 実現方法の紹介 * 事例紹介 = 話したかった! が!\n まとまらなかった! = まとめる作業 * 関連資料の再確認 * www.gnu.orgの資料 * opensource.orgの資料 * クリアコード・自分の活動の再確認 * 関連資料との考え方の違いはある? * 自分はどう思う?どう感じる? = わからなくなった! * 自分の活動はそれほどでもなかった * 悪くはないと思う * けど、そんなにすごいわけではない * 考えていた構成が微妙な気持ちになった * 自由なソフトウェアをそんなに推進していない = 話すこと 私のもやっとを聞いて\n どう思ったか教えて! = 自由なソフトウェア * ユーザーの * 開発元ではない! * コンピューティングの自由が * 自分がどうコンピューターを使うかを\n コントロールできる * 保証されたソフトウェア (('note:自由ソフトウェアとは?'))\n (('note:(())')) = 自由なソフトウェアの定義 * 目的を問わずプログラムを実行する自由\n (('note:使い方を開発元にコントロールされない')) * プログラムを研究・改造する自由\n (('note:学べる・パッチを書ける。私はこれがすごく欲しい。')) * コピーを再配布する自由 * 改変したバージョンを配布する自由\n (('note:パッチを共有できる。共同開発できる。私はこれもすごく欲しい。')) (('note:最初の2つは各ユーザーがコントロールするため'))\n (('note:最後の2つは複数のユーザーが集団でコントロールするため')) (('note:自由ソフトウェアとは?'))(('note:(())')) = なぜ自由なソフトウェアが重要なのか * ユーザーがコントロールできないと… * 開発元がユーザーをコントロールできる * 開発元が悪用する余地がある # * 例:ユーザーのプライバシーを脅かすかも\n # (('note:個人情報の収集')) * 例:開発元に嫌われたら使えないかも\n (('note:あなたは悪だと私が判断したので使わせません')) (('note:ポジティブな理由:ユーザーがみんなと協力できる')) (('note:自由ソフトウェアはいまやさらに重要だ'))\n (('note:(())')) = なぜ自由なソフトウェアが重要なのか\n(('note:私の場合')) * 重要そうな気がするから… * コンピューターを使い始めた頃\n 自由なソフトウェアのユーザーで助かったから * 自由なソフトウェアがより多い世界のほうが\n 少なくとも自分はうれしそう * 倫理的にそうするべきというのは\n そんな気はするけど説明はできない… # = なぜ自由なソフトウェアが重要なのか\n(('note:私の場合')) # * 「図書館の自由」が重要なのと同じ\n # (('note:(())')) # * 第3 図書館は利用者の秘密を守る\n # (('note:不自由なソフトウェアだとプライバシー侵害から守れない')) # * 第4 図書館はすべての検閲に反対する\n # (('note:不自由なソフトウェアだと開発元が検閲できる')) # * 最近読んだ本:華氏451度(('note:(レイ・ブラッドベリ(1953))')) # * ファイアーマンが消防士ではなく本を燃やす人な\n # 検閲されている世界(('note:(考え方がコントロールされている)')) = なぜ自由なソフトウェアが重要なのか\n(('note:仕事の場合')) * コントロールできないことはリスク * 例:すぐに直さないとクリティカル! * 開発元:半年後に対応する→困る * 自分たちで直す選択肢がある * 素早く学べることは競争力の源泉 * 自由なソフトウェアは学ぶよい材料 = 重要だと思う? * 私はうまく伝えられた経験があまりない… * 不自由だけど便利なソフトウェアは使わないの? * 自由を大事にするって不自由だね…\n (('note:それは不自由じゃなくて不便なんだよ…'))\n (('note:自由で便利なソフトウェアを増やしたいな!')) * 不自由なソフトウェアと比べたときの\n 自由なソフトウェアのメリットは? * そういうんじゃなくて\n 自由が重要だと思うから自由を守りたい\n (('note:たとえ今は実現できていても守らないと失われていくかもしれない')) = メリットを教えてよー * それが「自由なソフトウェア」と\n 「オープンソース」の考え方の違い\n (('note:どちらもだいたい同じソフトウェアを指す')) * 自由なソフトウェア:自由が大事だから守る * オープンソース:自由なソフトウェアの方に\n 実用的なメリットがあるからそうする (('note:なぜ、オープンソースは自由ソフトウェアの的を外すのか'))\n (('note:(())')) (('note:What is "free software" and is it the same as "open source"?'))\n (('note:(())')) = 不自由なソフトウェアとのスタンス # image # src = images/free-software-opensource-nonfree-software.svg # relative-height = 80 (('note:なぜ、オープンソースは自由ソフトウェアの的を外すのか'))\n (('note:(())')) = オープンソースのメリット * 不自由なソフトウェアより\n よいソフトウェアを作れる * ソースコードを共有する自由があるので\n みんなで共同開発できる * ユーザーがソフトウェアを\n コントロールできるので\n ベンダーロックインを避けられる (('note:(())')) = 企業で利用するメリット * 一から作るより速くできることが多い * 問題時に自分たちで調査・修正できる\n * 複数のベンダーに協力依頼できる * 安いことが多い(('note:(無料であることも多い)')) = 企業で開発するメリット * 技術面での対外的なアピールに使える * 人事・案件獲得・ユーザー獲得 * 社内の技術力アップ * 一部をOSSとして切り出す:設計力アップ * 既存のOSSの開発に参加:全体的にアップ\n (('note:社内とは違った開発スタイルから学ぶ')) * 社外の協力を得られることもある\n (('note:新規でOSSを公開する場合は滅多に発生しない')) = オープンソースよさそう? * 「自由が重要」よりもピンとくる? * 結果的に自由なソフトウェアが増えるなら\n オープンソースの説明でいいんじゃない? * そうなのかなぁ…いいのかなぁ… = 私のもやっと(1) * オープンソースのメリットよりも\n 大きな実用的なメリットが\n 不自由なソフトウェアで実現される\n 世界がきたらどうなる? * たとえばクラウドサービスみたいななにか * 不自由なソフトウェアばかりだけど\n 便利な(('note:(気がする?)'))世界 * 学びにくく自分たちで調査修正できない世界… = オープンソースとGitHub * GitHubは不自由なソフトウェア * GitHubはオープンソースを応援している\n (('note:(())')) * 自由なソフトウェアの開発のために\n 不自由なソフトウェアを活用する? * 自由なソフトウェアを重視していると言えるのか = 自由なソフトウェアとサービス * 自由なソフトウェア * 自分のコンピューターで実行するときの話 * 手元にソフトウェアのコピーがあるときの話 * サービス * 手元にソフトウェアのコピーがない * 「自由」・「不自由」と区別する事に意味がない (('note:Network Services Aren't Free or Nonfree; They Raise Other Issues'))\n (('note:(())')) = 自由なソフトウェアとサービス * 自由なソフトウェアは\n 不自由なソフトウェアで実装された\n サービスを使うべきでないのか * 現時点ではなんとも言えない!\n (('note:なんとも言えないのか!')) * ただし、使うべきではないサービスはある * ローカルで実行していた処理を代替するサービス\n (('note:不自由なソフトウェアをローカルで使うことと同じ')) (('note:Network Services Aren't Free or Nonfree; They Raise Other Issues'))\n (('note:(())')) = 自由なソフトウェアと\n衝突しないサービス * ユーザーのコンピューティングではない\nサービス * 情報をやりとりするサービス * 例:Webサービス・リポジトリーサイト * GitHub:リポジトリーサイトの1つ\n (('note:自由なソフトウェアの開発にGitHubを活用することはアリなの!?')) (('note:そのサーバはいったい誰にサーブするのか?'))\n (('note:(())')) = 自由なソフトウェアとGitHub * (('note:自由なソフトウェアの中でも特に'))\n GNUプロジェクトのリポジトリーに適切なサービスを評価 * GitHub:不適格\n 不自由なJavaScriptを使わないといけないから\n (('note:そこかー!')) * gitlab.com:悪くない (('note:GNU Ethical Repository Criteria Evaluations'))\n (('note:(())')) = 私の落としどころ * 基本的にgitlab.comを使おう\n (('note:(())')) * なにか理由があるときはGitHubを使おう * GitHubにあるプロジェクトの開発に参加する * 関連プロジェクトがGitHubを使っている\n (('note:例:ruby/csvとかruby/fiddleとかのdefault gem/bundled gem')) = 私のもやっと(2) * 不自由なソフトウェアを活用する\n 自由なソフトウェアの開発 * 例:CUDAを活用する機械学習ツール * オープンソースならアリ * よりよいソフトウェアを作ることが目的 * 自由なソフトウェアならナシ (('note:なぜ、オープンソースは自由ソフトウェアの的を外すのか'))\n (('note:(())')) = Red Data Tools * Ruby用のデータ処理ツールを提供\n (('note:(())')) * Rubyでデータ処理の仕事をできるように! * Apache Arrowの開発にも参加\n (('note:(())')) * 各種言語で使えるデータ処理の共通基盤を開発 = Apache ArrowとCUDA * 基本的なサポートが入っている * がっつりサポートはRAPIDSという別プロジェクト\n (('note:(())')) * Rubyサポートのために\n NVIDIAのGPUを用意して開発 * Rubyでできることを増やすためだけど\n 不自由なソフトウェアの利用を促進するよなぁ… = 私の落としどころ * もやっとするけどやるかぁ… = 私のもやっと(3) * お客さんへはオープンソースな説明 * 成果をオープンソースにすると\n お客さんにはこんなメリットがありますよ! * 社内・こういう場などでだけ\n 自由なソフトウェアな説明 * 自由なソフトウェアの話をしているだけ\n 悪くないと思うんだけどこのくらいでいいのか… = 自由なソフトウェアで仕事 * 利用して製品開発 * 例:Railsを使って受託開発・自社サービス開発 * 販売・サポートサービス提供 * 例:Red Hat Enterprise Linux * 無料で配布して宣伝し、別のところで稼ぐ * 例:Redmineは無料\n RedmineのクラウドサービスMy Redmineは有料 = 最近のもやっと事例 * よくあるパッケージのように\n ライセンス販売してくれないか? * 背景:社内手続きが楽になるから * 元のソフトウェアはリライセンス可能な\n 自由なソフトウェア * やれなくはないけど\n 自由なソフトウェアを不自由なソフトウェア\n として提供することになる… = 落としどころ * ソリューション(?)として提供しよう! * パッケージ・設定・配布・サポート一式を提供 * お客さんは自由なソフトウェアを使える * でもそういう伝え方はしていない * この提供方法なら手続きを進めやすい? = OSSサポート事例 * オープンソースに取り組みたい企業を\n サポート * 例:Speeeさん * サポート内容例: * オープンソースプロジェクトの開発に\n 参加する方法をレクチャー * 新入社員へなぜこの組織はオープンソースに\n 取り組みたいのかを説明 = OSSサポート事例の落としどころ * 興味がある人には自由なソフトウェアの\n ことも伝える * 今回みたいにあまりうまく説明できないけど… = まとめ * 業務でRubyを使っているプログラマーが\n 業務でより自由なソフトウェアを活用する\n ノウハウを紹介したかった! * オープンソースの話っぽくなってボツ * 自由なソフトウェアに関する\n 私のもやっとを共有した * そんなにRubyは関係なくなってしまった… * なにかしら思うところがあればうれしいな… = 連絡先 * クリアコード\n (('note:(())')) * Ruby・自由なソフトウェア・オープンソース・\n 仕事のことなどなど * Red Data Tools\n (('note:(())')) * Rubyをデータ処理で使うことについて # = おまけ # = オープンソースクイズ! # オープンソースソフトウェアはどれ!?\n # (('note:(OSS)')) # * SQLite # * Vim # * Visual Studio Code # = オープンソースクイズの解答 # * SQLite # * 自由なソフトウェアだけどOSSではない # * Vim # * 自由なソフトウェアだけどOSSではない # = オープンソースクイズの解答\nVisual Studio Code # * ソースコード・自前ビルドの実行ファイル # * 自由なソフトウェアだしOSS # * Microsoftが配布している実行ファイル\n # (('note:(())')) # * OSSではないかもしれない\n # (('note:OSSのソースコードを一切変更せずにビルドしてあればOSS')) # * 自由なソフトウェアではない # (('note:なぜ、オープンソースは自由ソフトウェアの的を外すのか'))\n # (('note:(())')) # = よくあるオープンソースの認識 # * ソースがオープンなソフトウェア # * みんなで開発しているソフトウェア # * GitHubにあるソフトウェア # * 「オープンソースの定義」に準拠している\n # ライセンスを使ったソフトウェア # * オープンソースイニシアチブが承認しているか\n # どうかは関係ない # = OSSの見分け方 # * オープンソースイニシアチブが承認した\n # ライセンスを使っているかどうか\n # (('note:ライセンスリスト:(())')) # * OSSっぽいはない! # (('note:What is "Open Source" software?'))\n # (('note:(())')) # = コピーレフトとユーザー # # image # # src = images/copyleft-and-user.svg # # relative-width = 100 # == スライドプロパティ # : enable-title-on-image # false # = free and open source software # * 従来: # * フリーソフトウェアでもあるし\n # オープンソースソフトウェアでもある # * 最近: # * 無料のオープンソースソフトウェア\n # という意味で使われていそう…