エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【登壇準備】伝えたいことを疑問形にして、導入作成【463日目】

伝えたいことを縮める。まとめる

1. コントリビュートは簡単だ
2. コントリビュートはいいぞ

たぶん、言いたいことはこれ。

主題は?

みんなもコントリビュートをやってみよう

伝えたいことに対する疑問を書く

  1. コントリビュートって難しそう
  2. コントリビュートって意味あるの?

まとめて説明してみよう

コントリビュートという言葉を聞いたことがあると思います。

OSSコントリビュートと聞くと、なんだか難しそう……あるいはやってなんの意味があるの?と思う方も多いと思います。

ですが、新卒2年目の私でもLaravelのバグを直してコントリビュートできました。そう、難しいものではないのです。
それは楽しかったですし、勉強になりましたし、実績にもなりました。ここに立つことが出来たのもコントリビュートのおかげですね。

こう聞くと、気になってきませんか?
Laravelは結構綺麗に書かれていて、コントリビュートのチャンスは山程あります。

最近新卒1年目の友人も、Laravelコントリビュートしました。

今日は、この新人O君の話を話を通じてみなさんに、
明日からLaravelのコード読んでみようかな?プルリク出してみようかな?そう思ってもらえるように、お話してみようと思います。

導入仮作成

ってことで、導入が仮作成できましたわーい!

文字だけだと軽く流してしまいそうなので、
ここから絵とかを用いてインパクトを強めていきましょう!

【Laravel】Collectionのpluckのreturn値が異なるパターン【462日目】

まずお詫びです

コード読んでいたら、この記事で書いたこと間違っていました!!!

訂正記事書きました。

www.nyamucoro.com

間違い内容

EloquentのCollectionと、SupportのCollectionが異なるのは間違いないですが、
このpluckの違いは大きく差はなく、
Eloquent側はtoBase関数によって、Support側のpluckを呼び出しています。
new staticを使っているために、Support側の関数を素直に呼べてないのか・・・?
と推測していますが、詳しくはまだ読めていないです、すみません!

以下旧記事です、、、

Collectionには種類がある

Collection、Laravelで使う配列の代わりに使える便利なやつですね!

これ、モデルで扱ったりとか、いろいろ使う場面があるのですが。

実は、Collectionにも種類があるんです。

普通のCollectionとEloquentのCollection

Illuminate/Database/Eloquent/Collection.php

Illuminate/Support/Collection.php

Eloquentでクエリビルダとか使ってgetするときに出てくるやつと、new Collectionとか使って配列を変換するときと。

ちなみに、Eloquentで作るCollectionは、SupportのCollectionを継承しています。

pluckの違い

vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php

    /**
     * Get an array with the values of a given key.
     *
     * @param  string  $value
     * @param  string|null  $key
     * @return \Illuminate\Support\Collection
     */
    public function pluck($value, $key = null)
    {
        return $this->toBase()->pluck($value, $key);
    }

vendor/laravel/framework/src/Illuminate/Support/Collection.php

    /**
     * Get the values of a given key.
     *
     * @param  string  $value
     * @param  string|null  $key
     * @return static
     */
    public function pluck($value, $key = null)
    {
        return new static(Arr::pluck($this->items, $value, $key));
    }

元コード。あれ?まさかの・・・?

配列を返すのと、Collectionを返すのと。

実は、Eloquentの方はpluckで継承元のpluckを返します。

そして、元のCollectionは配列を返す・・・のです(;・∀・)

うっかりしてると、異なる返り値が返ってきて焦りますね。

お気をつけくださいorもしこれが良くないと思ったらプルリクどうぞ(^o^)

元コード

github.com

github.com

【登壇準備】タイトルだけスライドを作ってみようpart1(+もくもく会参加)【461日目】

スライド作成のためにもくもく会参加したよ!

ってことで、もくもく会参加しました!

willgate.connpass.com

ウィルゲートさんのもくもく会。業務を少し早めに切り上げて、行きました。

雰囲気は、ゆるっと。
最初に決意表明して、作業中はたまに『○○完全に理解したわー』『いい話』って言うのが軽く飛ぶ感じ(実際こんな話はしてませんが)

最後に作業報告で、軽くプレゼンをさせてもらって、アドバイスいただきました。これはいい空間だ、また行こう。

スライド作り始めました

ってことで、スライド作成はじめました!

最初に目次・タイトルを作ってみました。

で、それの途中経過を貼るのやりたかったけど、作業に夢中になって、beforeになる画像を用意出来ませんでした(T_T)

ってことで、やったことだけ羅列します。

タイトルを並べてみる

まず、Googleスライドを開きます。

タイトルを書きます。

そして、この前用意した目次をスライドのタイトルにして、全部並べてみたよ!

10枚のスライドが出来ました。

声に出して喋ってみる

スライドのタイトルがあれば、さあテストだ。

言いたいことは頭の中にあるので、そのまま喋ってみる。

・・うん。なんか違う。

タイトル改変

ってことで、言いたいことが分散してるのではないかと思った。

『新卒2年目がLaravelコントリビュート出来た理由とその面白さ』

なんだこのタイトル。なろう系小説みたいに全部話す必要ないんじゃ。

じゃあどんなことが言いたいんだ。

『(初心者)<コントリビュートはいいぞ!』

これだ!!!

目次改変

目次が長い。

新卒一年目がどうたらとかもういいじゃん、みんなわかってるじゃん初心者なのは。

もっとシンプルに行こうぜ。

1. コントリビュートとは
2. issue編
3. pull request編
4. コントリビュートしてよかったこと
5. 明日からできること
6. 自己紹介

いい感じ!

要検討

やっぱり、コードの追い方をプレゼンするのはちょっときつい。

が、それをしないと本当に簡単かイメージ付きづらいきがする。

リアルタイムにコードを見せるか、画像にするか要検討。

って話をもくもく会でしたら、

『gifにすればいいんじゃね?』

な、なるほどー!!!

ってことで要検討!

もくもく会いいね!

ってことで、もくもく会で1時間作業したら結構ものが出来ました。

また来週とかも参加してみましょう(^o^)

さあ、これから中身とかを作っていきます。がんばるぞー!おー!

【Mockery】shouldRecieveで、元の関数をそのまま動かす【460日目】

こんなときに使う

モックしたけど、元の関数の動きをそのまま使いたい。

例えば、回数だけをチェックするとか、特定の引数のときだけ動作を変えたいとか。

passthru関数

$mock->shouldRecieve('func')->once()->passthru();

これで、元のfuncがそのまま動きますが、一度だけ呼び出すということがテスト出来ます。

引数に応じてテストを変える

// 引数1の場合は、元の関数をそのまま動かしたのと一緒
$mock->shouldReceive(xxx)
    ->with(1)
    ->passthru();

$mock->shouldReceive(xxx)
    ->with(2)
    ->andReturn(2);

これで、1のときは、普通、2のときは2を返すというコードが書けます。

【登壇準備】目次決めをしてみようpart2【459日目】

目次決めpart1

www.nyamucoro.com

次に何する?

目次決めたので、それのブラッシュアップー

0. はじめに(twitter実況推奨アナウンス)
1. 自己紹介(初心者であることを強調)
2. コントリビュートって?(要:定義調査)
3. コントリビュートすると何がいいの?(学習機会・良コードを知れる・ちょっと胸張れる)
4. orderbyの仕様、知ってますか?
5. 新卒1年目のOSSコントリビュート話(issue編)
6. 新卒1年目のOSSコントリビュート話(プルリクエスト編)
7. コードを追う方法(phpstorm使わない方法+使う方法)
8. 覚えて帰ってほしいことまとめ
9. 懇親会向け自己紹介(VRいいよVR)

質問タイムがあるらしい

今日受け取ったメールに、登壇後に質問することができる時間が最大30分まで取れるようです。

・・・あ、このままだと質問したいとか思いませんね。

なぜそうかって、今の目次だと、言いたいことを言ってるだけなのでは疑惑!

どんな人が話聞いてみたいと思うだろうか?

では、興味を持ってくれそうな人を考え直してみようー

1. コントリビュートという言葉を聞いたことがあるけど・・・
2. 新卒2年目というキーワードに惹かれた人
3. 期待はしてないけど、どんな話聞くんだろうと覗いた人

これを一旦仮置きで考えてみますー

1.に対して必要なこと

コントリビュートは何かを知ること!

知ったら?→やってみたいと思うこと。

これを一旦のゴールにするので、作る要素は2要素。

1. コントリビュートがなにか。
2. コントリビュートをすると何が嬉しいか

2.に対して必要なこと

新卒2年目で、何かを成し遂げるにはどうしたらいい?

やったらどうなった?

内容が1と少しかぶらせることが出来ますね。

1. 日頃努力すること
2. 成し遂げた結果どうなるか

3.に対して必要なこと

・・・聞いたことがないような話?

何を用意しても正解にはならないのが難しいので、一旦考えない。

まとめて順番を入れ替えてみる

1. コントリビュートがなにか。
2. コントリビュートをすると何が嬉しいか
3. どうしたら、いろいろできるようになる?

かなぁ・・・

目次をちょっといじる

0. はじめに(twitter実況推奨)
1. 自己紹介(初心者であること、ブログ書いてること?)
2. コントリビュートって?(要:定義調査 + 何が私変わったか軽く)
3. orderbyの仕様、知ってますか?
4. 新卒1年目のOSSコントリビュート話(issue編)
5. 新卒1年目のOSSコントリビュート話(プルリクエスト編)
6. コントリビュートすると何がいいの?(学習機会・良コードを知れる・ちょっと胸張れる)
7. 覚えて帰ってほしいことまとめ
8. お友達ください的なネタ

コードを追う方法(phpstorm使わない方法+使う方法)

これに関しては、時間があまりそうならスライドに加えますが、基本は入れない方向に変更。
ただ、質問の時間のときに、どうやって追ってるかを直接見せますって話は加えましょう。

次はスライド作成

少し、目次がマシになった気がします!

ってことで、次回は実際にスライドを少しずつ作っていきましょう!

【登壇準備】目次決めをしてみようpart1【458日目】

登壇準備を始めるよ!

1. スケジューリング
2. 目次作成
3. タイトルのみスライド作成(1/16まで)
4. ソースコード・絵集め(1/23まで)
5. プレゼンの練習日確保(2/2まで)
6. 練習しながらブラッシュアップ(本番まで)

さあ目次を作るよ!

内容確認

■対象
・PHP、Laravel初心者の方
・OSSコントリビュート未経験

■内容
・バグ発見のきっかけ
・Laravelのコードを追い方
・コントリビュートして起こったこと
・コントリビュートの面白さ
・新人エンジニアと指導する方に伝えたいこと

ターゲットの再確認

ターゲットは、初心者+OSSコントリビュートとかをしたことない人。

では、その人が話を聞いたときにどうなってほしいかを考えよう。

話を聞き終わったときにどうなってほしいか

『明日からソースコードリーディングもしよう!』

『仕様に疑問を思ったら、issueかプルリク立ててみよう!』

『ちょっと不安になったら、ういろうさんや他の誰かに相談してみよう!』

こうなるとOKと仮置きしてみましょう。

ゴールに対して必要なステップは?

では、どんな話を聞いたらそうなるかな?

  1. 話し手が信用できるか(30秒自己紹介、但し、内容は初心者ということ以上は要らない)
  2. コントリビュートとはなにか(知識レベルを合わせる)
  3. コントリビュートをしてみたいと思ってもらう
  4. orderbyの例で、簡単に出来そうと思ってもらう
  5. コードを追いかける方法を具体的に学ぶ
  6. まとめる

これが一旦仮置きのストーリー!

ストーリーに対して必要な内容は?

0. はじめに(twitter実況推奨アナウンス)
1. 自己紹介(初心者であることを強調)
2. コントリビュートって?(要:定義調査)
3. コントリビュートすると何がいいの?(学習機会・良コードを知れる・ちょっと胸張れる)
4. orderbyの仕様、知ってますか?
5. 新卒1年目のOSSコントリビュート話(issue編)
6. 新卒1年目のOSSコントリビュート話(プルリクエスト編)
7. コードを追う方法(phpstorm使わない方法+使う方法)
8. 覚えて帰ってほしいことまとめ
9. 懇親会向け自己紹介(VRいいよVR)

これで、各スライドを2枚にすると30分プレゼンの出来上がりー!

これからの予定

この状態でスライド作り始めますが、

ぜえええええっっっっったいに、どこかでやっぱり違う感が出てくると思います。

なので、一旦仮であることを把握しながら、とりあえず書いていきましょう!

次回は、軽い目次とタイトル並べたスライドを作ってみましょー!

【一週間振り返り】テストコード勉強の一週間【457日目】

1.今週一週間の感想(ざっくり)

テストコードについては勉強してた一週間だったよ!

2.良かったこと

  1. テストコードどうするべき色々勉強した

  2. いろいろ質問される立場になって、そこそこ回答が返せるようになってきた

3.もっとこうしたかったこと

質問をされること増えたけど、相手が求めている回答を返せてないのは、なんとかしなきゃなーって思ってる。

難しいけどね!

4.新しく気づいたこと

私、、、気づいたら今ちーむで一番このプロジェクト歴とLaravel歴が長い(; ・`д・´)

そりゃ質問される回数増えるわけだ……!

5.来週したいこと

登壇に向けて作業を始めるよ!

引っ越しについても進めたい!

6.その他

スノボ初挑戦したけど、一人で立てない(´;ω;`)

詳しくはfacebookとかで書いてるよ。

登壇に向けてのスケジュールを立ててみよう【456日目】

スケジュールを立てよう

前回の記事で、やることリストを出したので、スケジュールを立ててみましょう。

逆算していく

2/16本番です。

練習とブラッシュアップに2週間あると幸せなので、2/2にはスライドの大枠を作らないと行けないですね。

絵の素材集めとソースコード集めに1週間あると良さそう(1/23開始)

タイトルのみスライドも一週間ほしい(1/16開始)

なら、目次作成は、今日かになりそうですね!

スケジュール改

1. スケジューリング(今日)
2. 目次作成(今日から)
3. タイトルのみスライド作成(1/16まで)
4. ソースコード・絵集め(1/23まで)
5. プレゼンの練習日確保(2/2まで)
6. 練習しながらブラッシュアップ(本番まで)

こんな感じ!

ではスケジュール通り進めれるかな?頑張りましょー