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

●スピーカー
フリーランス / Asakusa.rb
松田 明 氏

Ruby
Asakusa.rb


アジャイル開発でコンピュータ言語でエンジニアのスキルでソーシャルコーディングのスペシャルなよもやま話


●ソーシャルコーディングとは?
 githubが最初に書いた
 githubの標語みたいなもの
 
 ○githubとは
  ・最初はgitリポジトリホスティングサービス
  ・途中からただソースを置くだけでなく、それを人々が共有する事に意味を持たせる

 ○どうしてgithubはただのgitリポジトリで終わらなかったのか?
  ・Rubyだから
  ・Rubyはキメると気持ちいい(by Matz)
    →みんなでキメて集団トランス状態
  ・ソーシャルコーディングとRubyという2つのカルチャーが相性良過ぎて、何となく発展して行った

 ○ソーシャルコーディング以前
  ・プログラミングはコンピューターを操るための手段
  ・機械言語

 ○ソーシャルコーディグ後
  ・コードは人間のためのもの
  ・以前は人間がコンピューターに向けて書くものだったが、それが人間が人間に向けて書くものになった

 ○言語を使って出来る事
  ・自己表現の手段
  ・コミュニケーションの手段

 ○自己表現としてのプログラミング
  ・文芸、著作活動など
  ・humanity

 ○人間らしさの獲得
  ・神(コンピューター)への隷属からの脱却
  ・もっと人間らしい形で言語を使っていこうというもの
  ・ソーシャルコーディングは人間讃歌!!

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



●オープンソースvsソーシャルコーディング
 Social Codingはオープンソースの一形態

 ○身分制度の変化
  ・オープンソース
    プロダクトに人が群がる
    一部のコミッターがいて、そこについて行く人たちだけ参加出来た
  ・Social Coding
    誰でも自由にコミットを行うことが出来る
    コミットが積み重なるとプロダクトになる
    全てのリポジトリは平等
    単純にnamespaceが切られているだけ
    誰でも自由に他人のリポジトリを触ることができる

 ○ソーシャルコーディング革命
  ・SocialCodingは産業革命ではなく、市民革命だった
  ・プログラマはプログラムし、公開する権利を勝ち取った
  ・人民の直接参加
    自らのソースコードの所有
    主権在民
    コミューン、すなわちコミュニティ
    単にRubyを使って話している訳ではなく、自分たちが作っているからこその内容になる



●業務プログラマはソーシャルコーディングに乗るべきか?
 ○業務プログラマこそ殻に閉じこもらず、多様な文化に触れるべき
 ○普段コードが世間に出ない仕事をしているなら、ますますアウトプットが重要



●仕事でできるソーシャルコーディング
 ○枯れたプロダクトは使わない
 ○バグを踏んだらパッチを書く
  せめて報告する
  これをやることによって、世界のプログラマの質向上に貢献していく

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

 ○ソーシャルコーディング業務の始め方
  ・なんか作って公開する
  ・趣味の公開プロダクトを業務に投入してみる
  ・メンテも仕事のうち
  ・仕事でソーシャルコーディング!

 ○エンジニアのスキル
  ・業務と余暇の境目がどんどん曖昧になっていく時代の流れ
  ・ソーシャルコーディングスキルは、労働者としてのエンジニアにとっても必須のスキル




●ソーシャルコーディングの未来
 書いている時間より読んでいる時間が長く、読む事が非常に重要
 めんどくさい
 変更があるか分からない
 
 ○今後欲しいもの
  ・pull型ではなくpush型のgithub
  ・今のソーシャルコーディング環境はまだ掲示板レベル
  ・メールで「パッチを書きました」とかの内容が送られる
  ・チャットのようなリアルタイムなソーシャルコーディング
  ・エディタ統合
  ・OS統合
  ・チャットクライアント統合とか
  ・ペアプロみたいなソーシャルコーディングプラットフォーム

 ○CIがどんどんカジュアルに
  ・デフォルトでCIが走っているので、テストを書かないとか論外
  ・そもそもテストって書きにくい
  ・もっと手軽に生成とか出来るようになるべき

 ○CIの問題
  ・コミットしたものしかテスト出来ない
  ・pull requestをマージしてみたら、CIが通らなかったりする
  ・pull request単位でCI出来るようにすべき

 ○基本インフラとしての信頼性
  ・一斉メンテ
    日曜の夜(現地時間)が多い
    日本だと月曜日の朝
    週末で障害があったりしても、週明け朝一で対応出来ない
    何ヶ月かいっぺんにある

 ○もっと仕事で使う
  ・いわゆるクラウド化
  ・一斉メンテしない
  ・月曜日の朝に落ちてない
  ・しかも速くなる
  ・今年当たりそろそろ?

 ○セキュリティはどうか?
  ・むしろ低下している
  ・本来ローカルのものであった社内リポジトリがWebアプリのいい加減さを備えてしまった
  ・Webに置いている時点で誰でもアクセス出来る可能性がある

 ○github:enterpriseというのもある
  ・明らかにめんどくさい
  ・第三者のファイルには触れない
  ・もっと細やかなアクセスコントロールが欲しい


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

Yes We Code!




●感想
 技術的な話はそんなになかったが、これからコーディングのスキルアップをしていく上で、
 非常に役立つ内容だった。
 知識をインプットすることは定常的にやっているが、アウトプットはなかなか出来ていない。
 ただアウトプットするだけでなく、それに関して世界中の人からFBを受けられたり、というのも
 とても魅力的に感じた。
 今後はアウトプットの形として、ソーシャルコーディングの要素も今後取り入れていきたいと思う。