- Ruby / Rails関連
週刊Railsウォッチ(20200310後編)Flutter+Firebaseでモバイルアプリ開発、命名7つの鉄則、Rubyバージョンを切り替えるchruby gemほか
こんにちは、hachi8833です。こちらのサイトの評判がめちゃいいですね。
- リポジトリ: tokyo-metropolitan-gov/covid19: 東京都 新型コロナウイルス感染症対策サイト / Tokyo COVID-19 Task Force website
- サイト: 都内の最新感染動向 | 東京都 新型コロナウイルス感染症対策サイト
以下はつっつき後に見つけたツイートです。尊敬するオードリー・タン氏❤️が対策サイトにプルリク投げてくれたとは😂🎉。GitHubで👍がこんなにたくさん付いてるのを見たのは初めてかもしれません。
台湾のIT大臣からのプルリクエスト。こんな形で政治家の人たちと僕らの業界の距離が近づくのってなんかいいな☺️ただし、日本の政治家じゃなくて台湾の政治家だけど・・・。
Fix language selector label for zh-TW (体 -> 體) by audreyt · Pull Request #827 · tokyo-met... https://t.co/XAXvF1WLl0
— Junichi Ito (伊藤淳一) (@jnchito) March 8, 2020
征夷大将軍と大臣ってどっちが偉いのかたまに質問を受けている人生です
— 大沢和宏 (@Yappo) March 9, 2020
- GitHub: audreyt (唐鳳)
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内や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
の挙動
Symbol#to_s Returned a Frozen String in Ruby 2.7 previews - and Now It Doesn’t https://t.co/7qjTZz7pi5
— AppFolio Engineering (@AppfolioEng) January 17, 2020
つっつきボイス:「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つの鉄則
Link: The 7 principles of naming | Naming Things: https://t.co/yge9TfhUwV
— Yukihiro Matsumoto (@yukihiro_matz) March 5, 2020
つっつきボイス:「記事のドメイン名がnamingthings.coですって😆」「ネーミングしか興味なさそう😆」
「PronounceabilityとかSearchabilityって、ググラビリティみたいな造語の匂いがしますね」「Austerityって何だろ?🤔」「辞書的には『謹厳な』みたいな感じですけど、ニュアンスとしては『ふざけない』『ひねらない』という雰囲気かなと」「はぁ〜なるほど、一部の人間にしか理解できないようなジョークを混ぜたりすると本質とか意図がぼやけちゃうよね、という主張か」「temporary conceptsを使うなというのもそれっぽいですね」
「don't be cleverのcleverはネガティブなニュアンスでしょうね😆」「cleverは割と『小賢しい』『猪口才な』という匂いになります😆」「教養を盛り込みすぎた挙げ句、知らない人に伝わらなかったら元も子もないというか🧐」「『これがわかるかねキミ😎』みたいな😆」「そういえば日本ではそういう意味でのcleverすぎる変数名って見ない気がする🤔」「この記事なかなかよさそう👍」「やった😋」
記事ななめ読み:
- 一貫性(consistency)
- 理解のしやすさ(understandability)
- 特定性(specificity) -- あまりに特定しすぎてもいかん
- 長すぎず短すぎない(brevity)
- 検索しやすさ(searchability)
- 発音のしやすさ(pronounceability)
- 素直さ(austerity)
⚓その他Ruby
ほんとこれ。
特にRailsは周辺ライブラリとのバージョン依存が激しいのでUnix系OSでないと割とリアルに死ねる。
で、winにおけるRuby開発環境の最適解はVM→Dockerと来て、今はWSL。 https://t.co/KnybpQNOyy— easter2501 (@easter2501) March 4, 2020
つっつきボイス:「『RubyをWindowsでまともに動かす』ということをそもそもしたくない😆」「😆」「WSLでも結局Windows Subsystem for Linuxで動いてるのでWindowsなのか?というのは疑問ではある」「それLinuxでは感😆」「そういえばこんなツイートも↓」
甥っ子がプログラミング勉強したい、Rubyで、というので、「ふりがなRuby」を勧めたら、rails newでつまずいたり(yarnのインストールが必要)、MAMPのエラーで接続できなかったり(EventLog問題)、つまづきが多くて、「これだからWindowsってやつは」ってなってる。
— Yukihiro Matsumoto (@yukihiro_matz) March 4, 2020
「ああこれ、自分も大学でRubyInstaller使ってWindowsでRails教えてましたけど、とにかくgemが軒並み動かなくなります😇」「あ〜😳」「Rails本体はぎりぎり動くんですけど、サードパーティgemがたいてい動かなくて😭: pg
とかmysql2
みたいなアダプタを使おうとするだけでdllを入れないといけないし、SQLite使おうとしてもSQLiteやdllをインストールするところから始めないといけないとか」「何にもできませんね😇」「か、悲しい😅」「これじゃつらすぎですよもう😭」
参考: WindowsでRailsTutorialするときに気をつけること - Qiita
⚓DB
⚓Joe Bot: PostgreSQLクエリ最適化をアシストするAI(Postgres Weeklyより)
つっつきボイス:「クエリ最適化アシスタント」「普通に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ってオーケストレーションツールなんですね」「あれは確かにオーケストレーションしてますね🧐: シングルホストだけど」「気づかずに使ってました...😅」
⚓その他クラウド
Docker Desktop が Windows Home に来た。 / “Docker Desktop for Windows Home is here! - Docker Blog” https://t.co/OK6ioVEvvl
— mattn (@mattn_jp) March 6, 2020
つっつきボイス:「そうそう、これは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と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でないとできないような内容なら別だけど😆」
追いかけボイス: 「React NativeとFlutterどっちがゴツいといったらどっちも十分ごついと思う人です」(社内Flutter勢より)
⚓CSS/HTML/フロントエンド/テスト
⚓Googleが検索をモバイルファーストへ
つっつきボイス:「お、まだ終わってなかった?」「前からやるぞって宣言してましたけど、まだだったとは」「とりあえずオレオレRailsアプリのモバイル対応がまだ不十分なので気になってました😅」
⚓その他フロントエンド
⚓言語・ツール
⚓文字について
つっつきボイス:「昔からあるサイトですが、古い記事もちゃんと更新されているのがいいなと思って」「出たな異体字セレクタ」「DTPわかんない😇」「DTPの世界はWebと背景や文脈が異なるので、Web屋が気軽に手を出しにくいですね☺️」
⚓その他言語
小田急の車内ビジョンの英語案内が、全角表記で気持ち悪いことこの上ない。なあ、美しくないと思わんの?何か理由あるの? pic.twitter.com/uTfLQsE4Rl
— ◆大崎一万発◆ (@manpatsu) December 17, 2018
つっつきボイス:「自分は見かけなかったな〜これ」「理由があるのかないのかもわからん😆」「システム屋がガチガチの要求受けて作ったらこうなりそう」「縦は絶対揃えろとか...ってこれプロポーショナルだから揃ってないし😆」
⚓その他
⚓読み方も大事
情報系の用語は英語由来のワードが多いですし、日本語でも「引数」のように日常生活ではなかなか使わない単語が登場します。独学だとどうしても自己流の読み方となってしまい、実際に就職したりプログラミング系のコミュニティに参加したりするときにコミュニケーションのハードルになってしまう可能性があります。(恥ずかしながら、私自身も中学生時代は「引数」を「いんすう」と読んでしまっていた苦い経験があります。)
そのため、N予備校では可能な限り、初出の単語や英単語には括弧書きで以下の画像のように読み方を付けています。
同記事より
つっつきボイス:「ドワンゴのN予備校頑張ってるな〜」「N予備校も今教材を無料開放してるみたいですね」「開校した当初は一部の人たちには注目されつつも一般からは遠巻きに見られていた感じでしたけど、今回の休校騒ぎで評判が変わってくるかも🤔」「私ちょっと興味ありました😋」
- サイト: N予備校
⚓電子書籍期間限定無償公開の嵐
" #Ruby インタプリタという,実際に多くの人が利用しているアプリケーションを題材にしてデータ構造とアルゴリズムを学ぼう / 単なる実装の紹介だけではなく,なぜそのような選択をしているか,その背景も紹介" / “WEB+DB PRESS連載記事「Rubyのウラガワ」を期間限定で無…” https://t.co/bIwD87VmpN
— 安川要平/Yohei Yasukawa (@yasulab) March 5, 2020
弊社ソニックガーデンの代表@kuranukiが執筆したリモートワークの書籍が、期間限定で全文無料公開されました🙌リモートワークの導入を進めたい方はぜひ! / “書籍「リモートチームでうまくいく」を全文公開します(2020年のアップデート付き) - SonicGarden 株式会社ソニ…” https://t.co/AoG3iKvezv
— Junichi Ito (伊藤淳一) (@jnchito) March 5, 2020
1年分なので俺が書いた分はないなと思ってたら、
2019年1月号には自分も書いてました。
今なら大人もタダ!「子供の科学」無料公開特設サイトhttps://t.co/Lv0GhL2Ndy
— 森山和道/ライター、書評屋 (@kmoriyama) March 5, 2020
つっつきボイス:「こちらも続いて無償公開のエントリです」「ko1さんの『Rubyのウラガワ』が期間限定で無償で読める!」
「無償コンテンツ公開はありがたいけど、世の保護者が今最も欲しいのは子どもから目を離さず世話をしてくれる大人でしょうね」「そうなんですよね😢」「自分もマンションの自治会で『家で仕事してるならちょっと見といてもらうことってできますか?』って聞かれましたし😅」
「ついでといいますか、以下はZoomで参加可能なイベントです」「Zoomで400人!」「やれるもんなんですね」「Zoomのウェビナーっていう機能を使うと大人数で参加できるんですよ」「へぇ〜!😳」「ただし別料金💰」「パネリストも100人いると排他で話すの大変そう...」
Link: Ruby3 さみっと online - connpass: https://t.co/zDfudKfmNU
— Yukihiro Matsumoto (@yukihiro_matz) March 5, 2020
追いかけボイス: 3/19の銀座Rails#19もZoomでのリモート参加形式になったそうです。「出張!Railsウォッチ」もあります。
生の声、ピザ、ビールを楽しみにされていた方々には申し訳有りませんが、ご理解頂きたく...
初めての試みのため、何かと不手際等あるかと思いますが、何卒よろしくお願い致します。https://t.co/NWG2kP7L0o— ginza_rails (@GinzaRails) March 3, 2020
⚓番外
⚓「密集恐怖症」って呼んでた
つっつきボイス:「ああこれ😆、なんちゃらフォビア系でこういうのありますね」「自分は昔から適当に密集恐怖症って呼んでました: こういう集合体恐怖症のケってあります?」「蓮コラ的な?自分はそんなにないかな😆」「自分も特にないんですが苦手な人はとことん苦手なのを何度も目にしました」「こういう根源的な恐怖は生理的なものだから理由とか関係ないでしょうし」「恐怖って脳のかなり下の層からきてるみたいですし」
後編は以上です。
バックナンバー(2020年度第1四半期)
週刊Railsウォッチ(20200303後編)Ruby 2.7で引数のruby2_keywordsフラグを確認する、fake_apiでAPIプロトタイプ、groupdateで日付をグルーピングほか
- 20200302前編 RubyKaigi 2020は9月に延期、Railsのセキュリティパッチバージョニングが変更、dry-monadsほか
- 20200226後編 dry-rbを使うべき理由、最近のRubyオンライン教材、AWSから乗り換えた話ほか
- 20200212後編 Rubyistが解説するUnicodeとUTF-8、Sorbetが速い理由、CSSの歴史、2019年の脆弱性まとめほか
- 20200210前編 Railsのベンチマークジェネレータ、長いバックグラウンドジョブと戦う、Timestamp切り詰めの謎、Open APIツールほか
- 20200204後編 Ruby3.0の他のbreaking change、Rubyのシリアライザ、GitHubのcode ownersほか
- 20200203前編 Railsの各種高速化コミット、OpenAPIの使い所、パンくずリストgem loaf、Railsビュー最適化ほか
- 20200128後編 もう一つのgemマネージャgel、”Did you mean”の仕組みを追う、DXOpalでブラウザゲームほか
- 20200127前編 Railsでキーワード引数warning退治始まる、ライブラリとフレームワークの違い、ShopifyのRails高速化記事ほか
- 20200121後編 RubyKaigi 2020受付開始、RubyGemsとBundlerの今後、ファイル同期ツールMutagenほか
- 20200120前編 福岡でも公開つっつき会、Railsのconnection_specification_nameでprimaryという名前が非推奨に、structure.sqlとschema.rbほか
- 20200115後編 Ruby 2.7関連情報、Bootstrap 5は今年前半リリースか、PostgreSQLでやってはいけないリストほか
- 20200114前編 config_forのbreaking change、Active Storage variantをDBでトラッキング、SprocketsとWebpackの違いほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp Slackなど)です。