こんにちは!M-1 2015, 2016, 2016 準決勝を今更見ました!金城 ( @o0h_ )です
https://www.amazon.co.jp/dp/B01NBACQQPwww.amazon.co.jp
ちょっと遅くなりましたが、掲題の通り先日3.5.3へのアップデートを完了しておりますので、
例によって意訳 + 個人的な感想で振り返ってみます〜
CakePHP 3.5.3 Released — Bakery
こんにちは!M-1 2015, 2016, 2016 準決勝を今更見ました!金城 ( @o0h_ )です
https://www.amazon.co.jp/dp/B01NBACQQPwww.amazon.co.jp
ちょっと遅くなりましたが、掲題の通り先日3.5.3へのアップデートを完了しておりますので、
例によって意訳 + 個人的な感想で振り返ってみます〜
CakePHP 3.5.3 Released — Bakery
こんにちは!2017年12月21日発売の『メダロット クラシックス 20th Anniversary Edition』を買おうかガチで悩んでいる高野(@fortkle)です。
第1作目から第5作目までが収録されており、ヒカルから始まってイッキ、コイシマルと懐かしいストーリーをお楽しみ頂けます。あなたはカブトver.?それともクワガタver.?
さて、本題。
先週末に開催された国内最大のPHPのイベント「PHPカンファレンス2017」。 今年もコネヒトから何名か参加させていただいたので、イベント当日の様子をレポートしたいと思います!
昨年に引き続き、今年もゴールドスポンサーとして、ブースを出展しました。コネヒトが運営しているママリについて、「知ってます!」「奥さんが使っています!」というお声をちらほら頂けたのが非常に嬉しかったです!
(ブースの準備が完了し気合の入るエンジニア陣)
ブース出展に加えて昨年に引き続き、今年もLTをさせていただきました!
例年通りLTではネタ枠が豊富な中、「良いテストデータ、悪いテストデータ」という割と真面目系な内容でお送りしました。詳細は発表資料を貼っておくのでそちらをご覧ください!
PHP7もだんだんと浸透してきたからか、最近のPHPでは「型」を意識した開発をすることが普通になってきました。 新原さんの「型を意識したPHPアプリケーション開発」というセッションではそういった開発への導入部分が丁寧に解説されていて非常にためになりました。
また質疑応答で出ていましたが、「ドメインを表現した型からプリミティブな型への変換」について、コネヒトではデータベースへの出し入れやjsonにシリアライズするケースでCakePHP3の Type
という機構を活用して自動的に変換されるようにしています。
詳細については以前公開した下記ブログが参考になると思うので興味がある方はぜひご覧ください。
次に、今回のカンファレンスで特徴的だったのはDocker関係のセッションでしょうか。それぞれ領域は違えど、Docker関係のセッションが3つありました。 最近コネヒトでも開発環境がVagrantからDockerになり、非常に快適に開発することができています。 こちらについても詳細は以前公開した下記ブログが参考になると思うので興味がある方はぜひご覧ください。
今年も充実した内容のセッションばかりで、参加メンバー一同楽しかったです。 運営スタッフの皆様本当にお疲れ様でした。また参加者の皆様、たくさんブースにお越しいただきありがとうございました!
以上、高野でした!
こんにちは!!今期のアニメは何をみるかまだ決めていない結城(@super_manner)です!!
コネヒト開発部の面々、先日開発合宿なるものに行って参りました。
本エントリーは合宿の様子、成果物をお届けできればいいなと思い執筆しております 🙆
開発合宿でおなじみの土善旅館さんにお世話になりました。 平均して都内から2時間程度で到着します。
初日はまず、旅館の方からの説明と、合宿委員による説明がありました。一通り説明をきいたあと、さっそくもくもく開発タイムの始まりです。 今回利用させていただいたのはこちらの大部屋でした。
晩御飯までみっちりもくもく開発をおこないました。 さて、19時になったのでそろそろ御飯の時間がやってきます!
空腹が満たされたところで、引き続き開発を行いに大部屋へ。 まだ1日目ということもあり、みんな比較的リラックスモードで開発・雑談・お酒を楽しみました!
2日目は好きな時間に起床して、それぞれで開発をスタート!
さて、お腹が減ってきたところで本日のお昼ごはんです。 CTOの鶴の一声で、とんかつに決定しました。秋の気配がぐっと濃くなった昼下がりにてくてくと歩くこと15分。行き先はこちら 💁
とんかつで満腹になったので、徒歩15分はちょうどよい運動になりました。土善旅館がある笹川は自然が多く、 また町の方々も非常に温かい方が多くいらっしゃるのでお散歩中も気持ちがいいです。
腹ごしらえを終えて、またひたすら開発に打ち込みます。 翌日が発表なので最後の追い込みモードな方が多かったですね!
前回と同じく、安達が作ったドカベンv2 で順番を決めました。
成果物に対して各人からコメントを頂いたので資料がある方は資料を添えてお伝えしたいと思います。
今回はAndroidママリアプリの機能改善に繋がるタグViewライブラリを作りました。まだまだ改善する点は多いのですが、なんとか合宿期間内に作りきって一定の成果を収めることができて嬉しいです。今後もアプリ改善に繋がる開発を継続していきたいです。(富田)
@fortkle です!
日頃から開発でUAやRequestHeaderの一部をいじることが多いのですが、公開されているChrome拡張の中で好みのものがなかったので作成しました。
特にURLで影響範囲を限定できる機能が非常に使いやすくて便利です!
アーキテクチャとしては裏側の設定ページで React+Flux Utils を使ってみました。少し整えて Chrome拡張としてストアに公開したいと思います!
開発合宿なので普段業務で書いているのとは別の技術要件を使いたいなと思い、Pythonで最近ハマっている某ゲームの便利ツールを作成しました!!
Djangoを始めとするPythonの様々なフレームワークを組み合わせて作成することで、言語による得意分野みたいなものの片鱗を味わえた気がします。
また、Python書きやすいな〜ッと思ったので日々の雑用を快適にするツールを作るのに使っていきたいです(結城)
SlackのInteractive Message Buttonsの機能を社内ツールに投入したいなとかねてより目論んでおり、雑なbotを作ってみた次第です。
というのを目標とし、「みんなでジャンケンをする」というものをアウトプットとしました。 (金城)
↓demo
CTOのtatsushimです。 インフラ業務の中で、AWS環境における秘匿情報(secret key等)の扱いにおいて以下の課題がありました。
そこで、上記の課題を解決するツールをgolangでつくってみました。 まずは社内で利用して、良さそうであればOSSとして公開したいと思っています!
デザイナーのきよえしです。
私は個人的に「ユーザーさんの課題を解決するwebコンテンツを
自分で作ってみよう」というテーマを持って合宿に挑みました!
その中で初めてCakePHPを学習してみたのですが、2〜3日触ると簡単なwebコンテンツだったら作れるんじゃないかという気にさせられました。
調子に乗って今後もがんばってみようと思います🙌
kichikuchiです。 普段iosのエンジニアをしているんですが、せっかくの機会だったのでwebアプリを作ってみました。 内容は趣味の大相撲に関するもので、node.js, expressを利用しました。 今回は時間の都合でフロントをiosで作成したのですが、次回はreactに挑戦したいと思っています!
ry0_adachiです。 前回の開発合宿で作ったCLIツールの設計があまりにも酷すぎたので設計を見直して修正しました。 あとはくじ引きツールのバージョンアップとかSlack OAuthで遊ぼうとして挫折したりしていました 😇
今回の開発合宿の学びは「事前準備は怠らない」でした。
インフラエンジニアのshnagaiです。 今回の開発合宿では、golangを学びがてら、ECRリポジトリのdockerイメージを削除するツールを作りました。 ※コードは、やってみたレベルなので機会があれば公開しようと思います。
サーバーサイドエンジニアの itosho です。 最近の楽しみは乃木坂46の東京ドーム公演です。 僕はお腹が弱い(Pon Pon Pain)ので、今回の開発合宿ではTokyo Toiletというサービスをつくりました。(まだ途中)
エリアA/ヤグラA-/ホコB+の田村です。 今回の合宿ではmacOSアプリを作ろうと思ったのですが作業を始めて1時間で飽きたのでiOSのビルド時間の短縮化に挑戦してみました。 手段としてはプロジェクトのコードの一部をframework化してCarthageで入れられるようにしました。 framework化したコードはClean Architectureで言うところのDataStore/Entity辺りで、変更の多いViewから一番遠いところを対象としました。 また、framework化することによってData層にPresentation Logicが漏れてこないようにすることも目的だったりします。 CocoaPodsは経験があるのですが、Carthageに対応したframeworkを作ったのが初めてだったのでとても良い経験になりました。
今回合宿するにあたって調整してくれた合宿委員さん達、ありがとうございました!
普段の生活でここまで開発ばかりをする機会は中々持てない人が多いと思うので、
そういった時間が取れたことや、自分含めメンバーがどういう分野に興味を持っているのかがわかって面白かったことなどなど、
実り多き良き3日間でした。
この機会で得たものを、普段自分たちが作っているプロダクトをよりよくするスパイスにしていけたらいいな、と思います。
本エントリーを読んでくださっている皆さんも、もし機会があれば行ってみてください。
そして面白いものができたら発信してくださいね!
土善旅館さん、本当にお世話になりました!
こんにちは。インフラエンジニアの永井(shnagai)です。
コネヒトでは、開発環境に続き、続々と本番サービスにもDockerを導入しています。 今回は、中々運用が大変なcronでスケジュール管理するような定期的なバッチ処理を、Amazon ECSのScheduledTaskを使ってDocker駆動な環境で構築した話です。 他の方法との比較やどのように実現しているのかについて紹介したいと思います。
今回対象とするバッチ処理は、俗に言うスケジュール系のバッチ処理で、毎日00時00分や10分毎にサイクル起動等、事前に定義した時間に正確に動くことが期待されているものです。 ※ジョブキュー形式のバッチだと、AWS BatchやEBのWorkerもしくは、SQS + Cron on EC2で処理するほうがスマートかと思います。
上記要件のバッチを実現する基盤として、下記を検討しました。 基本的には、開発環境はDockerで運用しているのでその資産をうまくいかせるシンプルなアーキテクチャを求めていて、バッチの為だけに新規のインフラ環境を用意するみたいな事はしたくないという前提がありました。 ざっくりですが、pros&consをまとめていたので書いておこうと思います。 ※完全に個人の主観が入っていますので、参考程度に。
特に減点になるような要素なし。
Amazon ECSのScheduledTaskは減点ポイントが特になく、webで運用しているECSの資産と知見も活かせるといった理由で採用が決まりました。 ここでは、Amazon ECSのScheduledTaskで1本のバッチを動かすのに必要なものについて書こうと思います。 このバッチ環境を作るには下記の4つの要素を準備する必要があります。 ECSの用語に慣れていないと複雑に感じるかもしれませんが、一つ一つ見ていけばそんなに難しいものではありません。 ※下記のスライドで、ECSの用語について説明しているので参考にしてもらえるといいかもしれません。
Dockerを本番導入するにあたり得た知見 - Speaker Deck
実際の設定方法は、下記の公式ドキュメントがわかりやすいのでご参照下さい。 http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/scheduled_tasks.htmldocs.aws.amazon.com
デプロイを絡めた全体のアーキテクチャは下記のようなイメージになります。
ステージング環境の例ですが、上の図の青い線の部分を説明するとざっくり下記のような流れになります。
開発環境(Docker)でバッチの開発 ↓ GithubでPR後に、masterマージで自動的にDockerビルド&ECRへデプロイ ↓ 次回のScheduledTask起動時から新規のDockerイメージ(最新のソースコード)でバッチが動く
個人的には、このScheduledTaskの画面は気に入っていてジョブスケジューラ入れずともこの画面が使えるのは中々のメリットだなと思っています。
スケジュールバッチは基本的に、必ずその時間だったり間隔だったりで動くことが期待されているので、エラーがあったら受動的に気づける必要があります。(クリティカルなものであればあるほどリアルタイムの検知は必須になります) アプリケーションのエラーは、弊社だとSentryで取得していますが、Dockerコンテナ起動時のエラー等アプリケーション起動以前のエラーが起きた場合にも、Cloud Watch Logs + SNS + Lambdaを使ってslackにリアルタイムに通知が飛ぶようにしています。 こうすることで、バッチが起動しなかった際は確実に気づける体制を作っています。
Lambdaは初めて触ったのですが、BluePrintという便利なテンプレートが用意されていたので比較的苦労なく実現できました。 コンテナで意図しない標準出力/標準エラー出力があると、下記のようにslackに通知が来ます。
※cloud watch logsにログを送るためには、タスク定義に下記のような設定が必要です。(dockerのログドライバを使う) ※事前にロググループを作成しておかないとコンテナ起動に失敗するので注意が必要です。
http://docs.aws.amazon.com/AmazonECS/latest/APIReference//API_RunTask.htmldocs.aws.amazon.com
今回は、運用が辛くなりがちなスケジュールバッチ(cron)をDocker環境で動かす事例を紹介しました。 Dockerベースにすることで、各環境差異でバッチがこけるリスクを回避しつつ、ジョブスケジューラを構築せずとも、AWS ECS Task Schedulerの見やすいビューワーでバッチを一覧して管理出来るというのは中々おすすめな構成です。エラーに関しても、cloud watch logsで拾えるので、ほとんど開発や構築なしにAWSマネージドサービスにどっぷり使ってバッチの実行環境を作ることが出来ます。 今後もっといいものが出てくるかもしれませんが、Dockerでバッチジョブ実行環境としてはかなり有力な選択肢になるのではないでしょうか。 スケジュールジョブの環境をどうしようか悩んでいる方がいたら一度気軽にお試ししてもらえるといいかもしれません。
コネヒトではコンテナ周りの基盤を整備したりサービス改善を行うエンジニアを募集しています。 少しでも興味もたれた方は、是非気軽にオフィスに遊びにきていただけるとうれしいです。
こんにちは。先日ついにスプラトゥーン2を手に入れて、 日夜練習を頑張っている結城 (@super_manner)です。 毎日google先生で「ガチマッチ 勝てない 自分のせい」とググって枕を濡らしています。
さて、本日CakePHPのマイナーアップデートがありましたので、いつものごとく、ちょっとした所感、追記を添えてお知らせしたいと思います!!
Http\Client
は、非標準のプロパティを持つCookieを解析しなくなりました
Helper::addClass()
は、クラス属性が配列の場合、警告を出力しなくなりました
trim
に渡ったタイミングで警告が出ていたようです$this
を返却しますCake\Cache\Cache::increment
やCake\Cache\Cache::decrement
を使用する際に、durationを0に設定している場合はtimeoutを設定しないようにしました
HtmlHelper::link()
は、fullBaseオプションをサポートするようになりましたText::uuid()
は、random_int
が定義されていればrandom_int
を使用するようになりました
mt_rand
が使用されますDebugger::highlight()
が1行ずれてハイライトされない不具合が修正されました
Http\Client::addCookie()
で追加されたCookieには、パスとドメインが必要ですBakery(CakePHPの公式ブログ)に名前が載りました!やった〜。
修正は先程ご紹介した変更点の1つ目のものです。 実はコネヒトからコントリビューターがでるのは田村(@Utmrer)に引き続き2人目です。 今回は、すごく気合を入れて「よし!なにかOSSに貢献するぞ!!!」と思い立ってIssueを洗いPRを送ったわけではありません。自分が実装している途中に「おや?これはもしかして」と思い、チーム内reviewをしてもらって勇気を出してPRを送ってみました。
いままでOSSにPRを送った経験がなかったので、「こんな些細な事で送っていいのかな?」「英語理解してもらえるかな?」「英語でマサカリとんできそう…」と少し尻込みする気持ちが無かったわけではありません。 ですが、勇気を出しておくってマージされた瞬間に「あ、よかったな。これからも少しでも使っているOSSに貢献していきたいな」という気持ちが湧いてきたので、どんな小さな変更でも、取りあえずPRしてみることをおすすめします! また、意外と拙い英語でも受け入れてもらえるのだなとわかったことも、今後別のものにもチャレンジしてみようと思えたので、私にとって大きい収穫でした。 また、今回の修正箇所はCookie関連の場所だったので、改めて現在のCookieプロパティ関連の知見を深め、復習することができました。
社内にはCakePHPだけでなく、さまざまな言語やOSSへ精力的に貢献している仲間がいるので、今後も良い刺激を受けつつちょっとずつ普段自分が使用しているツール等に恩返しをしていけたらとても素敵だな、と思いました。(ちなみに、はじめて記念としてPRのページはブックマークしました :innocent:)
ありがとうって言ってもらえてとっても嬉しかったです(*´ڡ`●)
CakePHPアップデート連載、今回はちょっとしたお気持ちを添えた投稿となりましたがいかがだったでしょうか。 次回は最近CakePHPプラグインを作成していた弊社エンジニアいとしょ(@itosho) がお送りいたします!!
こんにちは〜。先の投稿では幽☆遊☆白書を読んだと書きました、あれから少し日が空いたのですがその間にONE OUTSを読んだ次第です金城 (o0h_)です。
主人公がエゲツない天才で大活躍〜!って、やっぱり良いもんですね!!
[まとめ買い] ONE OUTS(ヤングジャンプコミックスDIGITAL)
さて、気づいたらCakePHPは3.5時代に突入!!しておりまして、
コネヒトでは3.4.12→3.5.0 →3.5.1へとアップデートを完了させております。
※ to 3.5.0は @itosho がやってくれました 💯
今回のエントリーでは、
をしてみようと思います。!
続きを読む