RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

Node.jsのExpressでWebサーバーの構築をしてみた

はじめまして、新卒のtaku_76です。

qiita.com

上記URLからチャットbotを作成したいと思ったのですが、これにNode.jsの知識が必要だと書いてあったので学習してみました。 その結果フレームワークであるExpressを使用すると簡単に Webサーバーが構築できることが分かったので試しに使ってみました。

Node.jsとは

JavaScriptを使ってサーバーサイドのコードを書くことが出来るプラットフォームです。

  • 特徴
    • V8エンジン

      • GoogleChromeで使われているJavaScriptエンジンでブラウザとほぼ同じJavaScriptが書くことができます。JavaScriptを即座にコンピュータが理解できる機械語に変換して処理を行うため非常に高速です。
    • ノンブロッキングI/Oモデル

      • I/Oが終わったか何度もチェックし、終わっていなければ次の処理に進んで、次の処理が終わったらまたチェックする、この動作を繰り返します。
      • シングルスレッドの大量のアクセス制御が難しいというデメリットを回避します。

Node.jsのインストール

https://github.com/nullivex/nodist/releases
こちらのURLからnodistをインストールします。

  • nodistとは

Windows環境で動作する Node.js のバージョン管理ツールです。これを使うことで、複数の Node.js のバージョンを切り替えて使い分けることができるようになります。また、同時にnpmもインストールされます。

  • npmとは

Node.jsのパッケージを管理するツールです。Node.jsのパッケージとは、予め用意された便利な機能をまとめたものです。

Expressで新規プロジェクトを作成

  • Expressとは

Node.jsで利用できるWebアプリケーションフレームワークです。 イベントループで非同期のため同時リクエストに強く、多くのユーザーの同時アクセス・大量リクエストを捌くことができます。 テンプレートエンジン(サーバーサイドで動的にオブジェクトを渡して、それをHTMLとして返す)を選べます。 今回はhtmlに近い形でかけるテンプレートエンジンのejsを使います。

  • Expressのインストール

以下のコマンドでインストールを行うことが出来ます。

C:\Users\takumi\Desktop\test\Nodist>npm install -g express-generator
  • 公開までの手順
C:\Users\takumi\Desktop\test\Nodist>express -e newproject

オプション-e でejsが設定された状態でプロジェクトが作成されます。

C:\Users\takumi\Desktop\test\Nodist>cd newproject && npm install

作成されたnewprojectのnode_moduleディレクトリの中に必要なモジュールがインストールされます。 packege.jsonに何をインストールするのか設定してあり、これを参照してインストールを行います。

C:\Users\takumi\Desktop\test\Nodist\newproject>npm start

サーバーを起動し、ローカルにWebページを公開します。 http://localhost:3000と入力するとexpressにデフォルトで入っているhtmlが以下のように表示されます。

f:id:taku_76:20190304065910p:plain
express

おわりに

今回は、Node.jsのExpressを使ってローカルにWebサーバーの構築をしてみました。 次は、自分でWebアプリを開発してherokuを用いて公開するところまでやってみたいと思います。

参考

Node.jsについての記事

こちらにも詳しい記事があります。 Node.jsの勉強会でお手軽にWebアプリを作った話

Scrum Fest Osaka 2019 参加レポート

id:radiocat です。2/22〜23に開催されたScrum Fest Osaka 2019 へ私たちのチームから3人が参加してきましたのでレポートします。

Scrum Fest Osaka 2019とは?

www.scrumosaka.org

公式サイトには以下のように書かれています。

Scrum Fest Osakaはスクラムの初心者からエキスパート、ユーザー企業から開発企業、立場の異なる様々な人々が集まる学びの場です。

アジャイル開発のプロセスのひとつであるスクラムのイベントで、関西では初の大型イベントです。約200人が集まって2日間開催されました。

f:id:radiocat:20190225004012p:plain

ちなみに、弊社も大阪に拠点がありスクラムに取り組むIT企業のひとつとしてスポンサーをさせて頂きました。

f:id:radiocat:20190225003726p:plain

なお、会場となった「関西大学梅田キャンパスKANDAI Me RISE」は大阪オフィスの隣のビルでした。その点でも何か不思議なご縁を感じて参加してきました。

登壇レポート

今回は登壇の機会も頂くことができました。せっかく頂いた機会ですので、私たちのチームが取り組んできたスクラムについてたくさん詰め込んで紹介しました。

スクラムはシンプルなルールの開発プロセスですが、その実践にはチームに応じた様々な工夫が必要です。私たちのチームもこれまでたくさんの試行錯誤を繰り返してきました。その中で支えとなったのは、既にスクラムに取り組んでいる先人やコーチなどの有識者の方々の取り組み事例でした。これまでも同様のイベントが開催されたり、同じ課題を持つ人が集まるコミュニティなどからたくさんの事例が世の中に発信されており、それらの情報を参考にして自分たちのチームに取り入れてスクラムを続けてきました。つまり、私たちのスクラムはこれまで取り組んできた人たちの試行錯誤に支えられているのです。

ですので、今度は私たちの取り組みを、同様に試行錯誤している人やこれからスクラムに取り組む人たちの支えにして頂けるように、たくさん詰め込んでお伝えしたつもりです。幸いなことに発表後の懇親会などで、たくさんの方々から共感のコメントや自分たちも同じ課題を持っていて勇気が湧いたという温かいお言葉を頂き、私たち自身もまたこれからスクラムを続けていくモチベーションを得ることができました。

f:id:radiocat:20190226175356p:plain

参加レポート

一緒に参加したメンバーが印象に残ったセッションをまとめてくれているのでご紹介します。


楽楽精算開発チームの岡本です。印象に残ったセッションをまとめました。

ラクティス厨から始めるアジャイル開発

クラスメソッドの 藤村さんのセッションです。 スライドは、こちらで公開されています。

www.slideshare.net

スクラムの本に書いているようなプラクティスについて、まずは、そのまま実行してみて、形骸化してきたと感じたら立ち止まり、スクラムガイド等の原典と現状の差分を確認してみればいい、といった内容のセッションでした。

スライド中には「プラクティス厨が許されるのは、形骸化するまで」という言葉が出てきていましたが、うちのチームにも形骸化していそうなプラクティスがちらほら出てきているので、原典との差分の確認時期なのかもしれないです。

スクラムフレームワークを使用する具体的な方法。僕の場合。

楽天の 椎葉さんのセッションです。 スライドは公開されていませんが、ブログで内容が公開されています

bufferings.hatenablog.com

楽天の大阪開発チームで実践しているスクラムの方法についてのセッションでした。

色々と参考になるセッションで、特に、仕様の決め方や開発の進め方については、うちのチームでも取り入れてみたいと思いました。

  • 仕様の決め方
    • 何を作るのか?だけではなく、なぜ作るのか?をより重視して書く
    • それによって、開発チームはより目的に沿った形で実装することができる。
  • 開発の進め方
    • 実装/テストで役割を分けて、それぞれ並行して進める
    • 実装/テストそれぞれの観点で開発を進めるので見落としやバグを防ぎやすい。

オーディエンスとして参加して来ました、庄禮です。

私自身、現在のスクラムチームに参加してまだ半年ほどで、こういったスクラムのイベントにも参加したことはありませんでしたが、運良く参加枠をいただくことができましたので参加してきました。

以下、拝聴したセッションの中から一部ご紹介します。

お堅い企業でスクラムチームを一から作った話

3年前からチームにスクラムを導入した三菱電機株式会社さんのお話。
アナログなカンバンの導入に始まり、少しづつ自分たちの課題点を解消していく軌跡をお話しされていて、チーム体制の変更したり、デジタルなツールを導入して効率化をはかるなど、工夫しながら自分たちのスクラムを形作っており感銘を受けました。

ピンポンゲームでスクラム体験ワークショップ

「Ball Point Game」というワークショップをおこないました。ワークの詳細は軽く調べるとでてきますので、気になる方は調べてみてください。 限られた時間、初対面の人と協力して目標にむかって行動するのはやりごたえがありました。やってみてダメな点は全員で振り返って、次にプランニングに活かす、といったスクラムの基本を体験学習できる良いワークでした。(ワークということもあり、実際の現場ではおこなわないようなチャレンジも行いました)

所感

交流会やコーヒーブレイクの時間に様々なスクラム関係者と交流できたことも、参加してよかったと感じているポイントです。まだまだ自分自身の知識も浅く、お話を聞いて参考にさせていただく機会ばかりですが、いつか自分の経験をみなさんにアウトプットできるように精進していきます。


まとめ

2日間スクラムのテーマにどっぷりと浸かり、参加者それぞれが交流と学びを深めて持ち帰ることができる場所でした。Scrum Festは、その名前のとおりカンファレンスや勉強会とは違った独特のフェス感のある素晴らしいイベントです。次回もぜひ参加したいと思います。

f:id:radiocat:20190225003848p:plain

今回のイベントにも関連しますが、関西のアジャイルコミュニティの関係者の皆様には普段から大変お世話になってきました。今後もイベントへの参加だけではなく会場のご提供などでも関係を深めてコミュニティに貢献していきたいと思います。

devlove-kansai.doorkeeper.jp

scrumdo-kansai.connpass.com

スクラム道関西さんには既に一度、弊社にお招きしてオープン・ジャムを開催して頂きました。また、3/18にはDevLove関西のイベントを弊社にお招きして開催予定です。

devlove-kansai.doorkeeper.jp

また、弊社でも毎月1回エンジニアもくもく勉強会を開催してエンジニアの交流の場をつくっていこうとしています。よろしければぜひご参加ください。

rakus.connpass.com

認定スクラムマスター研修から始まるジャーニー

こんにちは。堀内(id:yhoriuchi)です。 弊社が日頃からお世話になっている株式会社アトラクタ様が開催された認定スクラムマスター研修を受講してきました。講師はGabrielle Benefieldさんで、ジェフ・サザーランド博士が率いるScrum Foundationの共同設立者でもある方です。

f:id:yhoriuchi:20190222190441j:plain
Gabrielle Benefieldさん

研修内容が非常に素晴らしかったため、少しでもご紹介できればとの思いで研修の簡単な紹介、学んだこと、現場でやってみたことをお伝えしたいと思います。

研修概要

スクラムマスター研修は2日間のコースです。Gabrielleさんがメイン講師で、株式会社アトラクタの原田さんが研修をサポートする体制で行われました。 基本的に研修は英語ですが、プロの通訳の方が同時通訳を行いながら進行します。要所要所で原田さんがご自身の経験や考え方を交えた補足を行なって(日本語)くれましたので、スクラムを学ぶ上でこれ以上ない講師陣だったと思います。

研修の始まり

研修が始まるとGabrielleさんから「全員と握手」するように言われます。40人ほどの参加者が部屋を歩き回って全員と握手するというワークショップ(?)です。初めて顔を合わせる人たちばかりでしたが、最初に握手をするだけで後の研修が非常にやりやすくなったと感じています。スクラムマスター研修は多くのワークショップが取り入れられた内容になっているので、こうした心理的な障壁を最初に取り除く行動は研修そのものの効果を上げることにつながりました。

次のワークショップ:ピンポン玉回し

研修生が20人ずつくらいの2チームに分かれ、ピンポン玉を特定の時間内に落とさず手渡しで何個回せるか、という簡単なゲームをしました。2チーム同時に始めて優劣を競うのですが、チームごとにやり方が違うため、当然のように差が出ます。その後、一方がもう一方のチームのやり方を観察して自チームのやり方を見直し、改善するということを行いました。この時一番驚いたのが、相手チームを観察して良かったやり方をそのまま真似るのではなく、私が想像していた以上の改善が行われ、無駄がそぎ落とされた方法に一瞬で進化したことでした。観察して振り返り改善することの重要性に気付かされたその時の衝撃は今でも忘れることができません。

やり方は違えど、以前 吉羽さんに社内で実施して頂いたスクラムトレーニングで伝えようとしていたことが改めて理解できた気がします。

色々端折りますが

その後はスクラムの全体の流れを説明頂いたり、チームに分かれてワークショップを行ったりしてスクラムの理解を深めました。

疑問があれば随時質問を行うこともでき、貴重な意見やアドバイスを受けることができます。知識としてのスクラムだけでなく、多くの現場を見て改善されてきた知見を持つ講師からのアドバイスは心に突き刺さるものがあります。私が質問をした回答の最後に、Gabrielleさんが "Good luck"と言ってくれたのは今でも心の支えとなっています。

学びを実践で試すと更に学べたこと

研修に参加すると、不思議と勇気と自信が湧いてきます。そのまま自社に学びを持ち帰り、一番試してみたかったことを早速試してみました。それが「他チームを観察する」です。タイミング的に他チームを観察することが難しかったため少し工夫して、他チームのスクラムマスターをやっている id:radiocat に自チームの振り返りのファシリテーターをお願いしました。

「人は鏡」といった言葉があるように、人は人との対話を通じて自身の内面に気付かされることが多くあります。スクラムの振り返りでの開発チームとファシリテーターという関係性から考えて、チーム外の人がファシリテーターを行うことにより、自分たちのチームが外からどのように見えているのか気付かされ、新たな改善や行動につながることに期待していました。

結果は思っていた以上のものでした。

開発チームメンバー個別に振り返りの感想を聞いてみたのですが、全員が口を揃えて同じことを言っていたのです。それが

「1週間で課題(problem)が多いのは正常なのか?」

という質問があったということでした。振り返りにKPTを利用しているのですが、“P”に上がる項目が多いように外からは見えるというチームへの見事な問いかけだったんだなと思いました。

感じ方は人それぞれあるようですが、この質問がチームにとって大きな意味があり、各自が深く考えるきっかけを与えてくれました。

更には、他チームの振り返りをファシリテートすることでファシリテーター自身も多くの気づきがあったようです。
下記がその一部。

  • チームの関心事によって出てくるものが全く違う。
  • 振り返りのファシリテートはすごく重要で、すごく難しい。
  • チームが課題と感じているところを察知して石を投げ込まないと意味がない。
  • 振り返りはプロセスの改善の場であると他チームの課題感を通して改めて認識することができた。

これらを聞いて私自身も学べることが多く、この一連の行動から学びで学びを繰り返すのだと気づかされました。今後はチームとしての学びを最大化するためにもスクラムマスターとしての学びは尽きることがないと気を引き締めた次第です。

そしてその先へ

認定スクラムマスター研修を受けると、認定スクラムマスター(CSM)になるための受験資格がもらえます。オンラインで受験できるのですが、私も無事合格することができました。CSMは資格取得して終わりではなく、むしろ果てしなく続ける旅路の始まりだと思っています。このような研修の機会を作ってくれた株式会社アトラクタ様や自社にも感謝しつつ、これからもスクラムチームを支援していきたいと思います。
ジャーニーは始まったばかりです。

エレベータープログラミングしてみた

こんにちは、fuj_takです。

エレベーターがなかなか来なくてもやもやすることありませんか?
かく言う私もエレベーター待ちになると、いつ来るんだろうと悩まされます。

自分にエレベーターの制御をやらせれば、もっといい感じにできる
皆さんも一度は考えた事があるのではないでしょうか!

そんなあなたにこちらをご紹介します。

Elevator Saga Elevator Saga - the elevator programming game

GitHubにも公開されています。 GitHub - magwo/elevatorsaga: The elevator programming game!

※私の環境だとIEでうまく画面表示できなかったので、Chromeなどのブラウザでお試しください

プログラミング内容

ブラウザ上でJavaScriptのコードを記述し、エレベーターの操作を行います。
エレベーターに乗った乗客の行先ボタンに応じた制御、
各階での上下ボタンが押された場合のエレベータの制御、
などを行い、時間内に多数の乗客を輸送できるかどうかにチャレンジするという内容。

ブラウザさえあれば誰でもお手軽に試せるので、チーム内ワークショップとかでも使えると思います。
2015年頃に公開されているようなので、一度は触ってみたことがある方もいそうですね。
APIも公開されています。

Elevator Saga - help and API documentation

やってみた

エレベーターの数や各階の数が異なる設定で全18ステージあります。

https://play.elevatorsaga.com/#challenge=1
https://play.elevatorsaga.com/#challenge=2
 ~
https://play.elevatorsaga.com/#challenge=18

頑張ってみたのですが、5ステージを超える事ができませんでした。。。。

色々と無駄な動きが多いですね。
エレベーターの制御プログラムを作っている方々、えらそうなことを言ってすみませんでした m(_ _)m

我こそはという方は是非チャレンジしてみてください!!

参考に

APIを頼りに作ったコードです。
いけてない点があるのは承知していますが、笑って許してください。

{
    init: function(elevators, floors) {
        var waitFloor = [];

        var queuePush = function(floorNum){
            if (waitFloor.indexOf(floorNum) < 0) {
                waitFloor.push(floorNum);
                waitFloor.sort(function(a,b){
                    if( a < b ) return -1;
                    if( a > b ) return 1;
                    return 0;
                });
            }
        }

        // 動作対象のエレベーター取得
        var getTargetElevetor = function(updown, floorNum){
            var target = null;
            elevators.forEach(function(e) {
                // エレベータ内の混在率を考慮
                if(e.loadFactor() < 1) {
                    if (updown == "up") {
                        if (e.destinationDirection == "up") {
                            if (e.currentFloor < floorNum) {
                                target = e;
                            }
                        } else {
                            target = e;
                        }
                    } else if (updown == "down") {
                        if (e.destinationDirection == "down") {
                            if (e.currentFloor > floorNum) {
                                target = e;
                            }
                        } else {
                            target = e;
                        }
                    } 
                }
            });

            return target;
        };

        // エレベーターの上昇/下降に合わせて停止階を決める
        var setStopFloor = function(e, floorNum){
            // 上昇中は上階のみ止まる
            if (e.destinationDirection == "up") {
                if (e.currentFloor < floorNum) {
                    e.goToFloor(floorNum);
                }

                // 下降中は上階のみ止まる
            } else if (e.destinationDirection == "down") {
                if (e.currentFloor > floorNum) {
                    e.goToFloor(floorNum);
                }

                // 停止中は指定階に向かう
            } else {
                e.goToFloor(floorNum);
            }

        };

        elevators.forEach(function(e) {
            // 待機中
            e.on("idle", function() {
                // 1階で待機
                e.goToFloor(0);
            });
            // 行先ボタンプッシュ
            e.on("floor_button_pressed", function(floorNum) {

                // 上昇中
                if(e.goingUpIndicator()) {
                    if(e.currentFloor() < floorNum) {
                        e.goToFloor(floorNum);
                    }
                    // 下降中
                } else if(e.goingDownIndicator()) {
                    if(e.currentFloor() > floorNum) {
                        e.goToFloor(floorNum);
                    }
                } else {
                    e.goToFloor(floorNum);
                }
                // 行先を制御
                setStopFloor(e, floorNum);
            })
            // 移動中
            e.on("passing_floor", function(floorNum) {

            });
            // 到着
            e.on("stopped_at_floor", function(floorNum) {
                // エレベーター待ちをクリアする
                waitFloor = waitFloor.slice(waitFloor.indexOf(floorNum), 1);
            });
        });

        // 各階で上下ボタンがプッシュされた
        floors.forEach(function(f) {
            f.on("up_button_pressed", function() {

                queuePush(f.floorNum());
                var e = getTargetElevetor("up", f.floorNum());
                if(e != null) {
                    // 行先を制御
                    e.goToFloor(f.floorNum());
                }

            });
            f.on("down_button_pressed", function() {

                queuePush(f.floorNum());
                var e = getTargetElevetor("down", f.floorNum());
                if(e != null) {
                    // 行先を制御
                    e.goToFloor(f.floorNum());
                }
            });
        });
    },

        update: function(dt, elevators, floors) {
            // We normally don't need to do anything here
        }
}

◆TECH PLAY
techplay.jp

◆connpass
rakus.connpass.com

大阪開発ビアバッシュレポート ~他部署のお仕事紹介~

f:id:Y-Kanoh:20190220204939p:plain

こんにちは。実はラクス大阪ビアバッシュ実行委員の、Y-Kanohです。

先日、毎月恒例のビアバッシュ@大阪を行いました。

今回のテーマは、「他部署のお仕事紹介」。 いつもは技術系の発表ばかりのビアバッシュに、他部署の方をお招きし、それぞれのお仕事内容を発表していただく、毎年恒例の人気企画です。

今回も内容をダイジェストでご紹介いたします。

営業のお仕事

f:id:Y-Kanoh:20190220193641p:plain:w500

まず、配配メールの営業担当に発表頂きました! ネット申し込みなどが普及し、システムを売るために、人手が必ずしも必要でない中における、営業の存在意義を教えていただきました。 お客様の困っていることを解決するためにも、 人それぞれに違うシステムに対する価値観を、いかに高めて紹介するかが腕の見せ所だそうです。 また、営業担当としてプレゼン時に心がけているテクニックも教えていただきました。

ネットワーク純情派

f:id:Y-Kanoh:20190220193645p:plain:w500

つぎに、365日インフラを守っているインフラ部隊、「ネットワークチーム」からの発表です。 ログ調査から障害対応まで、幅広い業務内容についての話から、 日々取り組んでいる、サービス品質向上のために行っているプロジェクト活動についての話などを伺いました。

(表紙のデザインがシブいですね。)

情シスの業務紹介

f:id:Y-Kanoh:20190220193631p:plain:w500

多数の業務内容を抱えている情報システム部からも発表頂きました。 業務内容は多岐にわたり、比較的馴染みのあるPC管理や、問い合わせ対応から、 あまり表に見えない、社内システムの基盤整理、セキュリティ対策、新しいITサービスの導入などについてお話しいただきました。 また、実際に最近社内へ導入された、業務効率化のためのBotシステムの紹介もしていただきました。 これからも、ラクスグループで働く人(:ラクト)のために、より良いIT環境をサポートして下さるそうです。

サポートお仕事紹介

f:id:Y-Kanoh:20190220193637p:plain:w500

楽楽精算の顧客サポートを行っている、大阪サポート課からの発表です。 顧客サポートの中でも、導入支援を専門に行っているチームです。 せっかく導入したシステムを最大限利用してもらうため、2か月間の専属サポートを行い、 できるだけ長く使っていただけるよう工夫しているそうです。

技術発表

いつも通りの技術系発表も行いました。

  • OSSの開発にJOINした話

    OSSの開発にJOINした経験から、仕事や開発における積極的な行動の意義を教えていただきました。

  • フェリーハッカソン参加報告

    先日、こちらの記事で紹介された、フェリーハッカソンのレポートです。 記事には載らなかった内容まで、写真を交えて発表していただきました。

また、最後にはLTでの発表も行いました。


いつもはエンジニアばかりのビアバッシュですが、今回はエンジニア以外の方も巻き込んで、いつもとは違うビアバッシュを行うことができました。 毎年行っている企画ですが、毎回新しい発見や知らなかった情報が出てくるため、ぜひ今後も続けたいです。

以上、大阪開発ビアバッシュレポートでした。

Laravel JP Conference で登壇した話

いろいろなところでネタになっている開発エンジニアの坂田です。

以前の投稿で周知されました通り、先日開催されたLaravel JP Conference 2019に登壇してまいりました。これも以前の投稿で触れていましたが、株式会社ラクスは BRONZE スポンサーとしてイベントに協賛しました。

イベント概要

conference2019.laravel.jp

登壇

チャットディーラーの高速開発を支える Laravel(30分セッション)

speakerdeck.com

昨年の PHP カンファレンス関西 2018 で発表した内容から資料を修正して再演しました。

感想

個人的にはあまり満足のいく発表が出来なかったなというのが正直な感想です。

  • マイクを持ってしゃべればよかった
  • 発表中、聞いてくれている人たちをあまり見れていなかった(話に興味を持ってくれているか不安になった)
  • 時間を余らせてしまった
  • 登壇力が足りない

ただ良かったこともありました。

  • 「Mustache Injectionという言葉を流行らせたいので覚えて帰ってください」がちょっとうけてた
  • Mustache Injectionについてつぶやいてくれている人がいた

やはり脆弱性に関する話題は関心をひきやすいのだなという印象です。

Mustache Injectionに関して参考

Mustache Injectionに興味を持ってくださった方向けに参考情報を載せておきます。

Laravel JP Conference のライトニングトークで発表してきました

f:id:Y-Kanoh:20190219095140p:plain

Y-Kanohです。 先日、弊社がスポンサーとなっている、Laravel JP Conference 2019 のライトニングトークに登壇してきました。

f:id:Y-Kanoh:20190219095418j:plain:w300

イベント概要

こちらの記事で紹介いただいたイベントです。

tech-blog.rakus.co.jp

Laravel JP Conference は、今回が初めての開催です。 (このような登壇イベントでの発表は初めてでしたが、まさかのトリの発表でした...)

発表資料

発表時の資料はこちらです。

speakerdeck.com

資料作成前は、基本機能の紹介等をクイズ形式で面白おかしくできたらと思いましたが、 実際はもろもろの事情により GitHub のコードから非常にコアな問題を出題することにしました。

感想

思ったより受け入れられて、とても楽しかったです。少しネタ寄りの発表でしたが、 コードを読まないとわからない内容だったため、聞き手の方もクイズを楽しんでいただけたようで、 発表後の懇親会では「Laravel クイズの発表者です」というと、「1問しか正解できませんでした」とか、「Laravel の内部って面白いですね」など、様々な反響をいただけました。

ちょうど、他のセッションで「何らかの形で少しでもアウトプットを行うことが成長への近道」といった話がありました。 私も、今回の登壇を機に、ブログや登壇といったアウトプットの機会を増やせればと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.