SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
私とOSS活動とPerl
YAPC::Tokyo 2019
2019.01.26 [SAT]
前田隼輔 ( @duck8823 )
自己紹介
- 前田隼輔
@duck8823
- 株式会社エス・エム・エス
- Server Side Kotlin
- エンジニア 6年目
- Perl: アプリ開発経験なし / 運用スクリプト
- OSS: 個人開発
2
3
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
4
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
5
生命科学とPerl
修士論文のテーマ
- 専攻は生命科学
- 学部時代はウェット(実験屋さん)
- (もともとパソコンも好きだったので)
大量データ解析をする研究をテーマに
=> Perl を勧められたのがきっかけ
6
BioPerl
- 生命科学: 2000年代後半から大量解析時代
=> バイオインフォマティクス
- BioPerl
- github.com/bioperl
- 生命科学のためのPerlツール群
- OSS
7
この頃書いていたPerl
- スクリプト( .pl )のみ
- モジュール何それ
- リファレンス何それ
- 複数の スクリプトを パイプ で繋ぐ
- OSSは利用するだけ(意識してなかった)
8
“
9
OSSは意外と近くにある
10
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
11
Java と Perl
新卒社会人時代とPerl
- アプリケーション開発は Java
- 主機能は CRUD 操作なウェブアプリ
- クラス・インスタンスの概念
- 運用スクリプトは Perl
- CSV / Excel データのパース
- RDBからの取得、インポート
12
13
開発と運用で言語が違うと...
List<Employee> results =
manager.from(Employee.class)
.where(
new ComplexWhere()
.eq("name", name)
.and(
new SimpleWhere()
.eq("age", age)
)
     )
.getResultList();
my $sth = $dbh->prepare(<< "EOS"
SELECT
*
FROM
employee
WHERE
name = ? AND age = ?
EOS
);
$sth->execute($name, $age);
for my $result (@{$sth->fetchall_arrayref(+{})}) {
...
- アプリケーション開発
- Java
- S2JDBC (O/R Mapper)
- 流れるような I/F
14
開発と運用で言語が違うと...
List<Employee> results =
manager.from(Employee.class)
.where(
new ComplexWhere()
.eq("name", name)
.and(
new SimpleWhere()
.eq("age", age)
)
     )
.getResultList();
my $sth = $dbh->prepare(<< "EOS"
SELECT
*
FROM
employee
WHERE
name = ? AND age = ?
EOS
);
$sth->execute($name, $age);
for my $result (@{$sth->fetchall_arrayref(+{})}) {
...
- 運用スクリプト
- Perl
- DBI
- SQL
15
書き味が全く異なる
List<Employee> results =
manager.from(Employee.class)
.where(
new ComplexWhere()
.eq("name", name)
.and(
new SimpleWhere()
.eq("age", age)
)
     )
.getResultList();
my $sth = $dbh->prepare(<< "EOS"
SELECT
*
FROM
employee
WHERE
name = ? AND age = ?
EOS
);
$sth->execute($name, $age);
for my $result (@{$sth->fetchall_arrayref(+{})}) {
...
高いスイッチングコスト
- 運用作業の発生頻度が絶妙
- DBI の API に慣れなかった
- SQLが覚えられない
16
アプリ開発と同じインターフェース
で運用スクリプトも書きたい
17
流れるようなインターフェース?
List<Employee> results =
manager.from(Employee.class)
.where(
new ComplexWhere()
.eq("name", name)
.and(
new SimpleWhere()
.eq("age", age)
)
     )
.getResultList();
- メソッドチェーン
- メソッドの戻り値(インスタンス)
を繋ぐ
- インスタンス = クラスの実体
- Perlでもクラスを表現すれば
18
public class Employee {
public String name;
public Integer age;
public Employee() {
this.name = "名前";
this.age = 0;
}
public String hello() {
return "こんにちは " + this.name ;
}
}
クラスとモジュール
package Employee;
sub new {
my $pkg = shift;
my $self = { name => "名前", age => 0 };
return bless $self, $pkg;
}
sub hello {
my $self = shift;
return "こんにちは" . $self->{name};
}
1;
- moduleでクラスを表現
- コンストラクタ
- インスタンスメソッド
19
インスタンスの使い勝手
Employee employee = new Employee();
employee.name = "太郎";
employee.age = 25;
employee.hello(); // こんにちは太郎
my $employee = Employee->new();
$employee->{name} = "太郎";
$employee->{age} = 25;
$employee->hello(); // こんにちは太郎
Javaのライブラリの構造を真似れば
同じようなI/Fをもつライブラリを作れる
20
同じような I/F のPerlモジュールを作成
List<Employee> results =
manager.from(Employee.class)
.where(
new ComplexWhere()
.eq("name", name)
.and(
new SimpleWhere()
.eq("age", age)
)
     )
.getResultList();
my $results =
$manager->from(Employee)
->where(
Pdbc::Where->new(
"name", name, EQUAL)
->and(
Pdbc::Where->new(
"age", age, EQUAL)
)
)
->list;
“
21
作ったライブラリを使いたい
会社 <- GitHub -> 自宅
- 家でコード書いて仕事で楽したい
- 正式に会社で使いたい
- 当時知った Git と GitHub
=> GitHubに公開
github.com/duck8823/pdbc-gen (archived)
github.com/duck8823/pdbc-manager
22
モジュールの配布
- GitHub リポジトリからインストール
- GitHub は tarball をダウンロードできる
- cpanm は tarball からインストールできる
23
> cpanm https://github.com/<owner>/<repo>/tarball/<ref>
個人的に配布するだけなら十分
24
CPAN::Author
CPAN::Author になった
- CPAN::Author になりたくて作った
なにか称号が欲しかった(3年目)
- github.com/duck8823/Slack-RTM-Bot
- Slack の RTM ( Real Time Messaging ) API
を利用した Bot を作るためのライブラリ
25
> cpanm Slack::RTM::Bot
Slack::RTM::Bot
26
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
Slack::RTM::Bot
27
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
- インスタンスの生成
Slack::RTM::Bot
28
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
- 条件とアクションを追加
Slack::RTM::Bot
29
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
- 条件
- 正規表現が利用可能
Slack::RTM::Bot
30
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
- 実行する関数
Slack::RTM::Bot
31
use Slack::RTM::Bot;
my $bot = Slack::RTM::Bot->new( token => '<API token>');
$bot->on({
channel => 'general',
text => qr/.*/
}, sub {
my ($response) = @_;
print $response->{text}."n";
});
$bot->start_RTM;
sleep 300;
$bot->stop_RTM;
- RTMの開始と終了
CPANに公開して...
32
- ソースコードのリポジトリに反応
- 初めてのStar
- 初めてのIssue
- 初めてのPull Request
開発モチベーションの向上
英語でのやりとり
- 異なる言語圏
- 言葉以外の情報が重要
サンプルコード / 実行環境 / ログ
33
Issue / Pull Request の内容
- README / ドキュメント修正
- バグ
- Deprecated / New な API
- 知らなかった構文
34
スキル・知識の向上
“
35
共有するためにGitHubに置いた
CPANに公開することで露出が増え
それによりフィードバックも増加
スキル・知識の向上に繋がった
36
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
37
転職のきっかけ
Perlと技術カンファレンス
- YAPC::Asia 2015 個人スポンサー
- 初めての勉強会・カンファレンス
- 登壇者・参加者が楽しそうだった
38
勉強会に参加したい
勉強会は圧倒的に東京が多い
39
勉強会は圧倒的に東京が多い
40
勉強会は圧倒的に東京が多い
41
- 東京の会社に転職するきっかけ
- 転職後の勉強会で...
- Slack::RTM::Botを使ってくださってる方に遭遇
42
転職とOSS
転職活動とOSS
- GitHub のアカウントを掲載
- 前職の内定後...
- 最終判断は公開していたコード
=> コードを評価してもらえた瞬間
43
より身近になったOSS
- 転職先は積極的にOSSを活用していた
- 必要であれば業務時間でも
- 外部のツールへコントリビュート
- ドキュメント・typo修正
- オプションの追加
44
45
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
46
今作っているもの
Slack::RTM::Bot の更新頻度
- github.com/duck8823/Slack-RTM-Bot
- Issue/Pull Request ベース
- RTM APIはあまり使わなかった
- Webhooks を使うことがほとんど
47
自分で利用しないと更新頻度が低下
今作っているもの
- github.com/duck8823/duci
- 個人リポジトリ
- Golang製 の CI サーバー
- 2018/04/01~ 継続的に開発
- JetBrains Open Source license
48
使いたいものを作る
- CI の定義が煩わしい
- 学習コストがかかる
- ローカルとCIでの挙動の違い
49
特別な設定ファイルを必要としない
シンプルなCIサーバーを作ろう
github.com/duck8823/duci
- タスクランナー で タスク を定義しよう
- Makefile / build.gradle etc.
- 必要なインフラは Dockerfile で定義しよう
- ENTRYPOINT / CMD でタスクを実行
- コンテナをビルドして実行するだけ
50
実際に使う
- CI を作るのにCIを使う => bug / feature etc.
51
思いをREADMEに書く
52
Starをもらったときの嬉しさUP
53
OSS と 世界
“
54
世界はOSS開発者に優しい
JetBrains Open Source license
- JetBrains All Products Pack が利用可能
- IDEA などのツール
- $249.00 / 1st year => 無料
- 対象: Open Source プロジェクト
- 3ヶ月以上継続的に活動している
- コミッター / メインコントリビューター
- 個人プロジェクトでも可能
55
IDEA Perl Plugin
- github.com/Camelcade/Perl5-IDEA
56
OSSは優遇される
- GitHub
- 無料枠は private repoに制限あり
- Travis CI / CircleCI
- OSS は無料
- Coveralls(カバレッジの記録 )
- OSS は無料
- その他静的解析サービスなど
57
58
まとめ
まとめ
- OSSは様々な場所で利用されている
- 例. 生命科学分野での研究
- OSSがなければ開発できない
- ソースを公開することで様々なきっかけ
- スキル向上 / 転職 / 勉強会 etc.
- CPAN に公開するとフィードバック増えた
- 世界はOSS開発者に優しい
59
“
60
OSSを身近に感じてみよう

Weitere ähnliche Inhalte

Was ist angesagt?

PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017Rui Hirokawa
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
Kotlin勉強会 in ehime
Kotlin勉強会 in ehimeKotlin勉強会 in ehime
Kotlin勉強会 in ehimeEigoro Yamamura
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.specKent Ohashi
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミングnagoya313
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみたy-uti
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法Nagi Teramo
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつazumakuniyuki 🐈
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011Rui Hirokawa
 
PHPの関数実行とその計測
PHPの関数実行とその計測PHPの関数実行とその計測
PHPの関数実行とその計測shinjiigarashi
 
10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方Yohei Sato
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 

Was ist angesagt? (20)

PHPの今とこれから2017
PHPの今とこれから2017PHPの今とこれから2017
PHPの今とこれから2017
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
Kotlin勉強会 in ehime
Kotlin勉強会 in ehimeKotlin勉強会 in ehime
Kotlin勉強会 in ehime
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.spec
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
怪しいWindowsプログラミング
怪しいWindowsプログラミング怪しいWindowsプログラミング
怪しいWindowsプログラミング
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
 
RとWeb API
RとWeb APIRとWeb API
RとWeb API
 
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
 
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ
 
PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 
PHPの関数実行とその計測
PHPの関数実行とその計測PHPの関数実行とその計測
PHPの関数実行とその計測
 
10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 

Ähnlich wie 私とOSS活動とPerl

CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介Hiromu Yakura
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009Akio Ishida
 
Coq 20100208a
Coq 20100208aCoq 20100208a
Coq 20100208atmiya
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia鉄次 尾形
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4bitter_fox
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Shohei Okada
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 

Ähnlich wie 私とOSS活動とPerl (20)

CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
 
Ruby Postgres 2009
Ruby Postgres 2009Ruby Postgres 2009
Ruby Postgres 2009
 
Coq 20100208a
Coq 20100208aCoq 20100208a
Coq 20100208a
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
Laravel × レイヤードアーキテクチャを実践して得られた知見と反省 / Practice of Laravel with layered archi...
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
20141129-dotNet2015
20141129-dotNet201520141129-dotNet2015
20141129-dotNet2015
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
Ruby 2.6 Update
Ruby 2.6 UpdateRuby 2.6 Update
Ruby 2.6 Update
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 

Mehr von Shunsuke Maeda

外部環境への依存をテストする
外部環境への依存をテストする外部環境への依存をテストする
外部環境への依存をテストするShunsuke Maeda
 
テストを書いてGradleプラグインの開発効率を改善しよう
テストを書いてGradleプラグインの開発効率を改善しようテストを書いてGradleプラグインの開発効率を改善しよう
テストを書いてGradleプラグインの開発効率を改善しようShunsuke Maeda
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介Shunsuke Maeda
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 

Mehr von Shunsuke Maeda (7)

外部環境への依存をテストする
外部環境への依存をテストする外部環境への依存をテストする
外部環境への依存をテストする
 
テストを書いてGradleプラグインの開発効率を改善しよう
テストを書いてGradleプラグインの開発効率を改善しようテストを書いてGradleプラグインの開発効率を改善しよう
テストを書いてGradleプラグインの開発効率を改善しよう
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 

私とOSS活動とPerl