Kaigi on Rails 2022で発表した「システム開発を支えるメタプログラミングの技術」のスライドです https://kaigionrails.org/2022/talks/hogucc/
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
こんにちは。SmartHRでRails顧問業をしているwillnet です。以前、SmartHRでのメタプログラミングRuby読書会と、その成果物というエントリを(kinoppydさんが)書いていました。今回のエントリはその続きの話です。 実際に手を動かすと身につく 上記エントリでは メタプログラミングRuby 第2版の読書会を、単に本を読むだけでなく、毎週新しい問題を作り参加者に解いてもらう、という流れで開催したことを紹介しました。 Rubyによるメタプログラミングは、普段の仕事ではなかなか使う機会がないテクニックも多く*1、一回本を通読しただけですべてを覚えるのは難しいと感じています。しかし、その読書会では実際に手を動かして解く問題を用意したため、通常の読書会よりも内容が身につく度合いが大きかったのではないか、と感じました。 いい問題があるのでもっと活用したいぞ せっかく作った問題を活
エンジニアのkinoppydです、お久しぶりです。 今日は社内メタプログラミングRuby 第2版読書会を開催した話と、その成果物に関して共有しようと思います。 SmartHR社内での勉強会 社内では、いくつかの勉強会や読書会が開催されています。業務で必要な知識をみんなで揃って学習する目的であったり、単に有志で集まって自分たちの力を底上げするためにやっていたり様々な形態のものがあります。例えば直近では、大規模スクラムを実践するために、大規模スクラム Large-Scale Scrum(LeSS) アジャイルとスクラムを大規模に実装する方法をテキストにスクラム勉強会をCTOのmasato_serizawaが開いていたり、フロントのコードを書くときのメンタルモデルを学ぶためにDan AbramovのJust JavaScriptを毎週翻訳して参加者で共有する会を、フロントエンジニアのnabeli
今回、BEAR.Sundayの作者の郡山さんと一緒に600超のPHPファイルに名前空間を付与しました。小宮山+郡山のコンビで、チームko[r|m]iyamaです。その取り組みを詳しく紹介します。 専用ライブラリを作成し、メタプログラミングで対応しました。郡山さんがcomposer, githubでライブラリを公開しているので、ぜひのぞいてみてください。 名前空間がない同じ名前のファイルがたくさん弁護士ドットコムのサイトは、フレームワークにYii1を利用しています。10年以上運用されているので、PHPに名前空間が導入される前のコードもたくさんあります。 そういったclassはYii1の疑似名前空間での参照や直接classでrequireで呼び出されていました。そのためIDEで補完ができかず、修正範囲が探しづらくなっていました。 Yii::import('application.control
半年くらい前にPHPStan静的解析をはじめました。 徐々に対象ファイルを増やし、現在では2000超のファイルをスキャンしています。 level0(不明なclass、関数の参照などの基本的なチェック)から段階的に厳しくして、level2(未知の全ての関数のチェック、PHPDocの検証)に上がります。 レガシープロジェクトにありがちな名前空間がない、PHPDocがないといった問題を、nikic/PHP-Parserを武器に乗り越えてきました。 PHPDocで補いきれない部分は、自作のYii1フレームワーク用のPHPStan拡張で解析しています。 レガシープロジェクトで、静的解析を進めてきた方法を紹介します。
※この記事は、CyberAgent PTA Advent Calendar 2020の24日目の記事です。 株式会社AbemaTV ビジネス開発本部 で広告システムのエンジニアをしています @shunta-furukawa です。 今日はクリスマスイブですね。メリークリスマスイブ!! はじめに さて、AJA SSPとその技術について、でも触れられていましたが、サイバーエージェントで作られるシステムで Go言語が用いられることは多いです。 Go言語は、他の言語と比べて 言語仕様がシンプルなためハイパフォーマンスを出しつつも 扱いやすいために人気がある言語だと思います。反面、抽象化された賢い記法などがなく、記述量が多い言語でもあると思います。 書いていると気付いたらもう夜に... どうにか実装スピードをあげたい... そんな時に、go generate と Mustacheと YAML を使っ
この記事は GMO ペパボデザイナー Advent Calendar 2020 9 日目の記事です。 デザイン部でデザインエンジニアを自称している gyugyu です。最近自宅の近所に肉屋を見つけたので家焼肉をやっています。 現在ペパボでは Inhouse というデザインシステムを策定しており、これはコンポーネントスタイルライブラリやコンテンツ作成ガイドラインを含む、比較的広義のデザインシステムです。このコンポーネントスタイルライブラリの技術的リードを、私は業務の一環として行っています。 はじめに - ペパボのサービスとウェブデザインの難しさ ペパボはこれまで様々な分野で様々なサービスを提供してきました。各サービスのウェブデザインの方針として、提供者がペパボであるということを強調せず、サービスごとに違う手触りを持つようになっています。このサービスデザインの方針ゆえに、 Bootstrap
本稿はC# Tokyo オンライン LT 大会 2021/01にて発表した「C#メタプログラミング概略 in 2021」の発表内容を文書化したものです。 発表時のスライドは以下に公開しています。 C#メタプログラミング概略 in 2021 またサンプルコードは以下にすべて公開しています。 https://github.com/nuitsjp/MetaprogrammingOverviewIn2021 Introduction さてC#9.0のリリースとあわせて、Source Generatorがリリースされましたね。昨今、一部でメタプログラミングが活性化しているように、個人的には感じています。 そこで本項では、C#で利用可能な代表的なメタプログラミング手法について どういったものが存在し どういうときに何をつかえばいいのか? その大枠を整理してみました。 Attention! 本稿は、可能
「メタプログラミング」とは何のことでしょうか? これはコードを書くことやより効率よく仕事をするといったことよりも、 むしろそれらの 手順 のことを意味するために我々が思いついた総称です。 この講義ではコードをビルド、テストし、また依存関係を管理するためのシステムについて見ていきます。 日々の学生生活にこれらはあまり重要ではないように思えるかもしれませんが、 インターンシップで大きなコードベースを扱うようになったりひとたび「実世界」に足を踏み入れると、これらを毎日目にすることになります。 なお「メタプログラミング」とは「プログラムを操作するプログラム」 を意味することもありますが、これは本講義で使う定義ではありません。 ビルドシステム LaTeX で論文を書くとき、論文を生成するために実行するコマンドはなんでしょうか? ベンチマークを実行し、プロットし、プロット結果を論文に挿入するためのコマ
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く