vivid_muimui

サーバーサイド勉強会(2017年5月)


東京スタジオのエンジニアの小山です。

この記事では、5月中に行われたサーバーサイド勉強会の内容を紹介したいと思います。
サーバーサイド勉強会の紹介や4月分の内容は前回の記事を見てください。
https://developer.aiming-inc.com/study/server_side_study_201704/

5/11 LT

月初のLTです。

今回は全体的に真面目な勉強ネタという感じではなく、ゆったりとしたものが多かったです。(公開できるスライドが少なくてすみません><)

記号でRuby

社内である日突然出された以下の問題の解説でした。

Ruby (2.3.x あるいは 2.4.x) で以下の条件の下に Hello という文字列を標準出力に出力するプログラム、
あるいはそのようなプログラムを出力するプログラムを書きなさい。

アルファベット、数字、スペース、\u007f 以上のコードポイントの文字を利用してはならない
つまり↓の文字のみを使ってよい
解答時に、レイアウトの都合でプログラムの意味が変わらない程度の改行の挿入は許可

!"#$%&'()*+,-./:;<=>?@[]^_`{|}~

(回答の例はこちらです。)

解説されている間はなんとか理解できている気がするのですが、魔術を説明されているようでとても難しかったです><
解説のスライドは公開できませんでしたが、ぜひ皆さん挑戦してみてください。ちなみに僕は解けませんでした!

5/18 code smellを検出するreekのチェック項目を読む

reekというコードスメルを検出するgemのチェック項目を読む回でした。

Reek is a tool that examines Ruby classes, modules and methods and reports any code smells it finds.

https://github.com/troessner/reek/blob/master/docs/Code-Smells.md
このページにチェック項目一覧があるので、上から順番に眺めていきました。

どれもチェック項目として納得いくものばかりですが、実際運用することを想定したときに、

  • 全部デフォルトだと厳しい
  • ケースバイケースなのでどこに基準を設定するのか難しい
  • 養成ギプスとしては良さそう

というのが全体的な感想でした。
あまりプログラムを書くことに慣れていない・Rubyに慣れていないという場合には設定するとメリットが大きそうです。そうでない場合には、Reekの設定のメンテコストや指摘箇所の対応コストが発生し、メリットよりもデメリットのほうが大きくなりそうという印象です。
ただ、こういうコードスメルがある事自体はちゃんと認識しておく必要があるので、たまに思い出したときに初心に返る気持ちで見直したいなと思いました。

5/25 react-rails の入門ハンズオン

@yhirano55によるreact-railsの入門ハンズオンでした。
@yhirano55がこのハンズオンのために用意した資料を見ながら進めました。react-rails gemに特化した内容ではなく、Reactに触れてみよう、ReactをRailsで使ってみよう、という内容のチュートリアルでした。
資料がとても良くできていて、1時間という短い時間でしたがとりあえず動かすことができて基礎も理解できました。恐る恐るレビューしていたReactのコードも今はちょっと読めるようになりました!
資料は口頭での解説がなくても十分できるようになっていると思いますので、興味ある方はぜひやってみてください。

おわりに

5月はGWがあったので3回分だけでした。
今月はReactのハンズオンが個人的にとても良かったです。Reactに関する情報は色んな所で見聞きしてはいましたが、実際に触ったことがなく、なんとなく怖いという印象を持っていました。ですが、今回実際触ってみると全然怖くないなって思いました!
情報を見聞きして満足するだけでなく、実際触ってみることが大事だなと改めて痛感した回でした。


vivid_muimui

サーバーサイド勉強会(2017年4月)


東京スタジオのエンジニアの小山です。

Aimingでは勉強会や読書会などがいろいろな形で行われているのですが、そのうちの1つにサーバーサイド勉強会という取り組みがあります。
この記事では、サーバーサイド勉強会自体の紹介と、4月中に行われたサーバーサイド勉強会の内容を紹介したいと思います。

サーバーサイド勉強会とは

サーバーサイド勉強会は、東京スタジオの主にrailsを書いているメンバーを中心とした勉強会で、週に1回1時間を業務時間中にとって行われます。(大阪スタジオでもサーバーサイドのメンバーを中心とした勉強会は行われています。)
内容や形式に関しては、「月初はLTを行う」というのが決まっていますが、それ以外は毎回違います。リリースノートを読んだり、ハンズオンをしたり、その時々で興味あるものホットなものをネタにやっています。

少し変わった取り組みとして、毎回常に Google Hangouts を使って社内のみですが配信をしています。忙しくて勉強会の会議室には行けないけど聞きたいという人や、大阪スタジオの人が見れるようにするためです。

参加人数は、会議室・Google Hangoutsそれぞれに10人弱ずつぐらいという規模で行われています。

4/6 LT

月初のLTです。LTの時間は5分でやっています。

  • Google Cloud Container Builderの話
  • ChainerRLを触ってみた話
  • UNIXコマンドの基礎
  • ズルいUI
  • 色の話
  • 美しい Slack 通知を飛ばす美しいコマンド
  • OSS Gateに参加した話

この記事を書くことになったのがLTの発表後だったため、公開できるように作られてないLTが多かったのですが、2つ公開できたので紹介します。

美しい Slack 通知を飛ばす美しいコマンド

https://rastamhadi.github.io/slides/slack_notification_command/

reveal-jsで表示されています. ?を押すとキーボードショートカット, sでスピーカーノートが表示されます

色の話


この回のLTは全体的にクオリティが高いものでどれも為になったのですが、個人的にUI/色の話がとても勉強になった回でした。
絵やデザインといった分野はとても苦手で避けてきたのですが、LTを聞いて頑張れば少しはできるようになるのでは?やってみよう、という気持ちができてきました。LTのあとの雑談で紹介された「ノンデザイナーズ・デザインブック」は速攻で注文し少しずつ読み進めてます!

4/13 Google Cloud Functions で Slack のスラッシュコマンドを作ろうハンズオン

https://cloud.google.com/functions/ 「Google のインフラストラクチャに基づくサーバーレス アプリケーション」

AWSでいうところのAWS Lambdaなのですが、そのCloud Functionsを使ってサーバーレスでお手軽にslackのスラッシュコマンドを作ってみよう、というハンズオンです。
ほかのサービスを連携したりせずに、ハードコードされたリストからランダムに選択しslackに返す、という実装をしました。

実際作られたものの一部が↓です。(どちらも僕が作ったものではありません>< )

シンプルな実装ではありますが、slackとgcpの画面をポチポチ設定して、少しのコードを書くだけでスラッシュコマンドが作成できて、本当にお手軽でした。
ハンズオンではやらなかったのですが、 Firebase Realtime Databaseを使ったスラッシュコマンドの作り方も紹介されました。

とてもお手軽だし便利で最高でした!
ですが、どんなスラッシュコマンドを作るかのアイディアが出ずに僕はまだ何も作れてないです!

4/20 Mastodonのコードリーディングとかアーキテクチャを覗いて見よう

流行りのMastodonのコードリーディングをする回でした。
https://github.com/tootsuite/mastodon
最初にMastodonがどういうものかという話がされ、rake stats -> Gemfile -> schema.rb -> modelを少し、という順に眺めていきました。
大半はGemfileを眺める時間に費やされましたが、知らないGemが多くrubyのエコシステムの充実さスゴイなと改めて思いました。

実装の詳細は全然見れなかったですが、「このgem知らなかった!便利!」とか「この書き方いいね」「この命名なるほど!」など十分有意義なコードリーディング回でした。

4/27 RailsGuideのActiveSupportのページ読み

RailsGuidesの「Active Support コア拡張機能」のページを上から眺めていくという回でした。
本家翻訳版

blank?tryなどのおなじみのが多いですが、上から順番に眺めていくと知らなかったものも結構ありました。
知らなかった中でぼくが便利そう!と思ったのは

この2つでした。

Object#instance_valuesはその名の通りinstanceのインスタンス変数をハッシュにして返してくれます。

class C
  def initialize(x, y)
    @x, @y = x, y
  end
end

C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}

使う機会はそんなに多くはないかもしれないですが、ActiveRecordの#attributesと似た振る舞いですし色々使いみちはありそうです。

String#squishString#stripと似てるのですが、冒頭と末尾のホワイトスペースを除去するString#stripの挙動に加えて、文字列中の連続したホワイトスペースを一つに減らしてくれます。

" \n  foo\n\r \t bar \n".squish # => "foo bar"

RailsGuidesは全体通すとボリュームが多いですが、見るたびに既に見たことが有るページでも新しい発見があるので、定期的に読み直さなきゃなと改めて思いました。

おわりに

月イチでLTを行う現在の勉強会のスタイルなって半年ほどなのですが、正直なところLTのネタ出しは毎回苦戦しています。
ですが、
LTをする -> 勉強会・LTを通して新しいことを知る -> ネタ出しのために勉強する -> LTをする(最初に戻る)
という良いサイクルが自分の中に出来上がりつつあって、現在の勉強会のスタイルは個人的にとてもありがたいスタイルだなと感じています。

まだ勉強会で吸収することばかりですが、そのうち新しいものを伝えていく側になれたらと思っています!