Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Laravel】イベントとリスナについて超簡単に解説

Laravelにはイベント・リスナという機能があり、簡潔に書くと以下のようなものです。

  1. app/Providers/EventServiceProviderに以下のように加筆しておく
protected $listen = [
        'App\Events\Event' =>[
            'App\Listeners\Lister'
        ]
    ];
  1. Eventを以下のような書き方で発火させると、Listnerクラスのhandle()メソッドが実行される
event(new Event());

すでにイベント・リスナの解説をしているページは多くありますが、分量が多くて分かりにくく感じたので、簡潔にまとめてみました。

【Git】ブランチを作成しようとすると「Can't find node in PATH」のエラー

起きたエラー

git checkout -b {ブランチ名}でブランチを作成しようとすると、以下のエラーが出ました。

Can't find node in PATH, trying to find a node binary on your system
Couldn't find the Node.js binary. Ensure you have Node.js installed. Open an issue on https://github.com/sindresorhus/run-node

解決方法

このエラーは、Node.jsをインストールすることで解決します。

Node.jsは、以下のコマンドで簡単にインストールできます。

brew install node

【LINEヤフー 退職エントリ】会社の良かったところ・悪かったところ

2024年の頭にLINEヤフー (旧ヤフー) を退職しました。

この記事では、入社を検討している方に向けて、会社の良かったところ・悪かったところを中心に、内部事情を書いていきます。

なお、LINEヤフーと言いつつヤフー側の情報が多いので、その点はご注意ください。

目次

良かったところ

ホワイトで高給

働きやすさと給与の両方を取るのであれば、悪くない選択だと思います。

社内の給与レンジはG1 ~ G6 (ヤフー時代はY1 ~ Y5) までありますが、G3 (旧Y3、年収650万 + 特別賞与) までは比較的上がりやすく、なおかつ残業時間も少ないです。

また実質的にフルリモートで、勤務時間も好きに選べました。

ただし、これは部署にもよります。酷い例だと、10-19時で働くことを上司に強要されたと言っていた知り合いもいましたし、月に数回程度の出社デーがある部署もありました。

業績の安定感

サービスが多いが故に、業績は安定していると言えます。

例えば、私の在籍期間はコロナ禍と重なっていたのですが、トラベルが致命的にダメでも、在宅需要でショッピングが伸びることで穴を埋めたりしていました。

2022年度はYahoo!トップページなどの広告事業が全く伸びず、後述する特別賞与がゼロになるといった事態もありましたが、メディア事業しか持っていない会社と比べると、安定しているのは間違いないでしょう。

休みが多く取りやすい

有給日数は1年目の時点で12日あり、7年目で20日にまで増えます。

また、祝日と土曜日が重なると前日が休日になるというルールがありました。

そのため、一般的な企業よりは有給は多かったのではないかと思います。

夏休みなどはありませんが、1週間連続などでの有給の申請に対しても難色を示されることは一度もなかったです。

悪かったところ

新卒の配属は完全にガチャ

これは、新卒で入社する方に最も注意喚起したい内容になります。

配属は完全にガチャで、希望すら聞かれません。

私は新卒で入社したのですが、同期と話していると、体感で半分程度はサイエンス系の部署を志望していました。

しかしサイエンス系の部署の社員数は一割程度なので、ほとんどはWeb開発に回されます。

学歴に強みがあったり、何か実績があれば希望通りの配属になる確率は高まりますが、この点は頭に入れておいた方が良いです。

異動はしにくい

ポスチャレ (旧: ジョブチェン) という異動制度がありますが、あまり機能している印象はなかったです。

ジョブチェン時代は応募は年に1回と機会が少なく、ポスチャレになって3ヶ月に1回まで応募できるようになりましたが、人を募集中の部署にしか希望を出すことができなくなりました。

そして、募集中の部署は意外と少ないです。「ポスチャレで応募が出ている」ことと「求人ページで応募が出ている」ことは実は同一なので、求人ページを見ていただければ、具体的なイメージがつくかと思います。

トップダウンで案件が降ってくる

多くの社員が、自分が担当の案件について「なぜやるのか分からない」と言っていたのは印象的でした。

開発者は「これはユーザーが求めている機能なのか?」と感じながらも、上が言っているから開発を続ける、このような状況は何度か目にしました。

これは大企業ならではの弊害だと思います。

賞与が不安定

先にも少し書きましたが「特別賞与」というものが4月に貰えます。

利益が出た分を社員に還元してくれる、というのは素晴らしいことですが、金額が年によってバラバラです。

最大で給与の2ヶ月分を貰ったこともあれば、2016年度や2022年度はゼロでした。

そのため、「昇給したのに年収が下がる」ということが普通にあります。

実際、自分も転職活動で「前年の年収」を伝えながら、心の中では「年内に転職できないと下がるんだよな...」と思っていました。

一定のライン以上は昇給が難しい

先にも書いた通り、社内ではG1 ~ G6までの給与レンジがあります。

新卒の場合は入社時がG1、3~4年目くらいでG2 (年収500万 + 特別賞与) に上がり、5~9年目くらいでG3 (年収650万 + 特別賞与) に上がる、というのが一般的でした。

ただし、G3に上がるには壁があり人によってはなかなか上がれません。またG3からは昇給ペースが大きく下がります。

部長になると強制的にG4になりますが、これには運も必要です。

その他

新卒研修

自分の時は、新卒研修は人事研修 (0.5ヶ月) + 技術研修 (2.5ヶ月)でした。部署によっては配属後にさらに研修があります。

まず、人事研修はハッキリ言って無意味でした。特に、後半のグループワークは何の意味も感じませんでした。

技術研修は、Spring Bootを使ってのWebアプリケーションの開発と、社内技術の習得が中心です。

自分は学んだ技術を配属後の業務に活かせたので感謝していますが、サイエンス希望の新卒も、モバイルやフロントエンド希望の新卒も、全員Spring Bootを学びます。

人にとっては有益な内容なだけに、何とか改善できないだろうか? と思ってしまいます。

社内技術

少なくともヤフー側では、デプロイをするにも、バッチを動かすにも、可視化や監視にも社内のプラットフォームを使います。

これらはDockerを拡張したようなものも多くDockerの知識はつきましたが、AWSを全く触れなかったのは痛かったと思います。

ただしこれには利点もあって、社内のサポートは手厚かったです。開発しているエンジニアとやりとりができるのは安心感がありました。

また、無理やりの好意的な解釈とも言えますが、技術を習得する機会が多かったのは、悪くなかったとも考えています。

福利厚生

これといった福利厚生はないですが、WELBOXというサービスに加入しており、年に1万円まで好きなことに使えるポイントが貰えるほか、ホテルの宿泊費やテーマパークのチケットなどが若干安くなります。

これに加え、引っ越しや住宅購入の仲介手数料などの値引きも使えました。

個人的に良かったのは、社内にマッサージ室があったことです。1回40分で500円と安く、コロナ禍から先は予約も取りやすかったです。

また、人によっては社内のマッサージ機を好んで使っていました。

オフィス

コロナ禍から先はかなり縮小されており、いつ行っても混雑していました。

また、社食のクオリティは非常に高かったです。値段は時期によって無料 ~ 700円程度まで変遷していましたが、退職する時は約300円でした。

ちなみに、昔はエレベータの混雑緩和を目的として、朝食が無料で提供されていました。

まとめ

まとめると、「働きやすい環境で、携わるサービスについては強い意志を持たず、そこそこの給料をもらう」には最高の環境だと自分は考えています。

この記事の情報が、LINEヤフーへの入社を検討している方の参考になれば幸いです。

【Git】ローカルのブランチを全て削除する

git branch | xargs git branch -D

こちらのコマンドで、現在選択されているブランチ以外を全て削除できます。

解説

xargsを使うと、パイプで前に繋がれたコマンドの実行結果の各行を引数に取り、指定したコマンドを実行することができます。

【Kotlin】拡張関数で自身を参照する方法 (レシーバ付き関数リテラル)

Kotlinには拡張関数という仕組みがあり、既存のクラスにメソッドを追加することが可能です。

例えば以下コードでは、Int型にsum()メソッドを追加しています。

fun Int.sum(num: Int): Int {
  return this + num
}

その結果、以下のような記述が可能になります。

val answer = 1.sum(2)
println(answer)
// 3が出力される

このような関数の書き方を「関数リテラル」と言い、関数の中で記述される「this」をレシーバと言います。(例でいう1)

なお最初のコードは、以下のように記述することも可能です。

val sum: Int.(Int) -> Int = fun Int.(num): Int {
  return this + num
}

:の後のInt.(Int) -> Intは関数の引数と返り値の型で、()内のIntは引数であるnumの型を、->の後のIntは返り値の型を表しています。