Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ(20200310後編)Flutter+Firebaseでモバイルアプリ開発、命名7つの鉄則、Rubyバージョンを切り替えるchruby gemほか

こんにちは、hachi8833です。こちらのサイトの評判がめちゃいいですね。


stopcovid19.metro.tokyo.lg.jpより

以下はつっつき後に見つけたツイートです。尊敬するオードリー・タン氏❤️が対策サイトにプルリク投げてくれたとは😂🎉。GitHubで👍がこんなにたくさん付いてるのを見たのは初めてかもしれません。

  • 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください

Ruby

chruby: rbenvのライバル登場か(Ruby Weeklyより)

# 同リポジトリより
$ chruby 1.9.3
$ chruby
 * ruby-1.9.3-p392
   jruby-1.7.0
   rubinius-2.0.0-rc1
$ echo $PATH
/home/hal/.gem/ruby/1.9.3/bin:/opt/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1/bin:/opt/rubies/ruby-1.9.3-p392/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/hal/bin:/home/hal/bin
$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2013-02-22 patchlevel 392) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/hal/.gem/ruby/1.9.3
  - RUBY EXECUTABLE: /opt/rubies/ruby-1.9.3-p392/bin/ruby
  - EXECUTABLE DIRECTORY: /home/hal/.gem/ruby/1.9.3/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/hal/.gem/ruby/1.9.3
     - /opt/rubies/ruby-1.9.3-p392/lib/ruby/gems/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/

つっつきボイス:「rbenv的なchruby、なるほど: 今のところrbenvで間に合ってますけど☺️」「そういえば最近はもっぱらrbenv使ってるのでrvm使わなくなりました」「rvmは少々お行儀が悪かったんですよね〜😢」「chrubyはcdコマンドにフックかけてないってありますね」「そうそう、rvmはcdにフックかけてた気がする: rbenvはどうだったかな〜🤔」「忘れた頃につっかかったりしそうですね😅」「謎の理由でrvmが死んだことはあった😇」

Symbol#to_sの挙動


つっつきボイス:「Noah Gibbsさんの記事で、とりあえず手元で一次訳してみました(近日公開予定)」(眺めてみる)

「Ruby 2.7 previewでto_sがfrozen stringを返すように変更してみたら、思った以上に影響が大きそうだったので最終の2.7には入らなかったという話でした」「ははぁ、これはありそう」「#16150でも"foo".freeze.to_s.frozen?とかいろいろやってみてるし😆」「特に元がstringだった場合に元と同じstringを返すので、改変すると元のも変わっちゃったりすることがあったようです」「object_idが同じになっちゃうんでしょうね🤔」

「普通に考えればto_sがfrozen stringを返すのは正しそうなんですけどね」「いろんな使われ方されてると難しいんでしょうね😅」

命名7つの鉄則


つっつきボイス:「記事のドメイン名がnamingthings.coですって😆」「ネーミングしか興味なさそう😆」

「PronounceabilityとかSearchabilityって、ググラビリティみたいな造語の匂いがしますね」「Austerityって何だろ?🤔」「辞書的には『謹厳な』みたいな感じですけど、ニュアンスとしては『ふざけない』『ひねらない』という雰囲気かなと」「はぁ〜なるほど、一部の人間にしか理解できないようなジョークを混ぜたりすると本質とか意図がぼやけちゃうよね、という主張か」「temporary conceptsを使うなというのもそれっぽいですね」

「don’t be cleverのcleverはネガティブなニュアンスでしょうね😆」「cleverは割と『小賢しい』『猪口才な』という匂いになります😆」「教養を盛り込みすぎた挙げ句、知らない人に伝わらなかったら元も子もないというか🧐」「『これがわかるかねキミ😎』みたいな😆」「そういえば日本ではそういう意味でのcleverすぎる変数名って見ない気がする🤔」「この記事なかなかよさそう👍」「やった😋」


記事ななめ読み:

  • 一貫性(consistency)
  • 理解のしやすさ(understandability)
  • 特定性(specificity) — あまりに特定しすぎてもいかん
  • 長すぎず短すぎない(brevity)
  • 検索しやすさ(searchability)
  • 発音のしやすさ(pronounceability)
  • 素直さ(austerity)

その他Ruby


つっつきボイス:「『RubyをWindowsでまともに動かす』ということをそもそもしたくない😆」「😆」「WSLでも結局Windows Subsystem for Linuxで動いてるのでWindowsなのか?というのは疑問ではある」「それLinuxでは感😆」「そういえばこんなツイートも↓」

「ああこれ、自分も大学でRubyInstaller使ってWindowsでRails教えてましたけど、とにかくgemが軒並み動かなくなります😇」「あ〜😳」「Rails本体はぎりぎり動くんですけど、サードパーティgemがたいてい動かなくて😭: pgとかmysql2みたいなアダプタを使おうとするだけでdllを入れないといけないし、SQLite使おうとしてもSQLiteやdllをインストールするところから始めないといけないとか」「何にもできませんね😇」「か、悲しい😅」「これじゃつらすぎですよもう😭」

参考: WindowsでRailsTutorialするときに気をつけること - Qiita

DB

Joe Bot: PostgreSQLクエリ最適化をアシストするAI(Postgres Weeklyより)


postgres.aiより


つっつきボイス:「クエリ最適化アシスタント」「普通にCIに常駐するようなボットっぽいですけど」「クエリオプティマイザにシナリオを何回も流し込んで…みたいなのは昔からあるけど、これは外からやるのかな?🤔」

(アニメーションGIFのデモ画像を見て)「このJoe Botくんが『こうしてみたらどう?』って教えてくれて、Slackbot形式でやりとりができるというものみたい😋」「おぉ〜」「PostgreSQLの内蔵クエリオプティマイザを改善するというよりは、人間が書くSQL文のオプティマイズをサポートするボットでしょうね☺️」「あったら使うかなどうかな〜、DBAな人ならうれしいかも」「これは遅いかもみたいな雰囲気だけでやりとりするんじゃなくて、エビデンスベースでやりとりできて記録がSlackに残るのはよさそう👍」

クラウド/コンテナ/インフラ/Linux/Serverless

CloudWatchの改善


つっつきボイス:「お〜複数アラーム組み合わせができるようになってる😋」「今までは単品のアラームしかできなかったんですね」「元々CloudWatchはあまり凝ったことはできませんし、sensing intervalとかも融通が効かないし😆」「ははぁ」

babaさんとも話したことありますけど、CloudWatchを高度な監視のために積極的に使う理由ってあんまりなくて、あるとすればAWSにビルトインされていて何のセットアップもしないで使えるってことぐらい😆」「ないよりはマシなぐらいでしょうか?」「同じものを自分で立てるのはしんどいので、まったくないと困るけど、でも不便😢」

「とは言え、複数アラームを組み合わせて条件付けして『こういうときは無視していい』とかできるようになったのは割とありがたい👍」

参考: CloudWatch 複合アラームが利用可能になりました!! | Developers.IO

KubernetesのHelmとは

つっつきボイス:「Helmっていうとemacsとかで入力支援するツールを思い出す😆」「VimでもHelm使えるのかな?」「名前ぐらいは聞いたことあるかも(Vimmerなの❤️)」「あとはzshとかでシェルを超リッチにしてる人たちが使ってそう」

参考: 初心者〜初級者のためのEmacs-Helm事始め : 前編 - Qiita

「でさくらの記事のHelmは、ほんとにKubernetesのマネージャか」「くばねて、触ってます?」「触ろうと思いつつまだですね〜😆」「Kubernetes入門みたいな本買って読んでるけど、手を動かしながらじゃないとなかなかわからんな〜📕」

「ところでKubernetesの対抗馬って今のところなさそうですね」「まあ強いて言うならAWSのECSとか」「たぶんですけど、ECSはくばねてのような方向性にはならないだろうという確信が自分の中では得られました😆」「ECSはコンテナオーケストレーションの先駆けですから😆」「あとDocker Swarm😆」「Docker Swarm!たぶんKubernetesにはもう勝てないでしょう⚔️」

「今だとどんなオルタナティブがあるんだろか?」「この辺の記事↓かな〜」「PrometheusにDocker Composeに…」「Prometheusは違うのでは😆」「違う気がする😆」

参考: 9 Best Orchestration Open Source Docker Tools in 2018

「こっちも見てみよう↓」「ああMinikubeもあるな〜」「Minikubeは割とすんなり入りますね😋: でもKubernetes使いたいレベルの案件だったらKubernetes動かさないと意味ないかもって自分は思いますけど😆」「😆」「そうそうRancherってのもあった」

参考: 14 Best Docker orchestration tools as of 2020 - Slant

「ざっと眺めた感じ、とりあえずKubernetes勉強しとくのがいいのかな〜🤔」「自分たちはDocker Composeで収まる範囲でやってることがほとんどだけど、Kubernetesが必要になりそうなレベルになったら代用品じゃなくてKubernetesでやらないとキツいかも☺️」

「今更ですけど、Docker Composeってオーケストレーションツールなんですね」「あれは確かにオーケストレーションしてますね🧐: シングルホストだけど」「気づかずに使ってました…😅」

その他クラウド

つっつきボイス:「そうそう、これはWSL2の話」「へ〜、Windows HomeでDocker Desktopが使える?」「順番としてはWSL2がWindows Homeに来たからそれを使ってDocker Desktopが動くようになるということかと」「WSL2ってヤツがWindows Professionalじゃなくても動くようになった?」「Hyper-Vのサブセット的なWSL2がWindows Homeでも動くようになるということですね☺️」「Professional版とは何ぞや感😆」「まあHyper-Vの機能がすべてWSL2で使えるわけではないらしいので」「あ、そうなのか😅」「Windows Homeを最新に上げれば使えるのかな?まだ上げてないからわからんけど😆」

参考: WSL2で劇的に変わるあなたのWebアプリケーション開発環境【その2:導入編】 | SIOS Tech. Lab
参考: Windows 10 での Hyper-V の有効化 | Microsoft Docs

JavaScript

FlutterとFirebase


flutter.devより



firebase.google.comより


つっつきボイス:「FlutterとFirebaseをつい取り違えそうな自分でした😅」「たぶん今の世の中で、iOSアプリとAndroidアプリを最速で公開する最もお手軽な方法といえば、FlutterとFirebaseの組み合わせって感じですかね〜☺️」「でしょうね: 何しろサーバーサイドも含めて全部お膳立てされてますし」「後はDartさえ書けば🤣」「それな🤣」「ダ〜トか〜😅」

参考: 【Flutter入門】開発言語Dartの特徴を解説するよ | TECHRISE

「あと同じ記事の中で、BLoCとかいう設計方法についてのリンク↓があったので開いてみたら『自分はもうBLoC使ってません』と書いてありました😇」「今はいろいろ過渡期ですから😆」

参考: FlutterのBLoC(Business Logic Component)のライフサイクルを正確に管理して提供するbloc_providerパッケージの解説

「ともあれ、個人でモバイルアプリをとりあえず作ってみたいというレベルであれば、FlutterとFirebaseの組み合わせは全然ありだと思います👍」「よ〜し😋」「とにかくこういうのはぱぱっと作って運用してみることですね: 後は投資を集めて会社を大きくするなり売却するなりしてもいいし、運用が回ってくればエンジニアも集まってくるので、じゃあロックインされた部分を切り離そうかみたいなこともできるようになるでしょうし」「ですね☺️」「スタートにはこういうのがいいと思います❤️」

「少なくともReact Nativeでやるよりはよさそう😆」「😆」「React Nativeみたいなゴツいフレームワークは、計画がみっちり立っていてがっつり投資集めて作ることが決まってるような案件でないと、重たそう😆」「React Nativeでないとできないような内容なら別だけど😆」


reactnative.devより

追いかけボイス: 「React NativeとFlutterどっちがゴツいといったらどっちも十分ごついと思う人です」(社内Flutter勢より)

CSS/HTML/フロントエンド/テスト

Googleが検索をモバイルファーストへ


つっつきボイス:「お、まだ終わってなかった?」「前からやるぞって宣言してましたけど、まだだったとは」「とりあえずオレオレRailsアプリのモバイル対応がまだ不十分なので気になってました😅」

その他フロントエンド

言語・ツール

文字について


つっつきボイス:「昔からあるサイトですが、古い記事もちゃんと更新されているのがいいなと思って」「出たな異体字セレクタ」「DTPわかんない😇」「DTPの世界はWebと背景や文脈が異なるので、Web屋が気軽に手を出しにくいですね☺️」

その他言語


つっつきボイス:「自分は見かけなかったな〜これ」「理由があるのかないのかもわからん😆」「システム屋がガチガチの要求受けて作ったらこうなりそう」「縦は絶対揃えろとか…ってこれプロポーショナルだから揃ってないし😆」

その他

読み方も大事

情報系の用語は英語由来のワードが多いですし、日本語でも「引数」のように日常生活ではなかなか使わない単語が登場します。独学だとどうしても自己流の読み方となってしまい、実際に就職したりプログラミング系のコミュニティに参加したりするときにコミュニケーションのハードルになってしまう可能性があります。(恥ずかしながら、私自身も中学生時代は「引数」を「いんすう」と読んでしまっていた苦い経験があります。)
そのため、N予備校では可能な限り、初出の単語や英単語には括弧書きで以下の画像のように読み方を付けています。
同記事より


つっつきボイス:「ドワンゴのN予備校頑張ってるな〜」「N予備校も今教材を無料開放してるみたいですね」「開校した当初は一部の人たちには注目されつつも一般からは遠巻きに見られていた感じでしたけど、今回の休校騒ぎで評判が変わってくるかも🤔」「私ちょっと興味ありました😋」


nnn.ed.nicoより

電子書籍期間限定無償公開の嵐


つっつきボイス:「こちらも続いて無償公開のエントリです」「ko1さんの『Rubyのウラガワ』が期間限定で無償で読める!」

「無償コンテンツ公開はありがたいけど、世の保護者が今最も欲しいのは子どもから目を離さず世話をしてくれる大人でしょうね」「そうなんですよね😢」「自分もマンションの自治会で『家で仕事してるならちょっと見といてもらうことってできますか?』って聞かれましたし😅」

「ついでといいますか、以下はZoomで参加可能なイベントです」「Zoomで400人!」「やれるもんなんですね」「Zoomのウェビナーっていう機能を使うと大人数で参加できるんですよ」「へぇ〜!😳」「ただし別料金💰」「パネリストも100人いると排他で話すの大変そう…」


追いかけボイス: 3/19の銀座Rails#19もZoomでのリモート参加形式になったそうです。「出張!Railsウォッチ」もあります。

番外

「密集恐怖症」って呼んでた


つっつきボイス:「ああこれ😆、なんちゃらフォビア系でこういうのありますね」「自分は昔から適当に密集恐怖症って呼んでました: こういう集合体恐怖症のケってあります?」「蓮コラ的な?自分はそんなにないかな😆」「自分も特にないんですが苦手な人はとことん苦手なのを何度も目にしました」「こういう根源的な恐怖は生理的なものだから理由とか関係ないでしょうし」「恐怖って脳のかなり下の層からきてるみたいですし」

参考: トライポフォビア - Wikipedia


後編は以上です。

バックナンバー(2020年度第1四半期)

週刊Railsウォッチ(20200303後編)Ruby 2.7で引数のruby2_keywordsフラグを確認する、fake_apiでAPIプロトタイプ、groupdateで日付をグルーピングほか

今週の主なニュースソース

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp Slackなど)です。

Rails公式ニュース

Ruby Weekly

RubyFlow

160928_1638_XvIP4h

Postgres Weekly

postgres_weekly_banner


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。