Contenu connexe Similaire à 私とOSS活動とPerl (20) Plus de Shunsuke Maeda (7) 私とOSS活動とPerl3. 3
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
4. 4
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
10. 10
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
18. 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. 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. 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;
22. 会社 <- GitHub -> 自宅
- 家でコード書いて仕事で楽したい
- 正式に会社で使いたい
- 当時知った Git と GitHub
=> GitHubに公開
github.com/duck8823/pdbc-gen (archived)
github.com/duck8823/pdbc-manager
22
23. モジュールの配布
- GitHub リポジトリからインストール
- GitHub は tarball をダウンロードできる
- cpanm は tarball からインストールできる
23
> cpanm https://github.com/<owner>/<repo>/tarball/<ref>
個人的に配布するだけなら十分
25. CPAN::Author になった
- CPAN::Author になりたくて作った
なにか称号が欲しかった(3年目)
- github.com/duck8823/Slack-RTM-Bot
- Slack の RTM ( Real Time Messaging ) API
を利用した Bot を作るためのライブラリ
25
> cpanm Slack::RTM::Bot
26. 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;
27. 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;
- インスタンスの生成
28. 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;
- 条件とアクションを追加
29. 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;
- 条件
- 正規表現が利用可能
30. 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;
- 実行する関数
31. 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の開始と終了
34. Issue / Pull Request の内容
- README / ドキュメント修正
- バグ
- Deprecated / New な API
- 知らなかった構文
34
スキル・知識の向上
36. 36
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職活動 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
45. 45
Agenda ( 私とOSS活動とPerl )
├─ 0. 学生時代
│ └─ 生命科学 と Perl
├─ 1. 新卒時代
│ ├─ Java と Perl
│ └─ CPAN::Author
├─ 2. 転職活動
│ ├─ Perl と 技術カンファレンス
│ └─ 転職 と OSS
└─ 3. OSS と 個人プロジェクト
├─ 今作っているもの
└─ OSS と世界
55. JetBrains Open Source license
- JetBrains All Products Pack が利用可能
- IDEA などのツール
- $249.00 / 1st year => 無料
- 対象: Open Source プロジェクト
- 3ヶ月以上継続的に活動している
- コミッター / メインコントリビューター
- 個人プロジェクトでも可能
55
57. OSSは優遇される
- GitHub
- 無料枠は private repoに制限あり
- Travis CI / CircleCI
- OSS は無料
- Coveralls(カバレッジの記録 )
- OSS は無料
- その他静的解析サービスなど
57
59. まとめ
- OSSは様々な場所で利用されている
- 例. 生命科学分野での研究
- OSSがなければ開発できない
- ソースを公開することで様々なきっかけ
- スキル向上 / 転職 / 勉強会 etc.
- CPAN に公開するとフィードバック増えた
- 世界はOSS開発者に優しい
59