SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
GitBucketを支えるJava技術と
グローバルで使われるOSSの作り方
Naoki Takezoe
@takezoen
自己紹介
● 竹添 直樹 @takezoen
● 株式会社ビズリーチ勤務
● Java→Scala
● GitBucketやScalatraなどのOSSを開発してい
ます
Agenda
● GitBucketの紹介
● OSSの成長に必要なもの
● 今後の展望
Agenda
● GitBucketの紹介
● OSSの成長に必要なもの
● 今後の展望
GitBucketとは?
● Scalaで実装されたOSSのGitサーバ
○ イントラネット内のサーバ等にインストールできます
● インストールはめっちゃ簡単
○ Javaさえ動作すればどこでも動作します
$ java -jar gitbucket.war
リポジトリビューア
イシュー
プルリクエスト
GitBucketの機能
● Public / PrivateなGitリポジトリ (httpとsshでアクセス可能)
● アクティビティのタイムライン表示を含むダッシュボード
● オンラインでのファイル編集も可能なリポジトリビューア
● Markdown書式が利用可能なWiki
● イシュー、プルリクエスト
● ソースコードへのコメント
● リポジトリのフォーク
● Eメールによる通知
● ユーザ、グループによる権限管理、LDAP連携
● Gravator連携
● GitHub互換のWeb API
● プラグインによる拡張
● H2 / MySQL / PostgreSQL Herokuでデモサイトが動いています:
http://gitbucket.herokuapp.com/
GitBucketの開発について
● コミッタはいまのところ日本人中心
● 必ず月1回リリース
● 使用しているフレームワーク(Scalatra)の開発に
も積極的に関与している
これまでの歩み
● 2013年4月頃開発開始
● 2013年7月1.0リリース
● 2014年5月2.0リリース
● 2014年6月GitBucket News開始
● 2015年3月3.0リリース(プラグイン導入)
● 2015年9月gitbucket community plugins開始
● 2016年4月4.0リリース(外部DBサポート)
● 2016年7月4.3リリース(独自UIへ)
技術的な話
技術スタック
Git Repository
RDBMS
(H2 / MySQL / PostgreSQL)
JGit Slick
Apache MINA SSHD
Jetty
GitServlet (JGit) Scalatra / Twirl
Git Client Web Browser
SSH HTTP
Scalaの特徴
● オブジェクト指向言語 + 関数型言語の機能
○ Javaよりも強力な型安全性
○ スクリプト言語のような柔軟性
● Javaとの相互運用性
○ 既存の膨大なJavaの資産を利用可能
○ 最新のScala 2.12ではJava8のサポートも強化
Scalaの特徴を活かしたフレームワーク
● Scalatra(Webフレームワーク)
● Slick(DBアクセスライブラリ)
● Twirl(テンプレートエンジン)
Slick: タイプセーフなクエリDSL
Issues
.filter { t1 =>
t1.issueId === issueId.bind
}
.innerJoin(Accounts).on { case (t1, t2) =>
t1.userId === t2.userId
}
.map{ case (t1, t2) =>
(t1.issueId, t1.title, t2.userName)
}
.list
Twirl: タイプセーフなテンプレートエンジン
@(account: model.Account)
<ul>
<li>user namne: @account.name</li>
<li>email: @account.email</li>
@if(account.isManager){
<li>role: Manager</li>
} else {
<li>role: Developer</li>
}
</li>
Scalaが少人数での開発を支えている
● 大規模なコードでも型によるチェックで修正漏れを
防ぐことができる
● Javaでは複雑な生SQLやHTMLテンプレートな
どにおいて型安全性を活かせない
● Scalaはコンパイルが遅いがGitBucketにおいて
はそれ以上に圧倒的なメリットがある
GitBucketを支えるJava技術
● Jetty
● JGit
● Apache MINA
● H2 database
GitBucketを支えるJava技術
Git Repository
RDBMS
(H2 / MySQL / PostgreSQL)
JGit Slick
Apache MINA SSHD
Jetty
GitServlet (JGit) Scalatra / Twirl
Git Client Web Browser
SSH HTTP
独自開発のJavaライブラリ
汎用的なものは敢えてJavaで作っている
● markedj
○ marked.jsというGitHub Flavored Markdown互換の
MarkdownパーサをJavaに移植したもの
○ 現在はcommonmarkへの移行を検討中
● solidbase
○ Liquibaseをベースにマルチテナント、マルチデータソース
に対応したマイグレーションツール
既存のJava資産を支えるのは大きい
● 低レイヤのミドルウェアやライブラリのネイティブ
実装が充実している
● Javaさえ動けばどこでも簡単に動作するアプリ
ケーションを開発することができる
プラグインシステム
● Scalaで記述できる
○ コンパイルしたjarを特定のディレクトリに配置して
GitBucketを起動すると読み込まれる
● 様々な拡張ポイントを利用可能
○ GitBucketが使用しているフレームワークの機能、コアが
提供する全てのAPIを利用可能
こんなプラグインがあります
プラグイン 説明
Announce plugin ユーザにメールでのアナウンスをするためのプラグイン
H2 Backup plugin H2のデータをダンプするためのプラグイン
Desktop Notification デスクトップ通知を行うためのプラグイン
Gist plugin スニペットを管理するためのプラグイン
Commits graph plugin ユーザ毎のコミット数を表示するプラグイン 
Asciidoc plugin Asciidocのレンダリングをできるようにするプラグイン
Bugspots plugin リポジトリのソースコードに Bugspotsを適用するプラグイン
Pages plugin リポジトリの内容をWebページとして公開するためのプラグイン
Network plugin コミットのネットワークグラフを表示するプラグイン
Emoji plugin WikiやIssuesなどで絵文字を使えるようにするプラグイン
RST plugin ReStructuredTextのレンダリングをできるようにするプラグイン
GitBucketプラグインを作ってみよう
http://takezoe.hatenablog.com/entry/2016/08/06/202109
Agenda
● GitBucketの紹介
● OSSの成長に必要なもの
● 今後の展望
OSSの成長に必要なもの
● ユーザ
● 開発者
● コミュニティ
● エコシステム
GitBucketはどのくらい?
● 6000 stars
● 100 contributors
● 1300 issues / pull requests
● 380 gitter users
私のOSS代表作
● FreeStyle Wiki 2003年〜
○ 日本人ユーザがターゲットだった
○ プラグインを作ってくださる方も多かった
● Project Amateras 2004年〜
○ 英語のWebサイト、ユーザインターフェースを提供
○ 海外:日本のユーザ比率 3:1くらいになったが、開発コミュ
ニティを作ることができなかった
● Seasar2, Apache Click 2008年〜
○ Apache Software Foundationへの移行、ASFコミッタと
しての活動を経験
私のOSS代表作
● GitBucket 2013年〜
○ 基本的にすべての活動を英語でやっている
○ 開発面でのフィードバックも多く得られている
○ GitHubの力によるところが大きい
ASFで感じたこと
● メリット
○ ブランディング(?)
○ リーガル面のサポート(ユーザ、開発者双方にとってメリッ
トがある)
● デメリット
○ 官僚的なルール、レガシーな開発インフラ
○ 協力者の敷居が高く、開発速度も遅くなってしまう
GitHubによってもたらされたもの
● 使いやすく必要最低限の機能
○ 既存のOSSホスティングサービスより使いやすかった
○ 個人レベルのOSS開発によくフィットしていた
● 自然とコミュニティの構築が促進される
○ プルリクエストによってコードによる貢献が劇的に簡単に
なった(する側もされる側も)
○ 簡単に貢献できることによって開発コミュニティの構築が促
進されている
ソフトウェアとして大事なこと
● 継続性
○ 自分が必要としているものを作る
○ 自分が使い続ける限り開発が継続される
○ 開発コミュニティを作る
● 拡張性
○ コアを小さく保つことでメンテナンスコストを下げる
○ 開発者のコミュニティ、さらにはエコシステムの構築を促進
できる
最も大事なのは英語でやること
● すべてを英語で行う
○ UI、ドキュメント、ブログ、GitHub上でのやりとり等
● 対象ユーザが一気に広がる
○ Amateasのときは英語のページを作っておいただけで
ユーザ数が4倍になった
● ユーザが増えると協力者も増える
○ 協力者が増えないと開発コミュニティができない
ユーザが増えるにつれ起こる問題
● イシューが質問で埋め尽くされてしまう
○ 質問用のgitterルームを作り誘導する
○ WikiにFAQをまとめる
● 英語で投稿してくれない人が現れる
○ タイトルだけでも英語でリライトしてしまう
○ 日本語用のgitterルームを用意している
GitHubのテンプレート機能を活用
gitリポジトリのルートもしくは.githubディレクトリに
以下のファイルを配置
ファイル名 説明
CONTRIBUTING.md コントリビューションの際の注意事項を記述。イ
シュー、プルリクエストの作成画面にリンクが
表示される。
ISSUE_TEMPLATE.md イシュー作成時にテンプレートとして表示され
る。
PULL_REQUEST_TEMPLATE.md プルリクエスト作成時にテンプレートとして表示
される。
ユーザに注意を促すことができる
CONTRIBUTING.mdへのリンク
ISSUE_TEMPLATE.mdの内容が
初期表示される
OSSでワンチャンありますか?
なくはない
● 開発元やユーザ企業などへの転職
● 書籍や記事などを書いて副収入
● ビジネスとして成立するケースもある
ただし必ずしも「ユーザの数」が全てではない
● GitBucketは世界中で使われてるっぽい
○ でも海外のScalaコミュニティでは知られていない
○ Scala使ってるような会社はみんなGitHub使ってる
● 特定のコミュニティ内での知名度が重要
○ プログラマ向けのライブラリやフレームワーク
○ 著名なプロダクトへのコミット
Agenda
● GitBucketの紹介
● OSSの成長に必要なもの
● 今後の展望
コアを小さくシンプルに保つ
● 特定用途向けの機能はプラグインとして提供
○ Excelが出てくるやつとか…
● 現在は基本機能として実装されている機能もプラ
グインに切り出していきたい
○ Issues、Wiki、認証機能など
● メンテナンスコストの最小化とプラグインコミュニ
ティの活性化の両方に繋がる
プラグイン開発の促進
● より簡単にプラグインを開発/利用可能にする
○ 動作確認を簡単に行うための仕組み
○ ドキュメントの整備
○ ネットワーク経由でのプラグインインストール
● GitBucketプラグインの開発がScalaに触れる
きっかけになると嬉しい
技術的な課題
● パフォーマンス、スケーラビリティ
○ 巨大なリポジトリの場合にgitアクセスが重くなる
○ 検索機能(特にGitリポジトリの検索)が遅い
(Elasticsearchで横断検索できるようにするプラグインを
作ってくださっている方がいます)
● フロントエンド技術のレガシー化
○ 現在はVanilla JS + jQuery
○ これはこれでいいのではという気もしている…
開発者募集中です!
● プラグイン開発でもコミッタでも
● Scalaをやっていきましょう
Try GitBucket!

Más contenido relacionado

Destacado

書類作成環境のあるべき論とは
書類作成環境のあるべき論とは書類作成環境のあるべき論とは
書類作成環境のあるべき論とはJun Iio
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudyKazuhito Miura
 
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAよろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAKazuhito Miura
 
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜Kazuhito Miura
 
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」akipii Oga
 
自動化パタンランゲージ
自動化パタンランゲージ自動化パタンランゲージ
自動化パタンランゲージHiroshi Maekawa
 
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~ikikko
 
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansaiKazuhito Miura
 
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016満徳 関
 
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Takahisa Wada
 
モックアップ共有のススメ
モックアップ共有のススメモックアップ共有のススメ
モックアップ共有のススメKazuyoshi Goto
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)Kazuhito Miura
 
Jenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたJenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたkakakikikeke
 
GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?Kiyotaka Kunihira
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとKiro Harada
 
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座Hiroko Tamagawa
 
20170809 start python_selenium
20170809 start python_selenium20170809 start python_selenium
20170809 start python_seleniumHiroko Tamagawa
 

Destacado (19)

書類作成環境のあるべき論とは
書類作成環境のあるべき論とは書類作成環境のあるべき論とは
書類作成環境のあるべき論とは
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
 
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAよろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
 
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
 
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
 
自動化パタンランゲージ
自動化パタンランゲージ自動化パタンランゲージ
自動化パタンランゲージ
 
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
 
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
 
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
 
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
 
モックアップ共有のススメ
モックアップ共有のススメモックアップ共有のススメ
モックアップ共有のススメ
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
邪道Jenkins
邪道Jenkins邪道Jenkins
邪道Jenkins
 
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
 
Jenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたJenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみた
 
GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?
 
Jenkins に XFD を追加してみると
Jenkins に XFD を追加してみるとJenkins に XFD を追加してみると
Jenkins に XFD を追加してみると
 
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座
 
20170809 start python_selenium
20170809 start python_selenium20170809 start python_selenium
20170809 start python_selenium
 

Más de takezoe

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloudtakezoe
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scalatakezoe
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Servicetakezoe
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scalatakezoe
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationstakezoe
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scalatakezoe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scalatakezoe
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」takezoe
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtendtakezoe
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkintakezoe
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scalatakezoe
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016takezoe
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scalatakezoe
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsawtakezoe
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3takezoe
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMtakezoe
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 

Más de takezoe (20)

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloud
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Service
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scala
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtend
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkin
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scala
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scala
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsaw
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVM
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 

GitBucketを支えるJava技術とグローバルで使われるOSSの作り方