SlideShare a Scribd company logo
1 of 14
Download to read offline
Perlを書くときに
意識していること
2015.01.16
吉祥寺.pm(kichijojipm) #2
About Me
#!/usr/bin/perl -w
use strict;
# 名前
my $name = '増子 良太';
# 名前(ふりがな)
my $name_kana = 'ますこ りょうた';
# 年齢
my $age = 31;
# 誕生日
my $birthday = '1983/7/4';
# 住んでるところ
my $address = '吉祥寺';
# 好きなプログラミング言語
my $fav_language = 'JavaScript';
History
2004年9月   株式会社システム技研 入社

携帯のテスターからサーバーの構築まで幅広く経験。
2007年6月   株式会社GENOVA 入社

MovableTypeを拡張したCMS構築・保守、PHPによるアプリケーショ
ン作成、Androidアプリの作成やテストなども経験。
2014年7月   フリーランスとして活動開始

SixApart社にてMovableTypeの開発のお手伝い、ECサイトの構築支
援、求人サイト構築など会社やプロダクトに縛られずスキルアップを続
けています。
保守から始めたPerl
だからこそ言える!
Perl書くときに
意識していること
▼▼▼▼▼▼▼▼▼▼▼▼▼
my %hash = map { $_ => 1 } @array;
foreach (@array){ print $_ ;}
処理1
処理2
たとえばこんなソースコード
my %hash = [];
foreach my $ret(@array){
$hash{$ret} = 1;
};
foreach my $ret(@array){
print $ret;
}
処理1
処理2
このように書くとPerlっぽくありませんが、
PHPしか読めない人にでもすぐ理解できます。
このようにも書けます
なぜ?
• 複数の処理を1行にまとめて書かない

PHPなど別な言語を読めるけど、、、という人にもわか
りやすく
• mapは1つの処理であればOKだけど、複数の処理をする
のであればforやforeachで代用するとか
• 特殊変数に特別な意味があるのであればわかりやすい変数
名に代入するとか
• 生粋のPerl使いは体が痒くなるかも??
sub func1 {
my ($num1, $num2) = @_;
$num1 + $num2;
}
サブルーチン1
たとえばこんなソースコード
sub func2 {
my ($array) = @_;
shift @$array if ref($array) eq 'ARRAY';
}
サブルーチン2
sub func1 {
my ($num1, $num2) = @_;
return $num1 + $num2;
}
サブルーチン1
このようにも書けます
sub func2 {
my ($array) = @_;
return '' if ref($array) ne 'ARRAY'
my @array = @{$array};
return shift @array;
}
サブルーチン2
• サブルーチンには戻り値を(return文)

サブルーチンの最後の計算結果を戻り値として返す
パターンで書いてあると、計算結果を読む必要があ
る。
• Perlがあまりわからない人でも読めるように!
なぜ?
まとめ
まとめ1
将来メンテナンスする人が
少しでも読み易いコードを意識して書く
たとえば・・・
• Perlを得意ではない人がメンテナンスする必要が出てきた時
ちょっと意識しておくだけで、他の人でも読み易いコードができます。
まとめ2
ソースのかっこよさ < ソースの読みやすさ



メンテナンスする上では

ソースのかっこよさなんて関係ありません。



パッとみて何をしているかがわかることが大事

ご静聴ありがとうございました

More Related Content

Similar to Perlを書くときに意識していること

Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Yuji Otani
 
Wordbeach 2011 hajimeno ippo
Wordbeach 2011 hajimeno ippoWordbeach 2011 hajimeno ippo
Wordbeach 2011 hajimeno ippoSatoshi Kamigaki
 
組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたことSuguru Shirai
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)parrotstudio
 
メディアへの寄稿をやってみて〜きっかけと仕事の流れ
メディアへの寄稿をやってみて〜きっかけと仕事の流れメディアへの寄稿をやってみて〜きっかけと仕事の流れ
メディアへの寄稿をやってみて〜きっかけと仕事の流れsugimoto1022
 
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Yuji Otani
 
Vasily i os-20140403
Vasily i os-20140403Vasily i os-20140403
Vasily i os-20140403Yusuke Arai
 
チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方Wataru Sakashita
 
新卒で即戦力なエンジニアになる
新卒で即戦力なエンジニアになる新卒で即戦力なエンジニアになる
新卒で即戦力なエンジニアになるShota Okutsu
 
最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のことNoriaki Kadota
 
第10回ゼロからはじめるWordPress勉強会(初心者向け)
第10回ゼロからはじめるWordPress勉強会(初心者向け)第10回ゼロからはじめるWordPress勉強会(初心者向け)
第10回ゼロからはじめるWordPress勉強会(初心者向け)kenji goto
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!Yu Tanaka
 
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライド
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライドウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライド
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライドjunnamacom
 
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!Yuka Masaki
 
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたHayashi Yuichi
 
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発優也 田島
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話Shohei Tai
 
Herokumeetup8 growライトニングトーク
Herokumeetup8 growライトニングトークHerokumeetup8 growライトニングトーク
Herokumeetup8 growライトニングトーク淳 竹野
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Tomoki Hasegawa
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組みMasahiro Nishimi
 

Similar to Perlを書くときに意識していること (20)

Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発
 
Wordbeach 2011 hajimeno ippo
Wordbeach 2011 hajimeno ippoWordbeach 2011 hajimeno ippo
Wordbeach 2011 hajimeno ippo
 
組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
メディアへの寄稿をやってみて〜きっかけと仕事の流れ
メディアへの寄稿をやってみて〜きっかけと仕事の流れメディアへの寄稿をやってみて〜きっかけと仕事の流れ
メディアへの寄稿をやってみて〜きっかけと仕事の流れ
 
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
 
Vasily i os-20140403
Vasily i os-20140403Vasily i os-20140403
Vasily i os-20140403
 
チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方
 
新卒で即戦力なエンジニアになる
新卒で即戦力なエンジニアになる新卒で即戦力なエンジニアになる
新卒で即戦力なエンジニアになる
 
最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと
 
第10回ゼロからはじめるWordPress勉強会(初心者向け)
第10回ゼロからはじめるWordPress勉強会(初心者向け)第10回ゼロからはじめるWordPress勉強会(初心者向け)
第10回ゼロからはじめるWordPress勉強会(初心者向け)
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
 
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライド
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライドウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライド
ウェブ開発者がやさしい日本語に取り組んでわかったこと - ウェブでの情報提供とやさしい日本語 発表スライド
 
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
女子にうけるUIはどうやって作られるか?ネイルブックのデザインプロセス大公開!
 
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
 
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
 
Herokumeetup8 growライトニングトーク
Herokumeetup8 growライトニングトークHerokumeetup8 growライトニングトーク
Herokumeetup8 growライトニングトーク
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
 

Perlを書くときに意識していること