初めてのオンラインLT会の準備と感想

これは「フィヨルドブートキャンプ Part 1 Advent Calendar 2020 - Adventar」の17日目の記事です。
昨日はR-Tsukadaさんの子育て中のぼくが実践している【時間管理術】と【生産性をアップさせる方法】を紹介|プログラミングとメンタルヘルスでした!

私は2020年12月12日(土)にオンラインで開催された「Rails Girls Gathering Japan」にて人生初LTをしました。
今後、初めて且つオンラインのLTをする方の参考になったらいいなと思います。

1,準備編

LT本番数日前にやっておいたこと

  • スライド作り
    私はMarpというアプリを使用しました。
    Marp - Markdown Presentation Writer
    マークダウンを使ってスライドを作成できるアプリです。
    マークダウンで書くだけでいい感じにスライドっぽくしてくれます。
    f:id:harukus:20201217103958p:plain
  • 原稿作成
  • 自分の発表を誰かに聞いてもらい、意見をもらう
    誰かに聞いてもらうと自分の気づかなかった改善点を教えてもらうことが出来ます。

LT本番前日までにやっておいたこと

  • スライドをいろんな形で保存しておく
    (どんなアクシデントにも対応できるように)
    Marpで作ったものをPDFで保存
    SpeakerDeckで保存
    (発表前なのでOnly myselfで保存)

LT本番当日準備したこと

  • ブックマークバーの非表示
  • 自宅のインターホンの音量を消音にしておく
    作業部屋が無くリビングで行うため
  • Macの通知をおやすみモードにしておく
    発表の際に通知音が入ってしまわないように
  • 使用していないブラウザやアプリを閉じておく
    画面共有した際に、あやまって意図しないページを表示してしまった時のため

LTが終わったらすぐすること

  • SpeakerDeck等で自分のスライドを共有する
    私は発表に自分の発表を終えるのに夢中になってしまい、スライドを共有するのを忘れていました。(その日の夜にアップしました。)

2,感想編

発表前の緊張

本番3日前くらいから緊張がじわじわと押し寄せてきました。
本番が近づくにつれて、自分の発表の内容に自信が無くなっていったのですが、
「自分の感じたことは自分にしか発表できない」
この言葉にとても勇気をもらいました。

いざ本番!

発表の最中に自分の声が本当に聞こえているのかな、という不安が急に襲いかかってきました。
聞いている人は当然ミュートをかけているので、相槌や反応はもちろんありません。緊張していてツイッターなどの反応を追いかける余裕もありませんでした。

最後に

私にとってLTとは「オンラインで開催されるもの」というイメージだったのですが、コロナ以前はオフラインでやるのが当たり前だったという事を知りました。いつかオフラインでLTをやる機会がやってみたいなと思いました。
初めてのLTは緊張しますし、エンジニアでもない私が話しても意味ないのではないかと思ったりもしましたが、自分の経験や感じたことは自分にしか話せないので、意味がないことはないです!

ぜひLTをするかどうか迷っていたら勇気を出してやってみましょう〜!

ターミナルからSlackに投稿するまで②(投稿編)

ターミナルからSlackに投稿するまで②(投稿編)

実際に投稿していきます。

 

1, Testerを使って投稿をする

まだ、ターミナルからは投稿しません、、!

APIs > Using the Web API > chat.postMessage を開きます。

chat.postMessage method | Slack

ここにはメソッドの使い方が書いてあります。

Testerを開いてこの画面からSlackに投稿してみます。

f:id:harukus:20201213215826p:plain

f:id:harukus:20201213215950p:plain

投稿できました!🎉

2,ターミナルを使って投稿する

先ほどTesterで投稿し成功するとこのような画面が下に表示されます。 f:id:harukus:20201213221529p:plain

赤文字の部分を使い、ターミナルから表示させていきます。

$ curl -H "Authorization: Bearer xoxp-XXXXX" -X POST "https://slack.com/api/chat.postMessage?channel=bot&text=test2&pretty=1"

 xoxp-XXXXXの部分には自分のOAuth Access Tokenを入力してください。そしてtext=のところには分かりやすくするためにtest2という文字を入れています。

f:id:harukus:20201213223524p:plain

はい!投稿できました〜!

ちなみに、

$ $ curl -X POST "https://slack.com/api/chat.postMessage?channel=bot&text=testdayooo&pretty=1&token=XXXX"

と1行でもかけます。 また、curlコマンドを実行すると

{
    "ok": true,
    "channel": "C01GC5LC6DV",
    "ts": "1607866499.000100",
    "message": {
....

と表示されると思います。 これらを表示させないようにするにはsilentモードと/dev/null出力を使うと出来ます。

$ curl --silent -X POST "https://slack.com/api/chat.postMessage?channel=bot&text=hello&pretty=1&token=xoxp-XXXX" > /dev/null

と言ってもいちいちこれらのコマンドを入力するのは長いですよね。 次回はもっと簡単に投稿する方法の記事を書こうと思います!

参考:シェルスクリプトでslackにメッセージ送信してみた - エイリーの備忘録

ターミナルからSlackに投稿するまで①(準備編)

ターミナルからSlackに投稿するまで①(準備編)

ターミナルからSlackに投稿するまでを書いていこうと思います。 まず、準備編です。

1,アプリ作成

以下のサイトでアプリを作ります。 Slack API: Applications | Slack

f:id:harukus:20201213212209p:plain - 必要な項目を入力します。 f:id:harukus:20201213212304p:plain

2,スコープを設定する

f:id:harukus:20201213212641p:plain - User Token Scopesで「chat write」を選択します。(Slackに書き込むことが目的のため) f:id:harukus:20201213212729p:plain

3,Slackにアプリをインストールする

f:id:harukus:20201213213309p:plain

4,OAuth Access Tokenの取得

f:id:harukus:20201213213859p:plain


これで準備は完了です。 次は実際に投稿していきます。

参考:Slack API 推奨Tokenについて - Qiita

compact メソッド

Ruby | Flatten Array | Exercismにて。

入れ子になったリストのような構造体を受け取り、nil/null 値を含まない平坦化された構造体を返す関数を作る

1,[2,3,null,4],[null],5]
入力すると [1,2,3,4,5]
と出力される

↓自分で考えたもの

class FlattenArray
  def self.flatten(array)
    flatten_array = array.flatten # 平坦化する
    flatten_array.delete(nil) # nil を消す。flatten_arrayにはnilが抜かれた状態だが、この返り値はnilになる。
    flatten_array # nilがない状態の配列
  end
end

↓一番多くスターを獲得しているSiarhei Kavaliouさんの回答

class FlattenArray
  class << self
    def flatten(arr)
      arr.flatten.compact
    end
  end
end

serg-kovalev's solution to Flatten Array on the Ruby track | Exercismより引用

compactというインスタンスメソッド自身から nil を取り除いた配列を生成して返すので、上記の課題を全て解決できる。

参考  

bundler

以前フィヨルドブートキャンプで「bundlerの基本を理解する」というカリキュラムがありました。 その時は理解したと思っていましたが、忘れてしまったのか、理解していなかったのか、どういうものか説明できなくなってしまっていました。 そこで参考にしたサイトです。 - 【Rails】結局bundlerって何?bundlerの仕組みを図解形 | Pikawaka - ピカ1わかりやすいプログラミング用語サイト - Bundlerの使い方 - Qiita

また、任意のgemをGemfileに追記してbundle installしてくれるコマンドがあるみたいです。 bundle add GEM_NAME [--group=GROUP] [--version=VERSION] [--source=SOURCE]

便利そう!

技術書の読み方 / 配列

最近、技術書(楽々ERDレッスン)を読んでいて全くわからず、フィヨルドのプラクティスも止まってしまった。。。 そのとき、りほやんさんに教えてもらった技術書の読み方。
学習を加速させるインデックス読書術 - Qiita とりあえず、フィヨルドの課題を進めつつわからなくなったら本を読む、という形にしてみることにします!


配列の引き算

配列の引き算、なんとなく読んだことがあるけども実際に使ったことがありませんでした。

a = [1, 2, 3]
b = [3, 4, 5]
p a - b # => [1, 2]

左の配列の要素から共通する要素を除外する。


a~zの配列の書き方

私は

("a".."z").to_a

と書いたのですが、このような書き方もありました

[*"a".."z"]


Ruby Track | Exercismのpangramを通して学んだことです。

文中の空白削除 / with_indexの使い方

文字中の空白削除

gsubメソッドを使う

irb(main):001:0> a = "BUMP OF CHICKEN"
irb(main):002:0> a.gsub(" ","")
=> "BUMPOFCHICKEN"

第一引数に指定したものを第二引数のものに全て置き換えることができる


with_indexの使い方

例えば、配列の中の偶数番目の数字だけ10倍にしたいな〜、というとき

arr = [1, 2, 3, 4, 5, 6, 7]
arr.map.with_index{|n, i|
# 偶数番目を10倍にするのでインデックス番号が奇数の時の条件を作る(インデックスは0から始まる)
  if i % 2 != 0
    n * 10
  else n
  end
}

=> [1, 20, 3, 40, 5, 60, 7]

また三項演算子を使うと1行でかけます

arr = [1, 2, 3, 4, 5, 6, 7]
arr.map.with_index { |n, i| i.odd? ? n * 10 : n }

=> [1, 20, 3, 40, 5, 60, 7]

Ruby | Luhn | Exercismを通して学んだことです 参考
- String#gsub (Ruby 2.7.0 リファレンスマニュアル)
- Rubyのmapメソッドでwith_indexを使う方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン
- raven-rock's solution to Luhn on the Ruby track | Exercism