読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

ソーシャルコーディングの世界

Developers Summit 2012 2日目

Ruby or Rails
Asakusa.rb

おしらせ
達人プログラマのDave ThomasがAsakusa.rbにやってくる


ソーシャルコーディングって何?
github(イカのような変なキャラクタ)
200万くらいのソースコードが置かれている

ソーシャルコーディング=githubの用語…


Code is about the people writing it.

最初はただのレポジトリホスティングだった
それがソーシャルコーディングを提供する場となった

ただの置き場ではなく皆でシェアする場となった。


Why Social Coding?

何故GitHubはただのGitレポジトリで終わらなかったのか?

Because Social Coding Met Ruby
GitHubの概念がRubyにマッチしていた

  • 人間にフォーカスした言語
  • 少ないコードで多くの仕事
  • 表現力と拡張性に富んだ言語
  • コードがドキュメントだからコード読め言語
  • 未知の新しいものを取りこむ

Rubyはキメると気持ちいい(Matz)

ソーシャルコーディングとRubyの相性が良かった?

Social Coding and Computer Language
Before Social Coding
プログラミングはコンピュータを操るための手段だった
機械のことばだったのを、人間のためのものにした

Before Social Coding 人間→コンピュータ
AfterSocial Coding 人間→人間

プログラミング言語を使って人間に対してい語りかけること
自己表現 or コミュニケーションの手段
文芸、著作活動、芸術創作
コンピュータの隷属からの脱却
人間らしく言葉を使っていく

人類が歴史のなかで一度経験したこと
ルネッサンス(人文主義、人間賛歌ッ!)

人間にフォーカスした言語でなければならない

コミュニケーションとしてのソーシャルコーディング
自分が書いたコードが世界中の人に読まれて世界中で使われている
世界中からpull request やメッセージが来る
カンファレンスとかで会うと初対面でも友達みたいな感覚だったりする。

githubでちょくちょくアップしてると、
有り難いメッセージがちょくちょく来る


OpenSource vs SocialCoding
Social Codingがオープンソースにもたらしたもの
身分制度の変革
プロダクトに人が群がる
コミッター様 vs 下々のものども

SocialCodingの構造

  • 誰でも自由にコミットを行うことが出来る
  • コミットが積み重なるとプロダクトになる
  • 全テのレポジトリは平等
  • 誰でも自由に他人のレポジトリを触れる

コミッターの修正により、原作よりもベターになりうる
読むのも書くのも自由になる
(今まではコミッターに権利を与えてもらってから修正をさせて頂いていた)

SocialCodingは産業革命ではなく、市民革命だった
プログラマはプログラムし、公開する権利を勝ち取った

コミュニティの始まり
人民たちがソースコードを保持する権利を手にするところから
コミュニティが始まる

エンジニアがコミュニティに所属するだけではだめで、
従事することができる


お仕事 vs Social Coding

業務プログラマはソーシャルコーディングに乗るべきか

  • 業務プログラマこそ殻に閉じこもってないで多様な文化に触れるべき
  • 普段コードが世間に出ない仕事をしているんだったらますますアウトプットが重要だと思うよ


仕事でできるSocial Coding

  • 枯れたプロダクトは使わない(最新、かつエキサイティングなやつを使う)
  • バグ踏んだらパッチを書く
  • それが出来ないならせめて報告する

(上級編)

メリット

  • 会社と自分の良い宣伝になる
  • 仕事のコードをみんなが代わりに書いてくれる
  • 良いコードを晒しておくと良い人材が釣れる
  • 設計もコードもきれいになる

などなど

ソーシャルコーディング業務の始めかた

  • なんか作って公開する
  • 趣味の公開プロダクトを業務に投入してみる
  • メンテも仕事のうち
  • 仕事でソーシャルコーディング
  • 業務と余暇の境目なんてどんどん曖昧になっていくという流れ
  • ソーシャルコーディングスキルはエンジニアにとって必須な仕事のスキル


Social Codingの未来

  • コードを読む時間のほうが書く時間より圧倒的に多い
  • コマンドで言えばgit fetch => log
  • めんどいし、変更があるのか分からない

欲しいもの

  • pull型でなくてpush型のgit log
  • 今のソーシャルコーディング環境はまだ掲示板レベル
  • 「パッチ置いときましたー見といて下さーい」をメールで知る
  • エディタやOSを統合してほしい
  • チャット(Skypeircみたいな)のが欲しい
  • ペアプロみたいなUXが欲しい

Travis CI
CIがどんどんカジュアルに

  • テストを書かないとか論外(基本中の基本)
  • でもそもそもテストって書きにくい(でも忘れがち)
  • もっと手軽に生成とかできるようになるべき
  • コミットしたものしかテストできない
  • pull requestをマージしてみたらCI通らない問題
  • pull requestのひとつひとつがCIされるくらいCIをコモディティにしてほしい

一斉メンテ(日曜の夜が多い)
日本時間だと月曜の朝なので、仕事で使えなかったりする

要望

  • いわゆるクラウド
  • 一斉メンテしないで
  • 月曜日の朝に落ちないで
  • しかも速くなって

くらいを今年あたり実現してほしい

セキュリティはどうか

そこでgithub:enterprise
これが最適解とはいえない
明らかにめんどう
どうにかして現在のwebアプリよりも細やかなサービスをしてくれ

Code is about the people writing it.
Social Codingは人

Yes We Code!