uzullaがブログ

uzullaがブログです。

PHPerKaigiは来週末!!&先日の駆け出しエンジニアの方向けイベント、アンケート結果大共有!!

先日、PHPerKaigiのプレイベントとして駆け出しエンジニアなどの方向けのイベントを実施しました。

phperkaigi.connpass.com

当日の録画がこちらです、当日ご参加いただけなかった方もご覧いただけます。

www.youtube.com

開催中のチャットやTwitterにおいても手応えを感じるほど好評でしたが、あらためてアンケート結果などを共有します、これによりさらなる発展に繋げられればと思います。

その前に、大事なこと。

PHPerKaigi 2021。来週末にせまりましたがまだチケットは販売中です!

phperkaigi.jp

(主観で)三行でまとめ

  • 参加者100〜130名程度の内、30〜40人程度が非現役エンジニア(リアルタイムアンケより)
  • (イベント後のアンケート(1/4程度が回答)結果だけを見て)、全員が「とてもよかった」・「よかった」、95%以上が「期待に応えた」、「他の人にも紹介したい」7割「内容次第」3割
  • 「駆け出しエンジニアを忌避している感じが無くよかった」「オンラインだと心理的障壁が低くてよかった」「現役の一例を知れてよかった」などの感想

私の感想

私はこのイベントの前に色々と書いたのですが、

uzulla.hateblo.jp

当初の目論見であった

  • 知り合い以外にもリーチできるかな…? => ちゃんと一定数リーチできた
  • 安心して参加してみてほしいな… => 敷居が低く感じて頂き、ウェルカム感は伝わった
  • こういった内容は喜ばれるか? => 需要はあった、喜ばれた

という所は、アンケートや反応をみるかぎり達成できたかなと思います。よかった…。

ということで

これからの人へ、コミュニティからなんらか渡せる価値はあるのだなとおもいました。

勿論、「これが全体の大多数だ」「正しい(?)成功例だ」などと拡大解釈するつもりはないのですが、想像上でなく、対象が確実にいて具体的に感想をいただけた事は重要と考えています。

今回、PHPerKaigiというベースの上で告知し、こういったイベントをしましたが、別にPHPerKaigiだからという事はなかったと思います。 一部からは「別に初の試みではない」ということは重ねて指摘いただいています、ありがとうございます。 こういった取り組みがやはり必要なのだなと実感できましたし、全体が改善していくことを願ってやみません。

さて、イベント後アンケートをいただきました。あまり見かけない情報ですので(これも知らないだけだと言われればそうかもしれませんが)、公開する事も重要かなと思い、一部をシェアさせていただきます

アンケートより抜粋

※ 簡略化しております

このイベントの前にPHPerKaigiをしっていましたか?

  • 知っていた : 70%
  • しらなかった : 30%

年齢属性

  • 20〜30歳 : 約50%
  • 30〜40歳 : 約30%
  • 40歳〜 : 約20%

プログラミング歴

  • 〜1年 : 20%
  • 1〜2年 : 15%
  • 2年〜5年 : 23%
  • 5年〜 : 42%

実務経験

  • 未経験 : 20%
  • 〜2年 : 27%
  • 2年〜 : 53%

流入経路

※ 主なもののみ

  • 主催などのTwitter :40%
  • 友人のTwitter :21%
  • connpass(チケットサイト)のサイトやメルマガ :30%
  • 友人の紹介:15%

こういったイベントが今後あるとしたらどんな話が聞けると良いか?

内容が重複する所もありますので、分解・再編しております。こういったトピックが求められているのだ、と、参考になれば幸いです。

  • 未経験ゆえの不安・疑問

  • IT系のエンジニアとは、どういうものなのか?
  • 未経験はどう始めるべきか?
  • 未経験はいつまでならはじめられるのか?
  • 何を作るべきかわからない、どうやって見つけるべきか?
  • どこまでできれば「やっていける」のか?
  • どうすれば就職できるのか?
  • 現役からみて、駆け出しはどう見えるのか?
  • 経験談

  • 現役の方が駆け出しだった頃どうだったか
  • 受託開発等について、実体験
  • エンジニアのやりがいやモチベーションについて
  • リレーションシップ・コミュニティ系

  • コミュニティへどうやって参加すべきか
  • エンジニアのつながりの作り方
  • 新規参入者に対するコミュニティのあり方はどうあるべきか
  • キャリアパスや、人生設計等

  • 現役エンジニアのキャリア・将来設計はどうなっているのか
  • あくまで職業としてのエンジニアはやっていけるか
  • 健康や、学習方法などの自己管理方法

お礼

一般的に「アンケート」というものは面倒で避けられがちですが、その回答をもって相手はみなさんを「認識・把握」しようと努力しています。

アンケートをしないとあなたの像はつたわりませんし、ノイズ的なアンケートをすると、相手方は誤った「皆さんの像」をとらえてしまいます。

つまり、アンケートはみなさんにとって「相手に正しい認識をさせる」ために重要です。ぜひアンケートには回答することをおすすめします。

最後になりましたが、そんな面倒なアンケートに色々とご回答いただきました皆様、本当にありがとうございました。活かしていきたいと思います。

ぜひまたお会いしましょう!

再度の告知

PHPerKaigi 2021。来週末にせまりましたがまだチケットは販売中です!!!!

phperkaigi.jp

駆け出しエンジニアと幸せコンタクトは取れるか?あるいはPHPerKaigiの宣伝

ハロー、うずらです。

長過ぎるので結論から

phperkaigi.jp

PHPerの祭、PHPerKaigiが今年も3/26(金)〜3/28(日)で開催されます!チケット販売しています!今ならノベルティがついてきます

そしてそれに関連して、初学者、初心者、これからウェブ系エンジニアを目指す方や駆け出しエンジニアの方向けのプレイベントを3/3(水)に開催します!ぜひご参加を検討ください。

phperkaigi.connpass.com

f:id:uzulla:20210226191138p:plain

ここまでが本題です!

ここから以下は上記プレイベントに関する余談です。(イベントに対する事前の「お気持ち」なので、イベント内ではもっと別の話をします!)

「現役エンジニア」と「駆け出しエンジニア」が遭遇しない

これは主観であり、大げさに書いており、現実としては遭遇はおこっていると思います。ただ、私はお話した認識がありません。他の知り合いにも聞きましたが「駆け出しエンジニアで知り合いいる?」「知り合いにはいないなー、Twitterとかではみるけど」というのが結論でした。つまりあまり遭遇していないようです。

(まあ大企業の採用の人とかは遭遇してるんだとおもいますが。)なんで遭遇しないんでしょうか?

ところで「駆け出しエンジニア」とは?

どなたがつくられた言葉なのか存じませんが、キャッチーかつ、完全に地位を得たネーミングだとおもいます、すごい。日々ツイッターハッシュタグ付きで投稿する人を見かけます。大勢の人が努力しているのをみると結構感動しますね、みんな頑張っている、俺も頑張りたい。

「私がインターネットを見て思った」レベルでの定義では、大まかには新たにIT系エンジニアの職を得るために日々努力している人、あるいはその決心をした人達なのかなと思います。日々、自習やスクールでそのゴールをめざしているのだろうと思っています(拡大解釈的に、すでに現役の人も自称しているのは見かけます)。さらに狭めれば、Rails(Ruby)やPHP、VueやReactみたいな単語をよく見かけるので、おそらくWeb系が主なのかなと思います。

唐突ですが、私はウェブ系のエンジニアであり、それを生業としています。私の周りには同様にエンジニアが多数いて、日々なにかを作り続けています。よって、私や私の知り合いはいつか「今の駆け出しエンジニア」と仕事をするだろうと想像がつきます、未来の仲間になる方々ですね。

すると、いつか出会うであろう人達と話してみたい、という単純な欲求が生まれますね(後述しますが、これはエゴですけどね)。

力説しておきたいのですが、話したい=説教したいとかじゃないです。たとえば「フリーランスで1000万はないわ〜」とか(そもそも、無い話ではない)。悪い言葉遊びは「楽しい」のでそういったものをよく見かけてしまうでしょうが(よくない事ですね)そういう話ではないです。

同じ方向をむいた人と「最近どうよ?」と対話したいだけです。これはコミュニティ(後述)では普通なので、そういう発想になっているだけです。

(というか、「駆け出しエンジニア」コミュニティもそうですよね?ハッシュタグをつけて「最近やっていってるぞ!」という一種のコミュニケーションをしているんでしょうから)

f:id:uzulla:20210226190606p:plain

駆け出しエンジニアがコミュニティにいない?

私はPHPのコミュニティというものに所属しています(そう、私は考えています)。ここでいう「PHPコミュニティ」とは漠然としたもので、「〇〇会にはいっている」「✕✕に参加した」等とくくれるものではなく、「PHPに興味がある人」くらいのくくりになります。さらにいえば、別にPHPを書かなくてもPHPコミュニティに存在はできます(私の定義では)。

PHPは非常に人口の多い言語なのでコミュニティは大きく、そのコミュニティを対象に定期的にカンファレンスなどの「集まり」が開かれます。一つをとりあげれば冒頭のPHPerKaigiというカンファレンスがあり、私も例年参加、登壇(今年はテスト放送でしか登壇しませんが)し、スタッフです。それ以外にもPHPカンファレンスなどの千人〜規模のカンファレンスもあります。

で、そこにはたくさんの「PHPコミュニティに属する人」が来るのですが、「駆け出しエンジニアの人と会話してないな」と感じています。前述の通り、コミュニティには「PHPを書いていない人」もたくさんいるし、初心者・駆け出しエンジニアもいると「思って」います。しかし、お会いしません。本当に来ていない可能性もありますが、私が知り合いと話すのに熱中して駆け出しエンジニアの人とお話できてないんだろうか、あるいはトークだけ聴いて帰っているのだろうか、まあ色々想像できますがわからんというのが現在の感想です。

駆け出しエンジニアとハッシュタグつけてつぶやいている人のツイッターでフォローしている人をガーッとみると、もう全然景色ちがうんだろうなと思ってます。あー、これはなにもしないと会えないな、と思います。どうしたらいいの?

駆け出しエンジニアと幸せにコンタクトはとれるのか?

とにかくお会いできていません。しかし将来一緒に関わるであろう人と話したいんですよね。

…ところで駆け出しエンジニア側はどうおもっているかをここまで無視していますね?遠慮されているだけなら出逢えばOK!なんですが、先方が嫌がっていたら駄目ですね、私が話したいだけではエゴです。ここで「幸せにコンタクトがとれるのか?」というところにいきつきます。(考えすぎだと人からは言われましたが)

まず、(自分が現役エンジニアになってしまうと感じられませんが)「現役エンジニア」ってやつは怖い、癖がある、内輪のジャーゴンがある、等と思われがちですし、単純に避けられている可能性も否定出来ません。「成長してから話そうとおもった」というのは初心者の方からたまに聞きます、「何話していいの?」「いや、世間話からでいいのでは?」と私は思うのですが。そもそも懇親会というものが嫌いな人も多いし、廊下でいきなり話しかけるのは敷居が高い、当たり前ですね。

あるいは、「別に話すメリットがないよ!」ということも想像できます。そうですね、メリットのない人と話してもしかたない、という考えは理解もできます。

めちゃくちゃ主観でいうと、「話すと楽しいから話そう!」というのがあるのですが、余りにひどいので一旦よそにおいておいて、

もうちょっと客観視すれば、一応我々は「現役」ですので、なにか力になることはできないだろうかと少々偉そう(ヤダナー)なことを考えてしまいます。そう思っている人は結構いる…あ、我々っていうと主語がでかいな…。まあちょっと引いて、コミュニティに新人が増えることについて悪く思う人は少ないはず…です、まあ私はそうです。

(新参と会話するのに乗り気でない人もいます「人が増えるのはいいことだ、が、しかしノットマイジョブ」「人が増えるのはいいが、空気が余り変わってほしくない」みたいな意見もわかります。逆にそこの受け皿として昨今スクールなどが活躍しているとおもっています)

なんかめちゃくちゃに言い訳がましくなりましたが、「話してみたい人」は確実におり(まず、私がそうである)、さらに言えば僭越ながらなんらか手助けもしたい人も多い(ようにみえる)。

どうすれば力になれるかわかってないけど!

f:id:uzulla:20210226190749p:plain

力になるとは?

色々かんがえてみたんですが、駆け出しエンジニアの人に「何」をすれば応援できるかが見えませんでした。

これが伝わるかちょっと不安なので書いておきますが、「コミュニティに積極的な人間」は、多かれ少なかれ互助の精神を持つ方が大勢います。つまり、提供する内容はさておき助けていきたいわけです。対価なく。限度はありますが。

私なんかは話すのが好きなので、話すだけでもいいんじゃないかとおもいますが、まあもう一歩先を見据えるのも悪くない話です。

たとえば技術的なことをつたえればよいのだろうか、例えばすばらしいブログを書く?すばらしいトークをする?(それをYoutubeにあげる?)入門書籍を書く?あるいはエンジニアの人生知りたいとか、実際の労働現場を知りたいとか。

実際には「そんなものはすでに(あなたと話さなくても)山ほどあるよ」といわれるかも?駆け出しエンジニアの人はどうやら書籍やスクールに通って様々な情報を得ているかもしれません。(あとは、スクールなどにコミュニティが内包されており、そこで十分なのだ、という想像もしています)

ちゃんとした認識ができません…しかし「わからんので、コンタクトできん」というのはよろしく無い、机上で判明しないことは、やってみるしか無いですね。

(会話は「色々やってみれる」のが内容の決まったものとは違う利点ですね!相手の都合や反応に合わせてこちらも柔軟にかえられるので)

「…なんで?」

「なんでそんなに話し(?)たいんだ?カネでももらえるのか?」って思う人が多いかもしれないので、これも書いておきます。

話して(双方で)気に入ってもらえれば、コミュニティに人が増えるかもしれない。ただそれだけです。「コミュニティ」には「熱」が必要です。熱ってのは、大まかにいって賑わいです。コミュニティは流行っていない限り、放置するとだんだん人が減り、熱が下がります。そして漠然としたことをいえば熱は大きければ大きいほど良い。大きければ楽しい、技術情報もあつまる、市場規模が増える、カンファレンスの軽食が立派になる(???)。僕は多分コミュニティに対する愛が大きい方なので、そういうことを積極的にやってるだけです。

つまり私はお金をもらえたりしません!コンバージョンとかない!極端なこといえば、熱が持たれた結果カンファレンスがふえたりおおきくなったりでヘビーにボランティアすると自分の時間や金がかかります。ウケますね(修行僧かな?)

まあ〜長期的には「この言語は流行っている!」認定を得て、仕事が増えるなどのメリットもあるかも?感じたことはないですが。それは公共的すぎるし、景気をよくするとか世界平和を目指してるみたいなノリに近い。

「(情報のHubになることで)名前が売れて仕事がきたり執筆とかでお金になるのでは?」といわれたこともあるんですが…。うん、これは色々おもしろおかしく(?)説明してもいいんですが(っていうかそうでもしないとやってられんのだが)、「ならない」です。まあ「技術的な成長」をもって仕事が増える・転職に優位というのはまちがいないですが…そんな回りくどいことしないよ…。

ちなみにPHPコミュニティは流入も流出もめちゃくちゃ多く、結果の人口収支はニュートラルくらいだと思います。カンファレンスの動員数をものさしにするのがいいのかどうかわかりませんが、年で参加者数が半分になったり倍になったりはしていません。(他のだと倍も半分もあります。あと、コロナの都合があるのでここ1〜2年は役立たない)

あと、スクールがコミュニティになっていてもいずれは旅立つ母校であり、基本的にもどることはないとおもいます。しかしコミュニティは「うっすらしたもの」で、「地元」であり、生涯そこですごす人も、休みだけいる人も、出ていく人も、出戻る人もいます。

f:id:uzulla:20210226191523p:plain

駆け出しエンジニアが、コミュニティで駆け出すには?

ということで(?)最初にもどるんですが、初学者、初心者、これからウェブ系エンジニアを目指す方や駆け出しエンジニアの方向けのイベントをやってみたいなということになりました。ここに書きたかったけど書かなかった話もする予定です。ぜひいかがでしょうか。

phperkaigi.connpass.com

誠実ではあろうとしていますが手探りですし、まあ「あまりにも目耳を引かない」と何なので、就職とか、年収1000万の話題とかだしてみようかとおもいますが、とにかくファーストコンタクトです、斜に構えず礼儀正しくやろうと思っています。

本当に駆け出しエンジニアの方がきてくれるかはわかりませんが(見分けがつかない!)とにかくやってみます。よろしければご参加してみてください、そしてもしよろしければご意見をいただければと思います。

そして、「なんとなく、見ていただく」だけでもOKです(これ重要)。というのも我々がそちらを観測できなくとも、そちらからこちらを観測していただくだけでも将来につながるかなとおもっているので。

(なので、PHPerKaigiのプレイベントと銘打ってはいますが、まあ別にPHPerKaigiに興味がなくてもOKだなとおもってます)

まあとにかく結果にならずとも(なればなったで嬉しいですが)、まず怪我なく終わればいいかな!くらいの気負いでおります。

ここまでがエクストラな本題でした、ありがとうございます。

繰り返しですが、PHPerKaigiのチケットも売ってます!

phperkaigi.jp

さて、以下は「現役エンジニア」にむけたさらなる蛇足です。

「自分はこうだった」「生存バイアス」が強い話になります、ご了承ください。あと、世代や環境でも大きく変わるものですし、とにかく読んでいただいている人と完全に違った認識かもしれません(それの間違い探しのためにも前述のイベントなどをやるのですが)。

駆け出しエンジニアっていいムーブメントだなと思うこと

(このあたりは、人と話していてもコンセンサスがとれてないところではあるんですが)

現役エンジニアでもそうですけど、いやむしろ現役だとむしろ余計に「成果物」を出していくことには臆病になります。そういう意味ではコペルニクス的転換というか、成果物をださない(出してる人もいるけど、成果報告だけする)というムーブにみえておもしろいなとも思います。「やってるぞ!」って言うだけ、敷居がさがりますよね。GitHubに草生やすみたいなものか?

現役がなぜそういう事できなくなるかと言うと、強いクオリティ意識(?)みたいなものがあるのかなと思います。有名な逆ベル型の評価ですね「雑魚かプロ」

でも、いつしか「あーそんなことないな」と気づくことではあります。自分は普通、ちょっとすごい先輩も普通、『ロックスター』は依然スターですが、話してみるとただの人ですし、自分のほうが詳しい分野とかもでてきたりします。完璧超人はいない。そして9割は運。

f:id:uzulla:20210226190911p:plain

「駆け出しエンジニア」は最近生まれたわけではない

何が言いたいかといえば、現役エンジニアが「駆け出しエンジニア」にどういうスタンスを取るべきなんだろうかという話なんですが。(とる必要がある、ということにしておいてください)

たとえば、これやる必要がないな〜と個人的に思うのは、「自分たちの常識」をもっての「啓蒙」です。「あれやこれやは甘言」というのはまあそうだなって思うんですけど、ほんとに駆け出しエンジニアの方々がわかってないとは思いづらいんですよね。(期待値と現実のギャップは人それぞれでしょうが)

人間、「自分が何者であるか」「どこにむかっているか」というのがふわっとしてると何も出来ないですが、自己にラベリングすることで一定の制約をかけてわかりやすくすることができます。これが昔は「入門」「初心者」だったのが、ちょっと書き換えただけなのかなとおもっていて、初心者と違うのは「駆け出しエンジニアで頑張っている」というのを表明することが是という空気をつくられているようです。これは黙ってやるより、分かりやすくていい事だなとおもったりしています。

まあもちろん(?)取り巻くマーケ的な視点から辛辣にみれば「そういうラベリングした上で、双方のイメージを使い分け『させる』ことで、現場と断絶させ、現実との乖離を効率化してるんじゃないの?」という感想もありますが(これは前述のエンジニアの悪しき癖だな!)、それはよそに置きます(重ねていいますが、スクールは入門者を引き受けている時点で、根っこでは尊い行動だと思います)。

そもそも、価値観が同じ必要なんてないですからね、「エンジニアリングなんかこれっぽっちも好きでないが、収入を狙う」のも別にいい話だと思います、「それはしんどいぞ」とか私も思いますが、人生は運ゲーなので結果はわかりっこない。

というか自分もふくめてあらゆるエンジニアはどこかで勝手な夢をみて入門しています(※独自考察)。なので、ラベルやハデさはさておき昔から連綿と続いてきた事でしかないなとおもっていて、そこに今流行っているスタイルとして駆け出し〜があるのかなという捉え方です。

よって、彼らは「普通にウェブエンジニアを目指している人」だとおもいますし、こちらもそういうスタンスでいいんじゃないかなと思っています。なので、単に「初心者」をコミュニティに誘いたいだけでしかないんです(え?あの頃より意識ギャップがある?いやいや…昔も大概でしたよw)。

で、なにができるんだろうか?(完全に現役側の視点で)

エンジニアを職業としていくのに(主観ではありますが)なにが必要か、あるいは当時しっていればよかった、相談したかったということは、我々はある程度想像が出来ます(生存バイアス強めですが)。

そしてそれは「知ってからわかる」ことだったりしますので、「テックコミュニティにいて『得した!』と思った人」は誘ってあげたいと思うはずです(これもさらに生存バイアスや主観がひどい)。どうでしょうかね?私は誘ってみたいんですが。

ウェブ系のテックコミュニティは「受動的では効率が悪い」のはわりとコンセンサスがあるのかなと思っています。駆け出しエンジニアは主体的・能動的なのか受動的なのかわかりませんが、ツイートなどをしていることから「ひかえめな能動」なのかなと思っています。

「見てもらいたいけど、かまってはほしくはない、なぜなら面倒そうだしこわそうだから」というのはあ〜わかる〜という感じありますね。知り合いにはレスしてもらいたいけど!ファボだけついてほしい!こういうところはだれしも同じやな、と思います。

でも、さっさと話せるようになったほうが話が早くないですか?(主観)あと一歩で話す事はできるんじゃないか?と思って見ています。(無理にコミュニケーションする必要はないですし、コミュニティにはそういう「圧」はないんですけど、せっかくなので活用したら?という意味で)

f:id:uzulla:20210226191008p:plain

断絶とコミュニケーションのロスト

ただ、それでもコミュニケーションにせよ、成果物を公開することにせよ「怖い」「俺はまだ」という人はいます。それは現役エンジニアでも大差ないのかなと思います。むしろ駆け出しのほうがアウトプットしているまである。

そこで「圧倒的成果物(完成しない)をまってから」より、気軽な会話で「これどうよ」だとおもうんですよね。そういうのが気軽にできるのがコミュニティ(の一部)だと思うんですがどうですかね。

カンファレンスだって「すごく難しいことを言う場」ではないんですけど、多分そうみえちゃったりしてたりしてますよね。登壇することにギャップを感じてたりとか、フォロワー数とかで(虚像な)ギャップを感じてたりとか、なんかね〜そういうのよくない。

(と、いうとなんか「超えた人だからだ」っていわれるんですけど、みんな、超える前があるからな)

まあ〜〜、このエントリみたいな「(個々を無視して)大勢を十把一絡げにして捉えていく」のはあまりいい感じしないんですが、私にはPHPerKaigiの宣伝をしなければならないという大義名分があるのですよね!

なので臆面なくこういうことをしてもいいだろう、という事で最近おもっていたことをおおっぴらに書いてみました。(単にPHPerKaigiの参加者がふえればいいな〜という漠然とした目的を複雑にしている自覚はある)

ま、とにかく、最初にもどりますが、皆さんPHPerKaigi参加してみません?ということですね。

三度繰り返しになりますが、チケット売ってます!今年はリモート開催なので色々大変です!皆さんぜひ!

phperkaigi.jp

こちらからは以上です。

(本エントリの写真はPHPerKaigi 2020 の公式写真より 写真公開しました – PHPerKaigi スタッフブログ )

ISUCON 10 にチーム curl gottiで参加し、予選突破しました!!!!!!!

2020/09/19 追記

「ISUCON 10 にチーム curl gottiで参加し、本当に後一歩(主観)で惜敗しました!!」というタイトルを「ISUCON 10 にチーム curl gottiで参加し、予選突破しました!!!!!!!」に変更しました。

isucon.net


結果!!!!

f:id:uzulla:20200913235549p:plain

残念!!!32位!!!(御存知の通り、当落ラインは31位でした(といいつつ、学生枠があるのでまあ、そうではないし、追試Failもいるのだが、気分気分…))

(あらためて順位はでるらしいですが、まだ公式がだしてないんで、一回ふせておきます。これは22時の追試時のデータがなぜかブラウザにあったので…)

うおおおおおお!!!!おしい!!!!!!!!

今回は id:moznionid:onk と私の三人参加で、去年の屈辱を晴らすぞ!!実際32位はかなり上出来じゃねえの!!??って思うんですが…。

まあ、負けだよ!といわれたら負けですね…。

すげーおしかったな〜〜。マジで手応えアッたんですけどねえ〜〜…。

参加言語はPHPです

今回はチームメイトにお願いしてPHPで参加しました、理由は私もコードを書きたかったからです!どうせストレージが問題になるのであって、言語でそんな差がつくことはないしね(なお、私は非同期処理も準備はしていた)

結果として、アプリサーバーが足を引っ張る事無く終えました。PHP負けてないぞ(負けてます)

今回PHPのコードは(見ていただくと理解るんですが)PHPだけすごくまっとうな作りになっていて()、オートローダー周りでかなり時間を食ってしまっていました。しかしながら、これはPHP7.4をつかえばPreloadで解決です。PHPはちゃんと速いので全く問題になりませんでした。

また、メモリ効率も断然(前より)上がっているので、2GBのインスタンスであっても48ワーカーにしました、余裕です。

むしろ、ベンチが最初の方で負荷をあげてくれないのがマジで悩みどころで、過去みたいに「セール」機能がないのか!?って本当に悩んだくらいです(それがあれば、1000点伸びるのも夢ではなかった…かも)

チームメイトの話

今回自分はコードを書く、と宣言していたので、普段はOSパラメタやnginxとかをいじってるところを id:moznion にまかせました。nginxのコンフィグって難しいですよね、僕は苦手です。彼はまったく問題無く仕上げてくれたので最高です。

今回静的ファイル周りでの加点要素(ミドルウェアでの飛び道具)はあまりなかったのですが、ミドルウェア周りって本当にミスすると全員に迷惑がかかるのですが、彼はミス無く終えたということがインフラ担当としては最高だったと言えます。つかわなかったけど、redisみたいなのもバッチリしたごしらえしていて安心感がちがいました(私はPHPでRedisとかのコピペコードをつくっていた)

え、わからない?再起動試験が一回もミスなかったんですよ?わかりますか?

(すくなくとも、今回私は「Mysqlのパラメタチューンします!」っていって3回くらいテストコカしたからね?)

あとはsshの接続confとかの準備もおねがいしました。 (その間私はレギュレーションを呼んで「botを無視せよ、あと、資料請求と椅子売却以外は加点なし、つまりnazotteにsleepをいれよう(真顔」とか言ってました)

id:onkさんはモクモクと不慣れなPHPでも色々となおしてくれました。ところでイスコンってFail直すのがチョー難しいじゃないですか、テストがブラックボックスだし。ちょっとfailしてもリトライしたり、「あそこかな!?」ってなって手が止まるじゃないですか、そこで「よし戻そう」っていって速攻revertするのは本当に胆力がいることだと思うんですけど、即revertしててさすがだな〜となりました。そして id:moznionも、「そうしましょう!」っていっててこの人達はサンクコストないのか?って思った。

あと、たまに「これ、これやって」と id:onk さんがいいます。私はそのとおりにシュッと実装したらビュンと得点がのびます、すごい。やっぱりボトルネックを見抜く目というものは重要ですね。 (おかげで僕は「やったけど速度があがらない!」というのがほとんど無くて、チートだった気がします)

自分のコードの話

PHPerだから、だとはいいませんが、今回のPHPコードは普段PHP書いてない人だと結構しんどかったかもしれません(まあ普段PHPかかない人がPHP選ぶか?というのはありますが)。

onkさんのエントリにもあったんですが、DB負荷がマックスということは全員で認識できて、

「転地テーブルつくって」「はい」

「テーブル分割してアプリなおして」「はい」

という感じでした(そんで、これでパーーンと点数伸びた)

こう書くとまあ、自分がさもすごいような話ですけど、大体id:moznionid:onkさんが「これ、全く別のアプリだよね、なんで一個なの?」みたいな議論をしており、よこできいていた僕は「じゃあ(PHPerには簡単なので)DB接続分割しますわ」と、返して20分くらいで実装したんですけど「すぐにでてきてほぼ一発で通ったのですごかった」といわれたので、すごかったんだと思います(?)

そう、昨今のPHPは静的解析もきっちりきくし、PHPStormなどの支援も強いのでリファクタリングが得意な言語ですね(俺の最近の普段のしごともリファクタリングですが…)。秒でDIとPDO周りを修正するだけ!

(なんですけど、今振り返れば、DIやPDOを普段触らない人はあれむずかしかったのかもな、「db[PDO::class]ってなんだよっておもった」って言われたし)

ただ、バルクインサートの速度の都合なんですかね?initializeがシェル呼んでててウケた。

失敗したなとおもったところ

これは id:onk さんも言う通り、我がチームが前回も今回も3人司令塔みたいな所だったからだと思うんですが、

onk.hatenablog.jp

「これあかんやろ」を全員でめいめいみつけて、めいめいでやっていっており(まあ前述の通り、私は「これやって」は多少ありましたが)指示出しや、「これどうすんの?」みたいなのが多分他チームより少なかった。

これはオーバーヘッドが少ないものの、逆に「得意なやつがやる(やって!)」「わからんところを聞く(おしえて!)」というのがもっとできたかもしれないとはおもったりはする。

結局コード書く!といっていた自分が、(一声はかけましたが)Mysqlのチューニングしたりしてたり、

(まあこれは「暇だったから」ではなく、自分でメトリック見て「やります!」と宣言してやったわけだが。結果、dstatでreadゼロ、CPUもRUNが98%でサーバがHDDだった事は全く問題にならなくなった)

あとは「PHPで!」と言った事に後悔はないんですけど(PHPは今回の案件においては十分に速いし)、「実はエラーログの出し方がよくわからなかった…」といわれたときに「ああ…ごめん…」とちょっとなりました。

(そういえば、ログといえばAppArmorウザかった)

PHPはログ周りが本当にクセがあり、わからない人はマジでわからないと思う。僕はPHPのエラーハンドリング周りに情熱があるタイプなのでさっさと直したが、それをチームメイトにうまく共有できていなかったのを知ったのは、祭りのあとであった。

単純に悔いの残るところ

DB2台にわけたのをAPPはCPUが20~30%あまってたので、3台に分ければよかったですね、あと20分あればできた。(接続先を3つ用意して、サイコロふるだけだったので)そしたらいけたでしょ、しかしできなかったのでいけなかった。

自分がSQLのごく初歩が書けなくなってビビりました。前回もそうだったんですけど、緊張からか普段絶対にできる事が突然できなくなるんですよね、今回はDROP TABLE IF EXISTS Tableがかけなくて(なんで?!?!)ほんとに最初調子が出なかったです。

こういう時「あっ!呆れられたか!?俺はもっと普段できるんですけど!?」ってなってしまい、その後30分くらいメンタル下がったのですが、「普段のチームメイト」とやっているところはこういうのないんだろうなと思いました。これが心理的安全性とか、チームビルディングってやつか?(フリーランス引きこもりの感想)

PHPerまとめ

PHPは以下をちゃんと活用すれば十分に速度が出ます。そこはボトルネックではない。むしろリファクタがやりすい現代のPHPは便利。

PHPerがISUCONで使うべきツールをここにならべておく

  • preload
  • 静的解析と、それをサポートするエディタ
  • xhprof(と秘伝のタレ)
  • (Apache好きなので気に食わないがw) nginxとphp-fpm(の調整)
  • (今回使わなかったが)Redis
  • (今回使わなかったが)curl_multi(をWrapした様々)

今回の問題に限らず、素振りでもちゃんと書けばバンバン得点でてました、それが確認できたことが私の一番うれしかったことであり。そして後もうちょっとで手がとどかなかったという一番悔しい所でありました。

感想まとめ

本当に、あと一歩をのぼれなかった事をまたしばらく引きずるとはおもいますが、ISUCON運営の皆様にはこのような楽しいイベントを開催し、昨今の風評被害(主観です)にも負けず、実装言語にPHPを残してくれていることに最大の感謝をお送りいたします。

isucon.net

ISUCONは本当にたのしい、そして悔しい。

こちらからは以上です。

余談

PHPerで、composer.jsonみて「…?…???えっ…?」ってなった(わかった)人と話したい。だれか!!