SlideShare uma empresa Scribd logo
1 de 60
2015-05-26 GMOリサーチ 寺田 渉
Facebook: 寺田渉 Twitter: @wa_terada
ボードゲーム翻訳
CakePHP Cookbook翻訳
TED 字幕 翻訳
開発 (PHP/JavaScript/Java/Perl)
0:00+30
PHPの仕様で
初心者がハマりやすいポイントや
知ってると便利な関数を紹介します。
0:30+15
文法編
==
これは NG!!!! が出力される。
なぜ?
<?php
$input = "1abc";
if ($input == 1) { echo "NG!!!!"; }
0:45+15
キャストされるから。
さけるには === を使う。
左右のどちらかが文字列でない場合、
== は危険。
<?php
$input = "1abc";
if ($input == 1) { echo "NG!!!!"; }
1:00+15
empty()
変数が
null , false , 0 , 0.0 , '' , [] , 未定義
なら true になる。
他にもあるが何?
empty(変数)
1:15+15
文字列の '0' が空だと
判定されることを忘れないこと。
$var = '0';
empty($var); //←これは true
1:30+15
文法っぽい関数
range(0, 10000, 5)
0,5,10,...という具合に
10000まで5つ刻みの数列がほしい!
1:45+15
$id = $array[0];
$name = $array[1];
これを下記のように書けます!
list($id, $name) = $array;
2:00+15
配列の +
この結果は違う?
配列の + と array_merge は何が違う?
<?php
$a = ['a' => 1, 'b' => 3, 5];
$b = ['a' => 2, 'c' => 4, 6];
var_export($a + $b);
var_export(array_merge($a, $b));
2:15+30
【$a + $b】
array (
'a' => 1, //先勝ち
'b' => 3,
'c' => 4,
0 => 5,
//先勝ちで6無し
)
→ key/index どちら
でも常に先勝ち
【array_merge($a, $b)】
array (
'a' => 2, //後勝ち
'b' => 3,
'c' => 4,
0 => 5,
1 => 6, //勝手に連番
)
→ key なら後勝ち
index なら連番
$a = ['a' => 1, 'b' => 3, 5];
$b = ['a' => 2, 'c' => 4, 6];
2:45+30
では、これはどうなるでしょう?
<?php
$a = [1,2];
$b = [3,4,5];
var_export($a + $b);
var_export(array_merge($a, $b));
3:15+15
【$a + $b】
array (
0 => 1,
1 => 2,
2 => 5,
)
【array_merge($a, $b)】
array(
0 => 1,
1 => 2,
2 => 3,
3 => 4,
4 => 5,
)
$a = [1,2];
$b = [3,4,5];
※おそらく混乱するので
配列の + はオススメしません。3:30+15
ついでに
array_merge_recursive
下記ではどうなる?
$a = ['a' => ['b' => 1]];
$b = ['a' => ['c' => 2]];
var_export(array_merge_recursive($a, $b));
//[
// 'a' => [
// 'b' => 1,
// 'c' => 2,
// ]
//]
$a = ['a' => 1];
$b = ['a' => 1];
var_export(array_merge_recursive($a, $b));
3:45+30
$a = ['a' => 1];
$b = ['a' => 1];
var_export(array_merge_recursive($a, $b));
答え: ['a' => [1, 1]]
array_merge_recursive は再帰的にマージするものだが、
マージする対象に配列以外があった場合は、
配列に変換 してマージする。
配列への変換を望まないなら CakePHP なら Hash::merge が使える。
4:15+30
関数編
文字列 分割
いろいろ
<?php
$str = "aaa<br/>bbb<br/>ccc";
$res = 【なんでしょう】;
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
期待する結果:
4:45+10
<?php
$str = "aaa<br/>bbb<br/>ccc";
$res = explode("<br/>", $str);
var_export($res);
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
結果:
4:55+05
<?php
$str = "aaa<br/>bbb<br>ccc";
$res = 【なんでしょう】;
期待する結果:
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
5:00+10
array (
0 => 'aaa',
1 => 'bbb',
2 => 'ccc',
)
<?php
$str = "aaa<br/>bbb<br>ccc";
$res = preg_split('/<br¥/?>/', $str);
var_export($res);
結果:
5:10+05
<?php
$str = "aaa<br/>bbb<br>ccc";
$res = 【なんでしょう】;
期待する結果:
array (
0 => 'aaa',
1 => '<br/>',
2 => 'bbb',
3 => '<br>',
4 => 'ccc',
)
5:15+10
<?php
$str = "aaa<br/>bbb<br>ccc";
$res = preg_split('/(<br¥/?>)/', $str,
null, PREG_SPLIT_DELIM_CAPTURE);
var_export($res);
array (
0 => 'aaa',
1 => '<br/>',
2 => 'bbb',
3 => '<br>',
4 => 'ccc',
)
結果:
5:25+05
<?php
$str = "aaa<br/>bbb<br>ccc";
$res = str_split($str, 5);
var_export($res);
array (
0 => 'aaa<b',
1 => 'r/>bb',
2 => 'b<br>',
3 => 'ccc',
)
結果:
5:30+15
array_map
と
array_walk
指定した配列の要素に
コールバック関数を適用する
( http://jp1.php.net/manual/ja/function.array-map.php より)
配列の全ての要素に
ユーザー定義の関数を適用する
( http://jp1.php.net/manual/ja/function.array-walk.php より)
答えはドキュメントの中! ヒント:引数と戻り値
array array_map ( callable $callback , array $array1 [, array $... ] )
bool array_walk ( array &$array , callable $callback [, mixed $use
5:45+30
array_map
array_walk
array array_map ( callable $callback , array $array1 [, array $..
bool array_walk ( array &$array , callable $callback [, mixed $u
そう!
array_map は変更後の新しい配列を作るためのもの
array_walk は自身を書き換えるためのもの
6:15+30
foreach
で
置き換え
$array1 = [1,2];
foreach ($array1 as &$val) {
$val = '書換';
}
$array2 = [3,4];
foreach ($array2 as $val) {
//何か
}
var_export($array1); // ['書換', 4] なぜ!?
var_export($array2); // [3, 4]
6:45+30
$array1 = [1,2];
foreach ($array1 as &$val) {
$val = ‘書換’;
}
$array2 = [3,4];
foreach ($array2 as $val) {
//何か
}
$array1 = [1,2];
foreach ($array1 as &$val) {
$val = ‘書換’;
}
unset($val); //かならずこれが必要
$array2 = [3,4];
foreach ($array2 as $val) {
//何か
}
7:15+15
$array1 = [1,2];
array_walk($array1, function(&$val) {
$val = '書換';
});
//これなら危険は無い。これがオススメ。
$array2 = [3,4];
foreach ($array2 as $val) {
//何か
}
7:30+15
エンコードする
タイミング
これは何がNGか解りますか?
$fh = fopen($path, 'r');
while (($data = fgetcsv($fh, 1000, ",")) !== false) {
array_walk($data, function(&$val) {
$val = mb_convert_encoding($val,'UTF-8','SJIS');
});
// $data を使う処理
}
fclose($fh);
7:45+30
ならOK? まだダメですよね?
$fh = fopen($path, 'r');
while (($line = fgets($fh)) !== false) {
$line = mb_convert_encoding($line,'UTF-8','SJIS');
$data = str_getcsv($line, ",");
// $data を使う処理
}
fclose($fh);
エンコード前に fgetcsv を呼んではいけません。
区切り文字等の認識がエンコード前では正しくできないからです。
ならば
8:15+20
そう。
改行コードが正しく認識できません。
じゃ、どうする?
$fh = fopen($path, 'r');
while (($line = fgets($fh)) !== false) {
$line = mb_convert_encoding($line,'UTF-8','SJIS');
$data = str_getcsv($line, ",");
// $data を使う処理
}
fclose($fh);
8:35+10
そこでストリームフィルタです!
$fh = fopen($path, 'r');
stream_filter_append($fh, 'convert.iconv.utf-16le/utf-8',
STREAM_FILTER_READ);
while (($data = fgetcsv($fh, 1000, ",")) !== false) {
// $data を使う処理
}
fclose($fh);
stream_filter_append($fh, 'convert.iconv.cp932/utf-8',
Shift_JIS を読む場合はこう:
8:45+30
SPL編Standard PHP Library (SPL)
(標準で入っているライブラリ)
http://jp1.php.net/manual/ja/book.spl.php
バグ検出用の例外
LogicException
throwされたらバグだという場合の例外。
つまり、これをキャッチするプログラムは不要だし、
運用中には絶対throwされないようにすべき。
バグを発見しやすくするために仕込む例外はコレ。
if ($data == null) {
throw new LogicException(
"dataがnullの場合はこの関数使えません");
}
9:15+30
LogicException の代わりに
下記の関数作っておくのもオススメ。
https://github.com/waterada/phplib-bug_if
9:45+90
イテレータ
通常、foreach で回すには、
全要素をメモリに保持する必要があるし、
要素に対する制御はループの中に書く。
しかし
イテレータを使うと
要素ごとのメモリ読み込みができたり、
要素の制御をループ外に定義できる。
=メモリに優しく、汎用化しやすい
(身近なものでいうと bash コマンドのイメージ)
イテレータ
11:15+15
SplFileObject
ファイルの1行ずつをイテレータとして扱える。
<?php
$ite = new SplFileObject($path);
$ite->setFlags(SplFileObject::READ_CSV);
foreach ($ite as $line) {
echo $line[0];
}
$ite = null; //close
11:30+15
AppendIterator
イテレータ複数を1つのイテレータとして扱える。
サイズが大きくて array_merge では心配なとき良い。
$ite = new AppendIterator();
$ite->append(new ArrayIterator([1,2,3]));
$ite->append(new ArrayIterator([5,6,7]));
foreach ($ite as $a) {
echo $a;
}
//result: 123567
11:45+60
LimitIterator
イテレータのループ範囲を限定する。上位100件とか。
$ite = new LimitIterator(
new ArrayIterator([1,2,3,4,5,6,7] , 2, 4);
foreach ($ite as $a) {
echo $a;
}
//3456
12:45+15
CallbackFilterIterator
イテレータにフィルタを適用する。
$ite = new CallbackFilterIterator(
new ArrayIterator([1,2,3,4,5,6,7]),
function($current, $key, $iterator) {
return $current % 2 == 0;
}
);
foreach ($ite as $a) {
echo $a;
}
//246
13:00+15
Iterator (インターフェイス)
を implements して、
current(), next(), key(), valid(), rewind() を実装すれば
誰でもイテレータの自作が可能。
ちょっと作ってみましょう。
13:15+15
Iterator (例)
class OreOreArrayIterator implements Iterator {
private $array;
private $i;
public function __construct($array) {
$this->array = $array;
$this->i = 0;
}
public function rewind() { $this->i = 0; }
public function next() { $this->i++; }
public function valid() { return ($this->i < count($this->array)); }
public function key() { return $this->i; }
public function current() { return $this->array[$this->i]; }
}
foreach (new OreOreArrayIterator([1,2,3]) as $a) {
echo $a;
}
//123
13:30+60
PHP5.5 から ジェネレータ構文 が
導入されました。
yield って書くやつですね。
これを使うと
簡単に Iterator が作れます。
14:30+60
yield (例)
function generateOreOreArrayIterator($array) {
foreach ($array as $a) {
yield $a;
}
}
foreach (generateOreOreArrayIterator([1,2,3]) as $a) {
echo $a;
}
//123
簡単ですね!
ただし、 yield で作った Iterator は 巻き戻せません(使い捨て)
ので気をつけて。
14:30+60
公式ホームページは宝の山です!!
http://jp1.php.net/manual/ja/
PHPの公式ホームページは
かなり充実しています。
特に 文法 、 配列 、 文字列 、 SPL まわり
は一度ざっと読んでおくと良いでしょう。
判らなかったら公式ホームページ
を見てみましょう!
15:30+15
ぜひ Facebook 等で
寺田渉 まで
ご連絡ください!!
ご清聴ありがとうございました!

Mais conteúdo relacionado

Mais procurados

PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解するWataru Terada
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話infinite_loop
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Gen-Template-for-Perl
Gen-Template-for-PerlGen-Template-for-Perl
Gen-Template-for-Perlnasneg
 
本当は怖いPHP
本当は怖いPHP本当は怖いPHP
本当は怖いPHPTakuya Sato
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦いKen Gotoh
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかKousuke Ebihara
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Akio Ishida
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDAkio Ishida
 
Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)Arata Fujimura
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 

Mais procurados (20)

PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解する
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Gen-Template-for-Perl
Gen-Template-for-PerlGen-Template-for-Perl
Gen-Template-for-Perl
 
本当は怖いPHP
本当は怖いPHP本当は怖いPHP
本当は怖いPHP
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦い
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
 
Perl logging
Perl loggingPerl logging
Perl logging
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 

Semelhante a PHP基本的関数QUIZ

Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
ZshでデキるプロンプトMaruyama Tetsutaro
 
&& || and or まぜるな危険
&& || and or まぜるな危険&& || and or まぜるな危険
&& || and or まぜるな危険Hisateru Tanaka
 
プログラマがWebデザインについて考えてみた
プログラマがWebデザインについて考えてみたプログラマがWebデザインについて考えてみた
プログラマがWebデザインについて考えてみたEigoro Yamamura
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2Akio Ishida
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~Akabane Hiroyuki
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回Yuma Yoshimoto
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和schoowebcampus
 
2011年12月2日
2011年12月2日2011年12月2日
2011年12月2日nukaemon
 
Log解析の基礎@phpcon2014
Log解析の基礎@phpcon2014Log解析の基礎@phpcon2014
Log解析の基礎@phpcon2014菊池 佑太
 

Semelhante a PHP基本的関数QUIZ (14)

Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
Zshでデキるプロンプト
 
Php apocalypse
Php apocalypsePhp apocalypse
Php apocalypse
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
&& || and or まぜるな危険
&& || and or まぜるな危険&& || and or まぜるな危険
&& || and or まぜるな危険
 
プログラマがWebデザインについて考えてみた
プログラマがWebデザインについて考えてみたプログラマがWebデザインについて考えてみた
プログラマがWebデザインについて考えてみた
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
プログラマ講習第2回
プログラマ講習第2回プログラマ講習第2回
プログラマ講習第2回
 
Okinawapm #1
Okinawapm #1Okinawapm #1
Okinawapm #1
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
 
2011年12月2日
2011年12月2日2011年12月2日
2011年12月2日
 
Log解析の基礎@phpcon2014
Log解析の基礎@phpcon2014Log解析の基礎@phpcon2014
Log解析の基礎@phpcon2014
 
PHP language update 201211
PHP language update 201211PHP language update 201211
PHP language update 201211
 

Mais de Wataru Terada

Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Wataru Terada
 
PHP選んで良かったこと
PHP選んで良かったことPHP選んで良かったこと
PHP選んで良かったことWataru Terada
 
僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていること僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていることWataru Terada
 
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったらWataru Terada
 
CakePHP を使ってよかったこと
CakePHP を使ってよかったことCakePHP を使ってよかったこと
CakePHP を使ってよかったことWataru Terada
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるにはWataru Terada
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げるWataru Terada
 
初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと初めてのTravisCIでハマったこと
初めてのTravisCIでハマったことWataru Terada
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮するWataru Terada
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方Wataru Terada
 
CakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrantCakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrantWataru Terada
 

Mais de Wataru Terada (11)

Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
 
PHP選んで良かったこと
PHP選んで良かったことPHP選んで良かったこと
PHP選んで良かったこと
 
僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていること僕がエンジニアとしていつも考えていること
僕がエンジニアとしていつも考えていること
 
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
 
CakePHP を使ってよかったこと
CakePHP を使ってよかったことCakePHP を使ってよかったこと
CakePHP を使ってよかったこと
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
 
本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる本当のオブジェクト指向は可読性を上げる
本当のオブジェクト指向は可読性を上げる
 
初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
 
CakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrantCakePHP の Cookbook に翻訳貢献する方法と vagrant
CakePHP の Cookbook に翻訳貢献する方法と vagrant
 

Último

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Último (10)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

PHP基本的関数QUIZ