タグ

ブックマーク / tech.quartetcom.co.jp (10)

  • Symfony3.4でLiipFunctionalTestBundleを使って機能テストを書く方法 | QUARTETCOM TECH BLOG

    Symfony Advent Calendar 2017 6日目 の記事です。 昨日は弊社の澤井による Symfony4をインストールして”Hello World”を表示させるまでの手順 でした。 先月末、ついにSymfony3.4とSymfony4がリリースされましたね! インストール方法やディレクトリ配置もガラッと変わり、なんだか新鮮な感じがします。 さて、最新のSymfony環境で開発するときにも、テストは欠かせません。 テストと言えば機能テストを書く時のもはや定番の便利バンドル、LiipFunctionalTestBundle があります。 Symfony2.xでLiipFunctionalTestBundleを使う場合の記事は既にあるのですが、 LiipFunctionalTestBundleを使ってファンクショナルテストで楽をする SymfonyアプリでDoctrineの継承と

    Symfony3.4でLiipFunctionalTestBundleを使って機能テストを書く方法 | QUARTETCOM TECH BLOG
    polidog
    polidog 2017/12/06
  • 新入社員 コード設計の改善体験談 | QUARTETCOM TECH BLOG

    10月に入社した開発部の澤井です。現在、新人研修を受けています。カルテット開発部では、新人一人に対して教育担当者が二人もつきます。(とても贅沢です) ところで、皆さんはコード設計についてどのような考えをお持ちでしょうか。私は現在、新人研修を通してより良いコード設計について学ぶ日々ですが、残念ながら「これが良いコード設計です」と言えるだけの知識はまだありません。 そこでエントリーでは、新人研修で取り組んだ問題を例にして、実際に自分のコードがどのように変化していったのかを書くことで、私が新人研修を通して学んだこと、考えたことをお伝えできればと思います。 取り組んだ問題:「群島の宝探し」 これは、教育担当の後藤が作成したオリジナル問題です。大まかなルールは以下のとおりです。 群島はスタートとゴール、およびA島〜E島の5つの島からなる プレイヤーは1回〜複数回サイコロを振り、スタートからゴールを

    新入社員 コード設計の改善体験談 | QUARTETCOM TECH BLOG
    polidog
    polidog 2017/11/24
  • 明示的で小さなソフトウェア開発 / 素早いリリースサイクル | QUARTETCOM TECH BLOG

    カルテット開発部の後藤(@hidenorigoto)です。今回は、カルテットでの開発プロセス寄りの取り組みと、ちょっとしたプラクティスを紹介します。 (いきなり題を読みたい方は、見えてきたことへ飛んでください。) プロローグ とある企業の、とある開発現場の日常風景 プログラマー「そろそろ #3396 のプルリク、マージして頂きたいんですけどー」 レビュアー「ごめんごめん、今日見とくから!」 : 3日後の朝礼にて プログラマー「#3396 のプルリク、見ていただけました?」 レビュアー「あー、あのプルリク、チラ見したんですけどすごく育っちゃってますよね・・・、なかなか腰を落ち着けて見る時間とれなくて 」 プログラマー「あれをマージしていただかないと、後続の作業を進められないんですよー。なんとかお願いします」 レビュアー「あー、はい(と言われても・・・)。なんとか小さいPRに分割ってできませ

    明示的で小さなソフトウェア開発 / 素早いリリースサイクル | QUARTETCOM TECH BLOG
    polidog
    polidog 2017/08/22
  • Table Driven Testから考える設計の改善 | QUARTETCOM TECH BLOG

    はじめに 最近はプライベートではGoのコードを書いていることが多いのですが、GoではTable Driven Testというやり方が知られています。 このテストコードの書き方が個人的にとても分かりやすく気に入っているので、PHPでテスト書く時も参考にしています。 Table Driven Testを意識してテストコードを書くようにしてから、コードレビュー時に「テストが分かりやすくなった」と言ってもらえたりすることもあったので、ご紹介したいと思います。 Table Driven Testとは Goの公式Githubリポジトリで紹介されているテスト手法の一つです。 一般的には「Data Driven Test」や「Parameterized Test」とも呼ばれているみたいで、特に真新しいしいやり方ではないようです。 PHPのBDDテストフレームワークであるBehatでも、テーブル形式のテスト

    Table Driven Testから考える設計の改善 | QUARTETCOM TECH BLOG
    polidog
    polidog 2017/05/16
  • Deployer + CircleCIでデプロイを自動化する | QUARTETCOM TECH BLOG

    新年明けましておめでとうございます、永井です。 年も「カルテットコミュニケーションズ技術ブログ」共々頑張っていきたいと思いますので、宜しくお願い致します。 はじめに カルテット社内におけるデプロイツールのデファクトスタンダードは、Capistranoです。 機能的には特に不満はないのですが、たまに手の込んだことをやろうとすると途端に躓いてしまった経験が何度かあり、出来ればアプリケーションで利用しているプログラミング言語で良いツールがないかなと思っていました。 そこで今回はDeployerを試してみました。 今回のゴール シンプルなPHPプロジェクト(Silexベース)をDeployerでデプロイする CircleCIを利用して、 特定ブランチが更新された時に自動的にデプロイする Deployerについて DeployerはPHP製のとてもシンプルなデプロイツールです。 公式サイトを見る

    Deployer + CircleCIでデプロイを自動化する | QUARTETCOM TECH BLOG
  • Doctrineで混同しがちな cascade={"remove"}、 onDelete="CASCADE"、 orphanRemoval=true について整理してみる | QUARTETCOM TECH BLOG

    Doctrineで混同しがちな cascade={"remove"}、 onDelete="CASCADE"、 orphanRemoval=true について整理してみる Symfony Advent Calendar 2016 22日目の記事です。 はじめに Doctrineは多機能で私も開発においてはたいへん便利に使っています。反面、多機能がゆえにどの機能が何を提供してくれるのか把握できていないために苦労することもしばしばです。 ここでは私がいつもどれがなにを示すのかわからなくて毎回ドキュメントを見ながら使っていたcascade={"remove"}、onDelete="CASCADE"、orphanRemoval=trueの記述がもたらす各振舞についてこの場を借りて整理してみたいと思います。 前提 エンティティとしてUserとProfileがあり、UserがProfileを1つ所有し

    Doctrineで混同しがちな cascade={"remove"}、 onDelete="CASCADE"、 orphanRemoval=true について整理してみる | QUARTETCOM TECH BLOG
  • マッピング/変換フレームワークとしてのSymfony | QUARTETCOM TECH BLOG

    はじめに WebアプリケーションフレームワークとしてのSymfonyには、フォームやORM、バリデーションetc…といった機能があります。今回は少し視点をずらして、これらの機能の中から、アプリケーション内の何かと何かの「あいだにあるもの」に着目してみます。実は、この「あいだにあるもの」たちの機能をうまく使うことで、アプリケーションコードが想定するデータの形を整えることができます。 例えば、YAMLから設定データを読み込んで、PHPの連想配列で扱うプログラムを記述しているとしましょう。設定データを扱うあらゆるメソッドで、その都度キーの存在有無をチェックしているようなコードを想像してみてください。とてもイヤな感じですね。このようなコードがあったら、単純に無駄なコードが多いという表面的な問題だけでなく、正しいデータの有り様が定まっていないという問題が潜んでいる可能性が大いにあります。そしてこの種

    マッピング/変換フレームワークとしてのSymfony | QUARTETCOM TECH BLOG
  • SymfonyのExpressionLanguageでユーザー関数を使う | QUARTETCOM TECH BLOG

    Symfony Advent Calendar 2016 11日目の記事です。 昨日は @kalibora さんの Symfony Console のコマンド名を自動的に Monolog のログに出そう でした。 Symfony\Component\ExpressionLanguageとは 式言語と訳されますが、一言で言うと条件式を評価することができるライブラリです。 Symfony ExpressionLanguage公式ドキュメント 通常、条件式の内容を書く人として想定されているのはプログラマではなくユーザーです。ユーザー(エンドユーザーなり管理者なり)が直接条件式を編集できることでいちいちプログラマの手を煩わせる必要がないという利便性があり、生のPHPコードを入力させてevalするのに比べて、 できることを制限しているため に安全に実行することができます。 例えば下記のようなコードを

    SymfonyのExpressionLanguageでユーザー関数を使う | QUARTETCOM TECH BLOG
    polidog
    polidog 2016/12/15
    symfony]]
  • Symfony/Workflowコンポーネントの紹介 | QUARTETCOM TECH BLOG

    この記事は Symfony Advent Calendar 2016 15日目の記事です。 はじめに ステータスを管理する時などに便利なSymfony/Workflowコンポーネントを紹介したいと思います。 インストール Composerで楽々インストール出来ます。

    Symfony/Workflowコンポーネントの紹介 | QUARTETCOM TECH BLOG
  • 3年育てたSymfonyプロジェクトの現状 | QUARTETCOM TECH BLOG

    はじめに カルテットで開発しているサービスLisketは、2014年始めにSymfony2ベースに置き換えて以来、3年間Symfonyを使い続けています。この記事では、カルテットで3年間育てたSymfonyプロジェクトの現状の数値や、現場で感じている課題などを整理してみました。Symfonyに限らず、同じようなプロジェクトの悩みを抱えている方々と、苦労しているポイントを分かち合えれば幸いです。 プロジェクトの規模 LisketのメインのSymfonyアプリケーション、バックエンドのアプリケーション、および自社開発の独立コンポーネントを合わせたプロジェクトの規模は、2016年12月の時点で以下のとおりです。 ソースコード行数 PHP:38万行 (*1) JavaScript:6万行+α Symfonyバンドルの数:37(メインアプリ)、11(バックエンドアプリ)、+α 独立コンポーネントの数

    3年育てたSymfonyプロジェクトの現状 | QUARTETCOM TECH BLOG
  • 1