PHPのインストールは皆さんどうやっているでしょうか?
最近ですとDockerイメージを使ったり、Linuxディストリビューションのパッケージを使ったり、Homebrew使ったり、XAMPP使ったりなど、
配布されたバイナリを使うことが多いでしょうか。
PHPはC言語でできています。そのため、C言語をコンパイルする、という作業が必要です。
上述したバイナリとは、コンパイルされた成果物を指します。
実は、PHPのコンパイルは、手元でも行えてしまいます。
色々なツールが必要ですが、一つ一つ解説します。
PHPのコンパイルができるようになると、PHPへの理解が一つ深まります。
そういうわけで、コンパイルをしてみませんか?
アブストラクトマシマシ・シンタックス少し・ツリーマシマシ。このような呪文を見かけたことはありませんか。そう,二郎系ラーメンです。この呪文を「コール」と呼び,ラーメンの着丼前のトッピングとしてヒアリングされます。一見,二郎系ラーメンのコールは複雑そうに見えますが,ある一定の法則性があります。そしてスタッフは法則性に基づいて解釈し,ラーメンにトッピングをします。似たようなのを見たことがありますね。そう,お察しの通りプログラミング言語の構文解析器です。例えばramen(1, 2)という構文はramenという関数をコールし,1と2という引数を与えます。つまりトッピングです。このようにramenという関数の引数は 2つで…といった意味を与えるのが構文解析器です。
本トークでは,PHPで構文解析器で専らよく使われるAST解析を実装するにはどうしたらよいか,二郎系ラーメンのコールを題材として解説します。
近年、急速に"(コードの)質と(それの高さからくる開発)スピード"が注目されるようになってきました。
一方で「何故、"質とスピード"を求めるのか」に対するお話はあまり見かけません。
このトークでは「孫子の兵法」から見た「"質とスピード"は何のために必要なのか」、「"質やスピード"は本当に必要なのか」についてお話します。
このトークで得られる知見
このトークで話さない事
DDDを始めるにあたってしんどい気持ちになるのが「事前に用意しておくべきドメイン層のコードが案外ある」こと。
また、DDDを中心に据えた場合「ドメイン層のコードがどうあるかは本質ではない」とされ、具体的な指標がなく座りの悪い状態になりがちです。
"TacDDD"(タックディー)はそんな「ドメインの話に集中したいので、極力コード側に注力したくない」をお助けするライブラリです。
このトークでは"TacDDD"を用いる事で何が省略できるのか、どんな所の「質」が向上するのかについてお話します。
PHP に FFI が導入されてから、どういう用途で使えばよいか悩んでいる PHPer も多いかと思います。
また、PHP FFI のマニュアルも理解しやすいかというと、ハードルは若干高いと言えるのではないでしょうか。
そこで本トークでは、PHP FFI を介したモジュールの呼び出し方の解説、自作 の C/C++ のモジュールの作成からの呼び出し方、 そして libusb と呼ばれるモジュールで USB で接続された機器の一覧を取得する実践的な方法など、どのように FFI を活用していけばよいのかを解説します。
現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?
このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。
具体的な内容
git init した際に構成される.gitディレクトリの中身について
GitHub上にあるgit/gitのソースコードを覗いてみる
実際にgit addとgit commitをPHPで実装してみる
対象者
PHPやWebフレームワークのバージョンアップ、できていますか?
ながらくバージョンアップできていないものを一足飛びにバージョンアップしようとしたときに、今まで頑張ってUnitTest書いてきたからそれを頼りにがんばるぞ!と思っていたら、味方だと思っていたPHPUnitにいきなり背後から撃たれるという経験をすることになるかもしれません。
PHPやWebフレームワークのバージョンアップ履歴を確認し、それにどう対処すべきかということを事前にしらべていても、PHPUnit の変更を見ていなかったために、今まで頑張って書いてきたUnitTestで大量にエラーが出るという悲しい結果にならないように、PHPUnit の最近のバージョンアップの内容とその対処方法を紹介します。
令和では受託開発はオワコンで内製化の時代?駆け出しエンジニアに人気なのは受託開発より自社サービス開発?
世間では「自社サービスのエンジニアになりたい!」という声が大きく聞こえるようになりました。
私は受託開発フリーランスから自社サービス開発の社員エンジニアになり、エンジニア人生の中で自社サービス開発に携わっている期間の方が長くなりました。
キラキラした仕事のイメージで語られがちな自社サービス開発ですが、日々どんな仕事をしているかは意外と知られていないようです。
私が自社サービス開発のエンジニアとしてどんな仕事をしてきたか・見てきたか、そして自社サービス開発ならではのつらみ・苦しみ・楽しみについて話します。
キャッシュはパフォーマンスを劇的に改善する効果がある反面、一度使うと簡単にはやめられない複雑性と中毒性があります。
その特性から「キャッシュは麻薬」と言われ、安易な利用は忌避されています。
しかし、キャッシュがもたらすパフォーマンスの改善効果は無視することはできず、コンピュータの世界において有効活用されているのも事実です。
そこで今回は実際にキャッシュを使う時に陥りやすい問題を取り上げながら、実際の活用例を説明します。
生涯エンジニアを続けたい。
しかしインターネットを見渡せば凄腕のエンジニアばかり。
このまま、自分は生き残れるのだろうか...
そんな不安はありませんか?
職場では日々の仕事に追われ、それでも新しい技術を理解し、向き合って行かねばなりません。
もちろん一日は有限ですから勉強する時間も限られます。
そんな中、私がどうやって新しい技術を理解し、未来の技術を予測し、今の技術を身につけ、そして ユーザに価値を提供 しているか。そのために日々をどう過ごしているか。
そんな エンジニアとして生き残るための哲学 と 問題解決するために必要な習慣 を皆さんにお伝えします。
ピカソは言った。「優れた芸術家は模倣し、偉大な芸術家は盗む。」
先人の言葉を例に上げながら、課題を解決するエンジニアになるために誰もが見つける大切なことをお話します。
時折聞く抽象構文木。Abstract Syntax Tree (AST)とも言いますが,実際にはどういうものを指すのかイメージがつかない方もいらっしゃるかもしれません。PHP において様々なライブラリに利用されている nikic/PHP-Parser が AST の一つの例です。
そして AST はプログラミング言語を作る上では欠かせない概念です。しかし「プログラミング言語を作る」となるとハードルが上がってしまうと感じてしまいます。
実は AST 自体はそこまで難しい概念ではありません。そしてプログラミング言語を作るにとどまらず,AST を用いれば電卓を作ることもできます。そこで,本トークではプログラミング言語を作ってみたい初心者に向けて,AST とはどういうものか,PHP を題材としてオレオレ電卓を作りながら解説します。