SlideShare une entreprise Scribd logo
1  sur  57
PSR-1 と PSR-2 を
5分でざっくり理解する
2016-01-13 PHP BLT #2
GMOリサーチ 寺田 渉
Facebook:
twitter:
github:
寺田渉
@wa_terada
waterada
自己紹介(仕事)
- PHP (CakePHP) を主に使って開発
- 継続的インテグレーション
- github + git flow で運用
- PHPUnit で カバレッジ 100%
- Behat (Selenium Driver 経由の画面テスト) 利用
- vagrant で開発環境構築
自己紹介(趣味)
CakePHP 公式ドキュメント 翻訳
自己紹介(趣味)
ボードゲーム 翻訳
自己紹介(趣味)
TED 翻訳
プログラミング & 翻訳
大好き人間です
自己紹介
CakePHP に issue を立てて、
修正を pull request してみた
という記事を Qiita で公開致しました。
コーディングスタイル違反 の指摘が
結構ありまして、今一度、
PSR-1, PSR-2 を復習しておこう
と思った次第です。
PSR-1 基本コーディング規約
PSR-2 コーディングスタイル
今日、伝えたいこと!
サクッと理解してしまおう。
これから問題を出します。
2つの書き方が出ますので、
1 番が PSR 準拠 だと思ったら
手を挙げてください。
で、今日のルール
PSR-1
基本コーディング規約
まずは
<?php
$text = "abc";
どっちが準拠?
<?
$text = "abc";
1. 2.
<?php
$text = "abc";
どっちが準拠?
1.
<?php か <?= のみ可!
どっちが準拠?
1.
2.
PHP ファイルは...
BOM付き UTF-8
BOM無し UTF-8
どっちが準拠?
PHP ファイルは...
BOM無しで!
2. BOM無し UTF-8
<?php
$aaa = 1;
どっちが準拠?
<?php
$aaa = 1;
define('AAA', 1);
1. 2.
aaa_config.php
<?php
define('AAA', 1);
aaa_define.php
aaa.php
どっちが準拠?
呼んだだけで動く(副作用有)系 と、
宣言系 は一緒のファイルに書いちゃダメ。
1.
<?php
$aaa = 1;
aaa_config.php
<?php
define('AAA', 1);
aaa_define.php
class xAbc extends ...
どっちが準拠?
class XAbc extends ...
1.
2.
どっちが準拠?
クラス は 大文字始まり!
class XAbc extends ...2.
public function getValue()
どっちが準拠?
public function get_value()
1.
2.
どっちが準拠?
メソッド は 小文字始まりのキャメル。
public function getValue()1.
const MAX_VALUE = 1;
どっちが準拠?
const maxValue = 1;
1.
2.
どっちが準拠?
定数 は 大文字!
const MAX_VALUE = 1;1.
PSR-2
コーディングスタイル
次に
$a = TRUE;
どっちが準拠?
$a = true;
1. 2.
どっちが準拠?
予約語 は 小文字で !
$a = true;
2.
public function getValue()
どっちが準拠?
public function getValue()
1.
2.
^^^^ スペース4つ でインデント
^^^^ TAB でインデント
どっちが準拠?
インデント は 半角スペース で!
1. public function getValue()
^^^^ スペース4つ でインデント
}[EOF]
どっちが準拠?
}
[EOF]
1.
2.
ファイルの末尾に改行なし
ファイルの末尾に改行あり
どっちが準拠?
末尾の改行 必須!
}
[EOF]
2.
ファイルの末尾に改行あり
namespace AaaBbb;
use AaaCcc;
class Ddd extends ...
どっちが準拠?
namespace AaaBbb;
use AaaCcc;
class Ddd extends ...
1.
2.
← 空白行
← 空白行
← 空白行
どっちが準拠?
namespace、use、class の間には
空白行!
1.
namespace AaaBbb;
use AaaCcc;
class Ddd extends ...
← 空白行
← 空白行
class Foo
{
public function get()
{
どっちが準拠?
class Foo {
public function get() {
1.
2.
どっちが準拠?
クラス, メソッド の { の前では 改行!
1. class Foo
{
public function get()
{
if ($aaa)
{
どっちが準拠?
if ($aaa) {
1.
2.
どっちが準拠?
if の { の前では改行 しない!
if ($aaa) {2.
$f = function()
{
どっちが準拠?
$f = function() {
1.
2.
どっちが準拠?
クロージャ の { の前では改行 しない!
$f = function() {2.
$a = function() { return 1; };
どっちが準拠?
1.
2.
$a = function() {
return 1;
};
どっちが準拠?
クロージャの { と } が 同じ行ではダメ!
2.
$a = function() {
return 1;
};
public static function is()
どっちが準拠?
1.
2.
abstract public function is();
static public function is()
public abstract function is();
どっちが準拠?
この順 で!
public static function is()1.
abstract public function is();
if ($a) {
どっちが準拠?
1.
2. if($a){
どっちが準拠?
空白必須!
if ($a) {1.
for ($i = 0 ; $i < 3 ; $i++) {
どっちが準拠?
1.
2. for ($i = 0; $i < 3; $i++) {
どっちが準拠?
; の前 に空白 不要!
2. for ($i = 0; $i < 3; $i++) {
$a = function ($a, $b) use ($c) {
どっちが準拠?
1.
2.
$a = function($a, $b) use($c) {
どっちが準拠?
クロージャの function, use の前後 に
空白 必須!
$a = function ($a, $b) use ($c) {
1.
class A extends B implements
C,
D
{
どっちが準拠?
1.
class A
extends B
implements C, D
{
2.
どっちが準拠?
class, extends, implements は
絶対に 同じ行 !
interface を改行で書くなら1行1つ!
(※改行せずに全てを1行にしてもいい。)
class A extends B implements
C,
D
{
1.
public function abc(
$a, $b)
{
どっちが準拠?
1.
public function abc(
$a,
$b
) {
2.
どっちが準拠?
public function abc(
$a,
$b
) {
2.
複数行にするなら 1行につき1引数まで!
$array = array_map(
function ($arg) use ($var) {
// ...
},
$array
);
どっちが準拠?1.
$array = array_map(function ($arg) use ($var) {
// ...
}, $array);
2.
どっちが準拠?
クロージャは 必ず改行することになる ので
上記のようなパターン になる!
$array = array_map(
function ($arg) use ($var) {
// ...
},
$array
);
1.
switch ($expr) {
case 1:
echo 'A';
// no break
case 2:
case 3:
echo 'B';
break;
}
どっちが準拠?
1. 2.
switch ($expr) {
case 1:
echo 'A';
case 2:
case 3:
echo 'B';
break;
}
どっちが準拠?
空でないcase でわざと breakしない なら
その旨の コメント必須 !
switch ($expr) {
case 1:
echo 'A';
// no break
case 2:
case 3:
echo 'B';
break;
}
1.
以上、ご静聴ありがとうございました。
<?php か <?= のみ
BOM無し UTF-8
副作用有無でファイル分ける
大小文字: クラス名
大小文字: メソッド名
大小文字: 定数名
大小文字: true/false/null
インデント
ファイル末尾の改行
namespace 周りの空行
{}の改行: クラス/メソッド
Facebook:
twitter:
github:
寺田渉
@wa_terada
waterada
{}の改行: if
{}の改行: クロージャ {
{}の改行: クロージャ }
static/abstractの位置
前後の空白: if
前後の空白: for
前後の空白: クロージャ
複数行: クラス
複数行: 引数
複数行: 引数でクロージャ
switch でコメント必須
参考情報:
• 承諾された PSR が置いてある公式github
• PSR-1 (英語)
• PSR-2 (英語)
• 上記を翻訳してくれているサイト
(infinite loop様の技術ブログ)
• PSR-1 (日本語)
• PSR-2 (日本語)

Contenu connexe

Tendances

FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 

Tendances (20)

バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのかLaravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 

En vedette

Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
 
第7回こども病院移転計画調査委員会資料
第7回こども病院移転計画調査委員会資料第7回こども病院移転計画調査委員会資料
第7回こども病院移転計画調査委員会資料
f_kodomo
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
 

En vedette (18)

【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料
【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料
【ハンズオン】初めてのUnityで作る「3D野球盤」_"8a1"20150204発表資料
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
traitを使って楽したい話
traitを使って楽したい話traitを使って楽したい話
traitを使って楽したい話
 
東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜
東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜
東京から沖縄に移住したからこそわかるクラウドとコミュニティの有り難み 〜人はもっと自由になれる〜
 
Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話Laravelのeloquent だけ入れた話
Laravelのeloquent だけ入れた話
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
第7回こども病院移転計画調査委員会資料
第7回こども病院移転計画調査委員会資料第7回こども病院移転計画調査委員会資料
第7回こども病院移転計画調査委員会資料
 
はじめて作ったアプリが10,000ダウンロード達成したから自慢する
はじめて作ったアプリが10,000ダウンロード達成したから自慢するはじめて作ったアプリが10,000ダウンロード達成したから自慢する
はじめて作ったアプリが10,000ダウンロード達成したから自慢する
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話
 
DMMの闇に触れた話
DMMの闇に触れた話DMMの闇に触れた話
DMMの闇に触れた話
 
Trait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみるTrait とは? その使い道を考えてみる
Trait とは? その使い道を考えてみる
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
コンテンツ作りの三原則
コンテンツ作りの三原則コンテンツ作りの三原則
コンテンツ作りの三原則
 

Similaire à PSR-1 と PSR-2 を 5分でざっくり理解する

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
noldor
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
 
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakadaPhpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakada
Junpei Nakada
 
symfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワークsymfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワーク
Katsuhiro Ogawa
 

Similaire à PSR-1 と PSR-2 を 5分でざっくり理解する (20)

技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
PHP language update 201211
PHP language update 201211PHP language update 201211
PHP language update 201211
 
JavaScript 非同期処理 入門
JavaScript非同期処理 入門JavaScript非同期処理 入門
JavaScript 非同期処理 入門
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)アルゴリズム+データ構造勉強会(8)
アルゴリズム+データ構造勉強会(8)
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
Gaucheでマクロを書こう
Gaucheでマクロを書こうGaucheでマクロを書こう
Gaucheでマクロを書こう
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
Cakephp api
Cakephp apiCakephp api
Cakephp api
 
Phpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakadaPhpmatsuri2011 LT j_nakada
Phpmatsuri2011 LT j_nakada
 
symfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワークsymfony 1.2を支えるサブフレームワーク
symfony 1.2を支えるサブフレームワーク
 
Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 

Plus de Wataru Terada

CakePHP を使ってよかったこと
CakePHP を使ってよかったことCakePHP を使ってよかったこと
CakePHP を使ってよかったこと
Wataru Terada
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
Wataru Terada
 
初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと初めてのTravisCIでハマったこと
初めてのTravisCIでハマったこと
Wataru Terada
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
Wataru Terada
 
デグレを防ぐテストの書き方
デグレを防ぐテストの書き方デグレを防ぐテストの書き方
デグレを防ぐテストの書き方
Wataru Terada
 

Plus de Wataru Terada (11)

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

Dernier

Dernier (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

PSR-1 と PSR-2 を 5分でざっくり理解する