Clik here to view.

こんにちは、hachi8833です。スクショ禁止の分科会決定でひっそりざわついてます。
つっつきボイス:「ちーっす」「お、今日は久しぶりに冒頭から参加Image may be NSFW.
Clik here to view.」「いや〜もう疲れちゃったんで今日はこれで仕事終わりにしようと思ってImage may be NSFW.
Clik here to view.」「そういうときはウォッチつっつきで気分転換しましょImage may be NSFW.
Clik here to view.」「そのつもりですImage may be NSFW.
Clik here to view.」「そうそう、疲れたときはRailsウォッチImage may be NSFW.
Clik here to view.」「今日納品とかじゃなければ全然OKImage may be NSFW.
Clik here to view.: ちょうど長い実装やっと終わったんですよね」(以下延々)
- 各記事冒頭にはImage may be NSFW.
Clik here to view.でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを社内有志でつっついたときの会話の再構成ですImage may be NSFW.
Clik here to view.- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
Image may be NSFW.
Clik here to view.
週刊Railsウォッチ「公開つっつき会#8」開催のお知らせ
Image may be NSFW.
Clik here to view.
次回は3/7(木)開催です。皆さまのお気軽なご参加をお待ちしておりますImage may be NSFW.
Clik here to view.。
Image may be NSFW.
Clik here to view.
Rails: 先週の改修(Rails公式ニュースより)
コミットリストから見繕いました。@tenderloveさんのテンプレート改修が目立ちます。
Image may be NSFW.
Clik here to view.
PostgreSQLのUUIDキャストのアロケーションを削減
# activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rb#L7
class Uuid < Type::Value # :nodoc:
ACCEPTABLE_UUID = %r{\A(\{)?([a-fA-F0-9]{4}-?){8}(?(1)\}|)\z}
alias_method :serialize, :deserialize
def type
:uuid
end
- def cast(value)
- value.to_s[ACCEPTABLE_UUID, 0]
- end
+ private
+
+ def cast_value(value)
+ casted = value.to_s
+ casted if casted.match?(ACCEPTABLE_UUID)
+ end
end
つっつきボイス:「おぉ〜UUIDをプライマリキーに?」「UUIDをstringで取れるようになったのか」
「どうなんだろうね〜、UUIDをプライマリキーにしようみたいな話はIDが溢れた経験のある人はみんな言ってますけどImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「とはいえRailsのURLにあの長ったらしいUUIDが出てくるのもちょっとね〜」「マイクロソフトの
7a98c250-6808-11cf-b73b-00aa00b677a7
みたいなUUIDとさんざんお付き合いしたことありますImage may be NSFW.
Clik here to view.」
参考: Generating the UUID - Windows applications | Microsoft Docs
Image may be NSFW.
Clik here to view.
ActiveSupportのZeitwerkIntegration
にunhook!
を追加
# activesupport/lib/active_support/dependencies/zeitwerk_integration.rb#L30
def verbose=(verbose)
l = verbose ? (logger || Rails.logger).method(:debug) : nil
Rails.autoloaders.each { |autoloader| autoloader.logger = l }
end
+ def unhook!
+ :no_op
+ end
zeitwerkが1.2にアップグレードされたのも07346で取り込まれていました。
つっつきボイス:「zeitwerk、発音なんだっけ」「えっと、ツァイトヴェルクだったかな」「コミットしてるfxnさんがzeitwerkやってる人ですね」
「Zeitwerkのコミット数や規模が思ったより小さくてちょっとびっくりしました」「オートローダーやってるだけだから小さいんでしょうね: Rubyの新しい機能を使っていい感じのオートローダーを作った的な」
Image may be NSFW.
Clik here to view.
レンダラーがstringではなくレンダリング済みテンプレートオブジェクトを返すよう変更
- PR: Return rendered template objects from renderers by tenderlove · Pull Request #35265 · rails/rails
- commit: Move inline rendering content-type test to a controller test · rails/rails@d0733ba — これも関連しそう
# actionview/lib/action_view/base.rb#L289
- def in_context(options, locals)
+ def in_rendering_context(options)
old_view_renderer = @view_renderer
old_lookup_context = @lookup_context
if !lookup_context.html_fallback_for_js && options[:formats]
formats = Array(options[:formats])
if formats == [:js]
formats << :html
end
@lookup_context = lookup_context.with_prepended_formats(formats)
@view_renderer = ActionView::Renderer.new @lookup_context
end
yield @view_renderer
ensure
@view_renderer = old_view_renderer
@lookup_context = old_lookup_context
end
ActiveSupport.run_load_hooks(:action_view, self)
end
end
つっつきボイス:「いきなりstringを返すんじゃなくてテンプレートのまま返すようにしたのね」「最近のtenderloveさんはずっとテンプレートレンダラー周りにかかりっきりですね」「Railsの表示を速くしたいからだったりしてImage may be NSFW.
Clik here to view.: 主にGitHubの」「tenderloveさんはGitHubの人ですしね」
「実際レンダリング周りって、Rails的に書き進めていくと極限に遅くなるし: 表示完了まで15秒かかったなんてこともあったしImage may be NSFW.
Clik here to view.」「へ〜」「要するにパーシャルに分ければ分けるほど、どんどん遅くなる」「あ〜そんな話もありますね」「パーシャル化を進めていくと、テーブルのところとかでパーシャルが入れ子になってしまったりするんですが、そういうところで横のループと縦のループが形成されると遅くなって死ねるというImage may be NSFW.
Clik here to view.」「あんまり遅くなるから今度はパーシャルを結合していったりとかImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「Railsでパーシャルを増やしたときの遅さはもう少し何とかしないといけない気がするImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.![⚓]()
rendered_format
を非推奨化
# actionview/lib/action_view/rendering.rb#L25
module Rendering
extend ActiveSupport::Concern
include ActionView::ViewPaths
+ attr_reader :rendered_format
+
+ def initialize
+ @rendered_format = nil
+ super
+ end
...
- def rendered_format
- Template::Types[lookup_context.rendered_format]
- end
つっつきボイス:「rendered_format
を非推奨…?」「この副作用に依存しなくなったから消すと」「普段触らないところだからよくわからないけど、たま〜にこういうのが必要になったりしますねImage may be NSFW.
Clik here to view.」「たしかに〜」「ごくまれにここのコンテキストのフォーマットを取りたいみたいなのがImage may be NSFW.
Clik here to view.」
参考: rendered_format
— AbstractController::Rendering
「Railsじゃないけど、以前PHPのフレームワークでどうしてもコンテキストを取りたいことがあって、フレームワークのソースをどっさり読んでまで取ったのをちょっと思い出したImage may be NSFW.
Clik here to view.」「わかりみ」「ああいうのはツラいホントImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.![⚓]()
delete_by
とdestroy_by
を追加
#35304でDHHが足そうと決めたようです。
# #35304より
# Before
unreads.find_by(readable: readable)&.destroy
unreads.where(readable: readable).destroy_all
unreads.where(readable: readable).delete_all
# After
unreads.destroy_by(readable: readable)
unreads.destroy_by(readable: readable)
unreads.delete_by(readable: readable)
つっつきボイス:「あ〜これが欲しいのわかる!」「たしかに」「delete_by
とかdestroy_by
、あっていいImage may be NSFW.
Clik here to view.」
「delete_by
だとActiveRecordのオブジェクトを作らないことができそう?destroy_by
だとフックが動くからActiveRecordのオブジェクトを作らないといけないだろうけど」「どうでしょう?わかんないけど、destroy_by
の動作に寄せるんじゃないかな〜Image may be NSFW.
Clik here to view.:
destroy
だと削除済みのActiveRecordオブジェクトが返ってきた気がするし、find_by
もオブジェクト返すから同じにするのかななんて」「persisted
がオフになったオブジェクトを返すみたいな?」「たぶんそんな感じで」
「destroy
って、うろ覚えだけどsave
みたいな他のメソッドとちょっと動きが違ってて、たしかtrue
/false
を返さずに、削除済みのオブジェクトを返してた気がする: でdestroyed?
すると削除に成功したかどうかがわかるみたいな作りだったと思うんですよね」「あーそういうのどっかで見たことある」
参考: destroyed?
— ActiveRecord::Persistence
「だから厳密なことを言えば、削除が成功したかどうかをdestroyed?
でチェックするのが筋なんですけど、普通みんなそこまでやらないっすよねImage may be NSFW.
Clik here to view.」「
destroy
したらもう次にはリダイレクトかけたりとかImage may be NSFW.
Clik here to view.」「
true
じゃないかもしれないんだぞとImage may be NSFW.
Clik here to view.」「まあエスケープが別の例外吐くかもしれませんがImage may be NSFW.
Clik here to view.」「いずれにしろ
destroy
ってちょっと変なAPIだった覚えがあるんですよね」
「でも削除したオブジェクトを取れれば『〜を削除しました』みたいなメッセージを作りやすいし」「あ、確かに!」「delete_by
とかdestroy_by
、たしかにあっていいヤツImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
Rails
Image may be NSFW.
Clik here to view.
Rails 6のあまり前面に出ていない新機能
つっつきボイス:「TechRacho読んでればだいたい知ってること多いかな」「そんな気がしますね」
「そうそう、Webpackerが6でデフォルトになるし」
「暗号化credentialで環境をサポート」「つかそれがないと使いものにならないと思うんですけどImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「環境使い分けられないcredentialを誰が使うのかとImage may be NSFW.
Clik here to view.」「credential周りも何だかずっとやってる感」「gemがあるからそんなに不自由しないのかもしれないけど」
「ActionDispatch::HostAuthorization
ってのができたのか、へ〜」「Hostヘッダー攻撃を防ぐためのものですか」
参考: What Is a Host Header Attack? - DZone Security
「translation
メソッドと_html
、これあったな」「あったあった(ウォッチ20180723)」「i18nでこんなふうに↓_html
付けると式展開が自動でエスケープされるヤツ」
# en.yml
en:
hello_html: "Welcome <strong>%{user_name}</strong>!"
「Relation#pick
?」「あー、pluck
の単発バージョンみたいな」「LIMIT 1
がつくのね」
「update_attributes
が非推奨になる件、ちょうどこないだ社内のコードレビューでやりましたね」「ウォッチで取り上げられてたんで、そのリンク(ウォッチ20190218)をそのままレビューに貼って『非推奨になるらしいっすよ』って使いましたImage may be NSFW.
Clik here to view.」「やったねImage may be NSFW.
Clik here to view.」「業務で役に立ったImage may be NSFW.
Clik here to view.」
「MySQLのデフォルトエンコーディングがutf8mb4になる件」「まだ対応してなかったんだっけ?」「これもウォッチで扱った覚えが(ウォッチ20180925)」「たしかこの対応のためにMySQLのミニマムバージョンが引き上げられた」「そういえばそっちの方が大きい話だったかも」
「rails db:system:change
ができるようになった話(ウォッチ20190121)Image may be NSFW.
Clik here to view.」 「へぇ〜」「
create_table: :if_not_exist
もあった(ウォッチ20181203)」
「セッションオブジェクトのナビゲーション?」「dig
というハッシュ的なメソッドでセッションオブジェクトを安全に扱えるようになったのか」
「Enumerable#index_with
ですって(ウォッチ20180608)」「当時の記事で『これは優秀なメソッド』ってありますねImage may be NSFW.
Clik here to view.」
「Array#extract!
(ウォッチ20180827)」「Arrayでやれるのか〜」
「rails server -u puma
みたいにサーバーを指定できるようになるし」「ほぉ〜」
「サマリーとしていい記事Image may be NSFW.
Clik here to view.: ダラダラ書いてないのも好感持てるし」「Railsウォッチを毎週読んでない人にはこういう記事もいいかもImage may be NSFW.
Clik here to view.」「そうですねImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
Rails 5.2向け厳選gem 10種(Ruby Weeklyより)
「ちょっと時間が押してるので簡単に」「SidekiqにPryにDalli」「そしてexception_notificationは定番かな」
「プッシュ通知のFCMにWicked PDF」「Chartkickはグラフ生成」「こういうのいっぱいありすぎてImage may be NSFW.
Clik here to view.」
- リポジトリ: spacialdb/fcm
Wicked PDFとChartkickは昔の翻訳記事にありました↓。
Rails tips: Railsアプリに1行書くだけでチャートを作成できるchartkick/chartable gem(翻訳)
「AWS-SDK S3も有名」
- リポジトリ: aws/aws-sdk-ruby
「おお、will_pagenateなんてなつかしいImage may be NSFW.
Clik here to view.」「ここだけ急に古いですね」「まだ使ってる人いたんだ〜」「kaminariとwill_pagenateって同じものかと思ってたImage may be NSFW.
Clik here to view.」「will_pagenateってこんなきれいに出ましたっけ↓Image may be NSFW.
Clik here to view.」「さすがにBootstrapとか当ててんじゃね?Image may be NSFW.
Clik here to view.」「最近だとPagyが速いらしいけど」
- リポジトリ: mislav/will_paginate
- リポジトリ: kaminari/kaminari
「active_model_serializersも定番」「これはある意味難しいgemだけど、ちょろいAPIとかだったらこれでいけたりしそうではある」「少なくともjbuilderで全部やろうとするよりは全然いい」「おや、active_model_serializers、長いこと更新されてないっぽいな」「ちょい悩ましい」「active_model_serializersのリポジトリってrails-apiっていうんですね」「何だか公式っぽい雰囲気?」「微妙にイラッとするImage may be NSFW.
Clik here to view.」「あ、そうじゃなくてactive_model_serializersってRailsにマージされてるのか!」「しかしこの更新のされなさはちょっとためらいを感じるImage may be NSFW.
Clik here to view.」「完成され尽くしてるのかもImage may be NSFW.
Clik here to view.」「いやいやImage may be NSFW.
Clik here to view.」「モデルに対するDecoratorみたいなgemだし」「JSONにするためのgemというか」「何となれば自分たちでメンテできそうなささやかな規模感ではあるけど」「あり方はビューっぽいけど、それをとてもモデルっぽく書けるgemですよねImage may be NSFW.
Clik here to view.」
- リポジトリ: rails-api/active_model_serializers
- リポジトリ: rails/jbuilder
「active_model_serializers、リポジトリにソースが見当たらない…?」「他のどっかに置いてあるとか?」「もしかしてRSpecみたいな感じだったりして: RSpecって本体にはほとんど中身がなくて、実際の中身はrspec-coreとかそういうところに置かれてたりするし」「active_model_serializersのソースの場所やっぱりよくわからんImage may be NSFW.
Clik here to view.」「RubyMineとかだったら何も考えずにジャンプできるからソース探し回らなくていいんだけどな〜」
「active_model_serializersみたいなgemはソース読まないとわからない感じですよね」「このgemを使ってきれいに書いたサンプルコードとかないと使いにくい感じありますね」「root要素を指定できるオプションなんかもあって確かに欲しいヤツなんだけどデフォルトの挙動がよくわかんないしImage may be NSFW.
Clik here to view.」「undocumentedとまではいかないにしても情報がちと少ない感」「触ってみないとわからない感じなんですね」「このgemは入れてすぐ使えると思わないほうがいいかもImage may be NSFW.
Clik here to view.: 1日ぐらいああでもないこうでもないとかやってみないと(実際やったし)」「自分もやりましたよImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
rubanok: params周りをすっきりさせるgem(Ruby Weeklyより)
- リポジトリ: palkan/rubanok
久しぶりにEvil Martiansがスポンサーのgemです。Rails以外でも使えるそうです。
# 同リポジトリより
class CourseSessionController < ApplicationController
def index
@sessions = CourseSession.
search(params[:q]).
by_course_type(params[:course_type_id]).
by_role(params[:role_id]).
paginate(page_params).
order(ordering_params)
end
end
# 上を下のように書ける
class CourseSessionController < ApplicationController
def index
@sessions = planish(
# pass input
CourseSession.all,
# pass params
params,
# provide a plane to use
with: CourseSessionsPlane
)
end
end
# 全部推測させたりも
class CourseSessionController < ApplicationController
def index
@sessions = planish(CourseSession.all)
end
end
つっつきボイス:「これは嬉しいヤツでしょうか?」「ははーん、paramsを直で渡してよしなに解釈してくれる感じかな」「Ransackみたいな?」「Query Objectに近い感じ」「このgemをいきなり使われたら意味わかんなくてびっくりしそうではあるImage may be NSFW.
Clik here to view.」「上みたいにbefore/afterで示されてればわかるけど、afterだけ見せられたらヘ(゚д゚)ノ ナニコレ?みたいなImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「こういうのを柔軟にやるのはなかなか大変そう…」「やりたいことはわかるけど、それが他の開発者に伝わるかどうかが心配だな〜: その意味でこういうやり方はちょっとImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
VelocityとGitPrimeをチェックした
つっつきボイス:「Code Climateさんの記事です」「VelocityとGitPrimeって何だろうと思ったらプロダクトみたい」「VelocityはCode Climateの自社製品なんですね」
Image may be NSFW.
Clik here to view.
codeclimate.comより
Image may be NSFW.
Clik here to view.
gitprime.comより
「Velocity、ちゃんと見てないけどNewRelicとかDatadogとかみたいな感じに見える」「アプリケーションメトリクスを収集してビジュアル表示するみたいな感じ?」「Datadogが近いのかもImage may be NSFW.
Clik here to view.」「ということはGitPrimeはVelocityのライバルさんかしら」
「ところで、Code Climateの自動レビューみたいなエンジニアのコミュニケーションを自動化するみたいなツールって、CIとかを除けばなぜか日本であまり定着しないんですが、その理由はもしかすると日本では結局日本語でやりとりしてるからじゃないかなという気がしてます」「あ〜」「ほら、海外だとプライマリ言語が英語じゃない同士が英語でやりとりしてたりするじゃないですか: そういう日常会話レベルでいろいろ大変な人たち同士だとコミュニケーション自動化ツールっていろいろありがたいと思うんですが」「それあるかも」「日本だと結局口頭でやりとりする方が早いみたいな感じになったりとか」
「そういえば最近Siderってツール↓使ってるんですけど、『Siderで指摘された内容は全部直してください』ってレビューで書いてあってImage may be NSFW.
Clik here to view.、なるほどそういう使い方なんだなって思ったりしましたね」「へー、サイダーImage may be NSFW.
Clik here to view.」「あ、CiderじゃなくてSiderです」「もう日本語化されてる?」「Siderって元々日本発のサービスだった気がします(ウォッチ20180910)」「あ、そうなんだ!」「とにかくこういうのに任せるのもひとつの手だなと思って」
「おいくら万円?」「ユーザー単位か」「フリーもあるけどっ」「日本語で自動レビューされるならいいかな: 別に英語でもいいけどっImage may be NSFW.
Clik here to view.」「スタンダードが月1500円でリポジトリ数制限ないんなら、ちょっとチームで使ってみようかなという気になってきたImage may be NSFW.
Clik here to view.」「もしGitHubでしか使えないとかだったら残念だけど」「GitHubで、と書いてあるからどうもそれっぽいし」「BPSはGitLabだからGitLabで使えたらいいんだけどな〜Image may be NSFW.
Clik here to view.」「GitHubとGitLabを同期するプラグインとかでできそうな気もするけど、(GitLabの)マージリクエストをプルリクエストとしてGitHubで同期してくれないとだめだし」「そっか〜」「既に方法がありそうな気もするし、1か月ぐらいやってみたいな」「Siderにしとけば『Siderの言う通り直してください』で済むから楽そうだしImage may be NSFW.
Clik here to view.」「レビューされなくて止まっちゃうより自動レビューされる方がきっといいしImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他Rails
- 元記事: Rails profiling story, or how I caught Faker trying to teach my app Australian Slang - DEV Community Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.— faker入れたらロケールがどばっと増えた話(Hacklinesより)
- 元記事: The 10-minute Rails Pub/Sub - DEV Community Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.— 10分でわかるPub/Sub(Hacklinesより) —
ActiveSupport::Notifications
話 - 元記事: How to Create a Simple CRUD App with Rails and React · James Hibbard — かなり長い記事 (Ruby Weeklyより)
- 元記事: Tips for running free dynos on Heroku in 2019(Ruby Weeklyより)
つっつきボイス:「そういえばHerokuも昔といろいろ変わって、Dockerコンテナも動くようになってるし、できることも増えてたりするし」「へ〜!」
次回の #unasukefm は、ゲストにRuby/Railsコミッターの @a_matsuda さんを招いて収録いたします。RubyKaigiやGem作者としての松田さんの話を聴けたらと思います。配信は3月上旬予定です。 #railsdm
— Railsdm (@railsdm) February 18, 2019
Image may be NSFW.
Clik here to view.
Ruby
Image may be NSFW.
Clik here to view.![⚓]()
rescue
をちょっとカッコよくリファクタリング(Ruby Weeklyより)
短い記事なので、コードは最後のだけ引用します。
class SomeAPIService
def self.call
perform_action
rescue SomeAPIAccountExpired
send_email_with_notification_about_expired_account
rescue SomeAPIInvalidAPIKey
send_email_with_notification_about_invalid_api_key
rescue SomeAPIUnauthorizedAction
Rollbar.error('log some useful info')
end
end
つっつきボイス:「あーなるほど、Rubyのトリプルイコール===
をdef self.===(exception)
みたいにオーバーライドするのか」「すると上のようにrescue
できると」「ほーほー!これは中々Image may be NSFW.
Clik here to view.」「トリプルイコールはクラスの一致を取れたと思うので、それを例外クラスの一致チェックに使ってると」「そこに使うのね: 言われてみればたしかに〜」「PHPとかJavaScriptやってる人からすれば、
===
って完全な型一致という印象だしImage may be NSFW.
Clik here to view.」「Rubyはそこが特殊Image may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
RubyのTracePointを探る(Ruby Weeklyより)
# 同記事より
trace = TracePoint.new(:raise) do |tp|
p [tp.lineno, tp.event, tp.raised_exception]
end
#=> #<TracePoint:disabled>
trace.enable
#=> false
0 / 0
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]
つっつきボイス:「TracePointだ」「Brandon Weaverさんはこれでしばらくシリーズ記事を書くみたいです」「TracePoint、知っておくと便利だけど使う機会が年に1度あるかないかImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
RubyのBEGIN/ENDがブロックを取れる
Image may be NSFW.
Clik here to view.
「Goby言語のst0012さんが、RubyでBEGIN
とEND
でブロック取れるって知らなかった〜と言ってたので」「おぉ、Rubyのこういう大文字定数にはときどきあまり知られてない機能がありますヨImage may be NSFW.
Clik here to view.」
「たとえばRubyにDATA
ってのがあるんですけど」「えっナニソレ?」「コードの中でDATA
という定数を書いて、そのファイルの末尾に__END__
って書くと、__END__
から下にある文字列を丸ごとDATA
で読み取れる↓」「それスゴいImage may be NSFW.
Clik here to view.」「この間ちょろっと書いたNagios用のスクリプトで少し長めのERBでNagios configを書かないといけなかったんですが、そのときにこの方法でERBコードを読み込みましたImage may be NSFW.
Clik here to view.」「ヒアドキュメントよりよさそうImage may be NSFW.
Clik here to view.」「ファイルの末尾にまとめて書けるから散らからないしImage may be NSFW.
Clik here to view.」「書くときに『たしかこんな機能があったはず』と思って探して見つけたしImage may be NSFW.
Clik here to view.」
# ruby-lang.orgより
sum = 0
DATA.each_line do |line|
sum += line.to_i
end
DATA.rewind
p DATA.gets # => "sum = 0¥n"
__END__
17
19
23
29
31
参考: constant Object::DATA
(Ruby 2.6.0)
「これはRuby Gold級の技っぽいですね」「Rubyマニアじゃないとあまり知らないかもImage may be NSFW.
Clik here to view.」「これはもっと知られてもいい機能」「Ruby Gold持ってませんでしたっけ?」「いやその、
BEGIN
とEND
がブロック取れるというのは何とな〜く思い出したけどDATA
は知らなかったマジでImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他Ruby
- 元記事: JRuby 9.2.6.0 Released — JRuby.org(Ruby Weeklyより)
- 元記事: Dustin Zeisler | The Power of Ruby Structs(Hacklinesより)
人類のYARV命令列の研究が進み、各命令において任意のメソッド呼び出しが発生しうる条件は何かという情報がわかりつつある(既に最適化に使われている)が、結構多くの命令が突然任意のメソッド呼び出しを発火してしまうという結論に至ったのであった
— k0kubun (@k0kubun) February 19, 2019
Ruby で思い出したけど ruby の LSP である solargraph、直近のバージョンで幾らか直ってるのでだいぶ補完候補出る様になった。
— mattn (@mattn_jp) February 20, 2019
つっつきボイス:「LSPはランゲージサーバー」「ランゲージサーバーは流行って欲しいImage may be NSFW.
Clik here to view.」
以下はつっつき後のツイートです。
ありがとう! (Ruby の代わりに) https://t.co/awemroDqke
— Yukihiro Matsumoto (@yukihiro_matz) February 24, 2019
お誕生日おめでとうございますImage may be NSFW.
Clik here to view.!人間ならそろそろ結婚して家庭を持ってそうな年頃ですねImage may be NSFW.
Clik here to view.。
Image may be NSFW.
Clik here to view.
Ruby trunkより
Image may be NSFW.
Clik here to view.
Ruby 2.7にEnumerable#tally
が入るお(Ruby Weeklyより)
- 元記事: Ruby 2.7 — Enumerable#tally – Brandon Weaver – Medium
- commit: enum.c: Enumerable#tally · ruby/ruby@673dc51
#11076で元々count_by
という名前で提案されたのがtally
に変わったそうです。
tally: {他動-1} : 〜を勘定する、計算する、数え上げる、集計する
つっつきボイス:「タリーって?」「何でも元々count_by
って名前だったらしいんですけどtally
に変わったそうです」「はは〜、どの種類の要素がいくつあるかを数えてハッシュの形で返してくれるのか!」「こういうことたまにしますもんねImage may be NSFW.
Clik here to view.」「するするImage may be NSFW.
Clik here to view.」「自力で書くとそこそこ面倒なヤツ」「後はこのメソッドの存在を忘れなければImage may be NSFW.
Clik here to view.」「Ruby 2.7から入るそうです」「文章のアルファベットでeが一番多いみたいな、ある種の『黄金虫』的な問題を解くのが劇的にラクになりそうですねImage may be NSFW.
Clik here to view.」「名前も
count_by
よりいいかも」「count_by
だと引数渡して数えるみたいに思えるし」
# 同記事より
%w(foo foo bar foo baz foo).tally
=> {"foo"=>4, "bar"=>1, "baz"=>1}
参考: 黄金虫 - Wikipedia
「これって先週のウォッチにあった、期待する値を渡すとそれを返せるメソッドを返すgemにちょっと通じるところがあるような(ウォッチ)」「そういえば先週あの後amatsudaさんからツッコミもらいました↓Image may be NSFW.
Clik here to view.: MethodFinderっていうのがあるそうです」「Image may be NSFW.
Clik here to view.」
おそらく既に古参勢から同様のツッコミが入っていることかと思いますが、suggest ってやつは、drnic の what? (a.k.a. what_methods) の初出が2006年なのでめちゃめちゃ古典的なやつですね。パクりだとまでは言わないけど、一周回って新しいみたいな感じでしょうか。 https://t.co/aqIlzcZF1y
— Akira Matsuda (@a_matsuda) February 19, 2019
Image may be NSFW.
Clik here to view.
クラウド/コンテナ/インフラ/Linux/Serverless
Image may be NSFW.
Clik here to view.
AWS Lambdaの最適なタイムアウト(Serverless Statusより)
つっつきボイス:「Lambdaは最近タイムアウトが伸びて長く実行できるようになってるんですよね」「知らなかった〜」「Lambdaの登場直後は30秒ぐらいしかなかった覚えありますImage may be NSFW.
Clik here to view.」
「なので最近のLambdaだと確か15分ぐらいまで伸びて…ん?記事を見ると最大実行時間/リクエストが5分↑?」「ちょImage may be NSFW.
Clik here to view.この記事昨年夏なんですけど」「ホントだImage may be NSFW.
Clik here to view.」「まあAWSのこうした制限はかなり頻繁に更新されるんですよ: ↓やっぱり今は15分」「そうだったんですねImage may be NSFW.
Clik here to view.」
参考: AWS Lambda の制限 - AWS Lambda
Image may be NSFW.
Clik here to view.
aws.amazon.comより
「Lambdaもこうした制限が何度も変わっています: Lambdaの場合、タイムアウトが30秒しかないとたとえばクローラのように時間がかかる処理を回せない」「あ〜」「当時そういうものを動かしたければLambda関数を分解しないといけなかったんですが、それが5分になり、そして最近になって15分になったおかげで、ある程度のバッチ的な処理でもLambdaで回せるようになってきた」「なるほど!」「まあLambdaでそういう処理を動かすのはどうかと思いますがImage may be NSFW.
Clik here to view.: あくまでたとえとして」
「とにかく、AWSのこうした制限変更というか緩和は前提条件が変わるレベルと言ってもいいくらいImage may be NSFW.
Clik here to view.」「たしかに」「30秒が15分になればユースケースがとても広がりますしImage may be NSFW.
Clik here to view.」
「たしかAWSのELB(Elastic Load Balancing)↓なんかもそうですね: 最初の頃はやはり30秒かそこらだったんですが、それだとデカいファイルをダウンロードしたときにぶった切られるというImage may be NSFW.
Clik here to view.」「でしょうね〜」「それが今のALBでは、おや、タイムアウトが制限事項に入ってないか↓: デフォルト60秒で自分で1 ~ 4000秒に調整できるらしい」「ちなみに以前のはClassic Load Balancer」
参考: Elastic Load Balancing(クラウドネットワークのロードバランサー - ELB) | AWS
参考: Application Load Balancer - Elastic Load Balancing
「EC2の課金が秒単位に変わったなんてのもそうで、前はできなかったユースケースも使えるようになったりする」「たとえばどんなユースケースでしょう?」「秒単位になれば、ささやかなバッチぐらいならEC2で動かしてもやっていけますねImage may be NSFW.
Clik here to view.: 昔EC2が時間単位だったときは、1秒動かそうが1時間動かそうが料金同じだったので」
参考: EC2 インスタンスと EBS ボリュームで 1 秒あたりによる請求が可能に | Amazon Web Services ブログ
「制約が変わると運用のプラクティスそのものが変わるので、押さえておかないといけないヤツ」「改定があったらRSSで更新情報取れたりするんでしょうか?」「制約の改定はだいたいAWS SummitとかreInventのタイミングで出ますね」「あ〜なるほど、イベントのたびに更新が入る感じですか」「そう!だからAWSのイベントのたびにこの辺を追いかけておくと改定をキャッチできたりしますねImage may be NSFW.
Clik here to view.」
「ただ制約の緩和はそれ以外のタイミングでしれっと行われることもありますがImage may be NSFW.
Clik here to view.」「AWSの制限事項ってその都度調べないと見落としそうですね」「まあはてブで追ってればだいたい見えてくるので、見逃さないようにしておけばだいたい大丈夫Image may be NSFW.
Clik here to view.」
参考: AWS Summit Tokyo 2019 | 2019 年 6 月 12 (水) 〜14 (金) | 幕張メッセで開催
参考: AWS re:Invent 2018 | アマゾン ウェブ サービス
「ちなみに元の記事はタイムアウトの話してるけどもうタイムアウト変わってるからImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「まあ5分と15分ならそんなに大きな違いじゃないかな: 30秒と5分は大違いだけど」「いずれにしろLambdaはこの記事でチェックしているようなところは見ておきたいですね: 考え方は通用するImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
.devドメイン
つっつきボイス:「そうそう、devドメイン売り始まったImage may be NSFW.
Clik here to view.」「github.devとか取ってるのか」「大手の会社はとりあえす取っとかないとImage may be NSFW.
Clik here to view.」「後でそいつから高値で売りつけられるImage may be NSFW.
Clik here to view.」「早いもの勝ち」
「bpsで.dev取れるかな?」「bpsincなら普通取れそうだけど、3文字ドメイン取れるなら」「今取っちまおうかImage may be NSFW.
Clik here to view.」(しばしチェック)
「やったavailable」「ほあっ初期費用40万!Image may be NSFW.
Clik here to view.」「さすがにポケットマネーの範疇越えるわImage may be NSFW.
Clik here to view.」「bpsincみたいに長いと安くなったりしないかな?」「課金は安くなったけど初期費用変わらない…Image may be NSFW.
Clik here to view.」「短いドメイン名は価値高いImage may be NSFW.
Clik here to view.」
「まあ初期費用が高いのにはドメインハイエナ防止の意味合いもあるんでしょうね」「ハイエナでなくても面白半分でドメイン買われるかもしれないし」
「お、twitter.devがavailableですって」「取れば?Image may be NSFW.
Clik here to view.」「いやいやそんなImage may be NSFW.
Clik here to view.」「まあ今どきは明らかに本人でないドメインをたとえ取れたとしてもレジストラ側で拒否されるだろうし」「悪質なのはアカンとImage may be NSFW.
Clik here to view.」「google.devは…使用不可」「でしょうね〜」
「40万は無理だからbabaさんにbpsのdevドメインおねだりしちゃおうかなImage may be NSFW.
Clik here to view.」「40万あったら一番いいMacbookをフル装備で買えちゃうし」「でもたとえドメイン買っても悪質とみなされたら取り上げられちゃうんですよねImage may be NSFW.
Clik here to view.」「何かのはずみでそれ食らったらキツイImage may be NSFW.
Clik here to view.」「まあ返金ぐらいしてくれるんでしょうけど」「ドメイン購入先の規約次第だけど返金は基本ダメなんじゃないかな〜」
その後ドメイン買うかどうしようか話がSlackで進行しました。
「もし取れたらAWSのRoute 53で管理したい」「そうすっといろいろと便利そうImage may be NSFW.
Clik here to view.」「今使ってるドメイン管理会社の画面がイケてないし反映遅いしImage may be NSFW.
Clik here to view.」
Amazon Route 53(クラウド DNS - ドメインネームサーバー) | AWS
Image may be NSFW.
Clik here to view.
バークレイのサーバーレスコンピューティング総括論文(Serverless Statusより)
つっつきボイス:「Serverless Statusでトップ記事だったのがこの論文でした」
- サーバーレスコンピューティングとは
- 黎明期
- 今日のサーバーレスプラットフォームの制約
- サーバーレスコンピューティングは今後どうあるべきか
- サーバーレスの落とし穴
- まとめと今後の予測
「ざっとアブストだけ読んでみるとサーベイ論文らしい: サーバーレスの歴史と現状をアットアグランスでひととおり見渡せる感じ」「この間のEnvoy(ウォッチ20190212)もあるかな〜そこまで新しくはないかな?: お、論文は今年2月だからめちゃ新しい」
「こういうカテゴライズいいわ〜↓」「サーバーレスコンピューティングでは通常のプログラミングと違うさまざまなリソース制約とかがあるみたいな話」「そのあたりを知るのにいい論文Image may be NSFW.
Clik here to view.」「これはやる気ある人が集まって輪読とかやってもいいんじゃね?」「章単位ならそんなに大変じゃないかも」「じゃ社内の英語強い勢を巻き込みますかImage may be NSFW.
Clik here to view.」「技術論文だけに専門用語の嵐だから英語力よりコンピュータサイエンスの基礎用語を押さえてる人が欲しい感じImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
Docker創業者のお別れブログ記事
- 元記事: Au revoir - Docker Blog — Docker創業者が去った
つっつきボイス:「最後はDockerの創業者がおさらばしたというブログ記事です」「割と言葉のキツイ人だったような気がImage may be NSFW.
Clik here to view.: DockerがrunCになったときにも放言してTwitterとかからツッコまれまくったような覚えが」「runC?」「まあDockerのコアがオープンソースになってみたいなヤツ」
「今ってDockerのお株が他にどんどん奪われてる感じじゃないですか」「今のDockerはどちらかというと設計全体をDocker化するという位置付けですが、元々は単にコンテナを動かすランタイムだったんですよね: そこをrunCに取られたらもう何も残らないというImage may be NSFW.
Clik here to view.」「Docker社自体もマネタイズの機会を逃しつつあったりするし創業者としてはツラいでしょうね」「といってrunCの流れに逆らっていたらDockerはこんなに流行らなかっただろうし」「オープンソース界隈とうまくやりとりできる人じゃなかったのかななんてImage may be NSFW.
Clik here to view.」「Redisのマネタイズの件もざわついてましたね」「この辺はいろいろ難しいな〜」
「今Docker Hubを有料で使ってる人ってほぼいないっしょ?」「Docker SwarmもKubernetesにお株奪われてる感あるし、どこで儲けを出したらいいんだみたいな」
- サイト: Docker Hub
Image may be NSFW.
Clik here to view.
hub.docker.comより
- リポジトリ: docker/swarm
Image may be NSFW.
Clik here to view.
docker/swarmより
「Docker EEはDocker社がメンテしてると思ったけど、通常のDockerとの違いよくわからないImage may be NSFW.
Clik here to view.」「改めて見てみると↓、認定されたインフラ/プラグイン/ISVコンテナが使えるとかか」「他のソフトウェアでもできるものが多い感Image may be NSFW.
Clik here to view.」
「ちなみに上の記事はFacebookで見かけたんですが、そこで話題になってたのが『このヨットの絵、おかしいだろ』↓の方でした」「すごくどうでもいい話Image may be NSFW.
Clik here to view.」「私ヨットのこと全然知らなくてどこが変なのかわかりませんでしたImage may be NSFW.
Clik here to view.」「これじゃ前に進まないだろみたいなImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他クラウド
- 元記事: Introducing draft pull requests - The GitHub Blog
- 元記事: What’s new for WSL in Windows 10 version 1903? – Windows Command Line Tools For Developers
IoTデバイス「実は黙ってマイク内蔵してました!それこっちからOTAで有効にしたんでGoogleアシスタントとしても使えるようになったよ!」
EFFブチ切れ(当然である) https://t.co/41leR0Y3kM— 7594591200220899443 (@shyouhei) February 20, 2019
つっつきボイス:「卜部さんのツイートが目に止まったので」「黙ってマイク内蔵でしかもOTAで有効、そりゃエグすぎるImage may be NSFW.
Clik here to view.」「OTAって?」「
On The AirOver The Airなので要はネット越しに音取り放題Image may be NSFW.
Clik here to view.」「ひょえ〜Image may be NSFW.
Clik here to view.」「それを隠し機能とかもう何というか」
うんと昔のSciFiにあったような「ハッカー」がリモートであちこちに侵入してリアルタイムで目的の映像や音声をモニタするやつ、今や十分リアルですね。
— Shiro Kawai (@anohana) February 20, 2019
Image may be NSFW.
Clik here to view.
SQL
Image may be NSFW.
Clik here to view.
PostgreSQLのfsyncバグ
- 元記事: PostgreSQLは20年間どのようにfsyncを間違って使っていたか - 聴講メモ -
- 修正リリースノート: PostgreSQL: PostgreSQL 11.2, 10.7, 9.6.12, 9.5.16, and 9.4.21 Released!
- 動画: FOSDEM 2019 - PostgreSQL vs. fsync
つっつきボイス:「あーこれ見た見た!」「ファイルシステムごとの挙動の違いを見落としてたとかそんな話」「FreeBSDとzfsなら大丈夫っぽい」「まあfsyncが失敗するようなユースケースはオンプレミスではほぼありませんけどね: その代りNFSみたいなネット越しだと普通に失敗しますがImage may be NSFW.
Clik here to view.」
参考: Network File System - Wikipedia
Image may be NSFW.
Clik here to view.
Rails開発者にとってSQLを学ぶのが重要な理由7つ
つっつきボイス:「Everyday Railsの記事です」「SQLが重要なのはもうあったりまえの話Image may be NSFW.
Clik here to view.」「そういえばこの間のSQLQL話(ウォッチ20190212)の『Railsエンジニアはもっとデータベースを大事にすべき』で、はてブで誰かが『ごめんなさい』とコメントしてました」
「実際、Railsがどれだけ進化しようとデータがRDBに入っている限りRailsとRDBの間の通信はSQLになるんだから当然大事Image may be NSFW.
Clik here to view.」「Railsがいくら速くてもSQLが遅かったら遅くなるしImage may be NSFW.
Clik here to view.」「開発が極まってくればいずれ生SQLを書くことになるんだしImage may be NSFW.
Clik here to view.」「そうそう、SQLを書ける能力はいざというときにとっても必要」
Image may be NSFW.
Clik here to view.
その他SQL
- 元記事: Why a Database is like a Dance Class - DEV Community Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.— バレエがわからないImage may be NSFW.
Clik here to view.(DB Weeklyより)
つっつきボイス:「これは久しぶりに私には翻訳不可能と思った記事でした: データベースを無理やりバレエの用語になぞらえてみたそうですが、バレエの用語や素養が私にまったくないので面白みを理解できないというImage may be NSFW.
Clik here to view.」「これは英語が読めてもわけわかんないImage may be NSFW.
Clik here to view.」「SQLの構文をバレエに絡めてるっぽい: これの次はこれみたいに順序が決まってるとか」「これはもうネタ記事Image may be NSFW.
Clik here to view.」
だいぶ以前ですが、教育テレビでたまたま見かけたジュリアーノ・ペパリーニという男性バレリーナ(男性だからバレリーノ?)に思わず見入ってしまったのを思い出しました。バレエもダンスもわかりませんが、彼がくるくる回りながら登場しただけで、まるで星屑を振りまいてるような錯覚すら感じました。今は舞台演出家として大成功しているらしいのですが、彼自身のバレエ動画がネットにさっぱり見当たりませんImage may be NSFW.
Clik here to view.。
GIULIANO PEPARINI – SHOWREEL from giuliano peparini on Vimeo.
参考: Giuliano Peparini - Wikipedia — イタリア語Image may be NSFW.
Clik here to view.ですが
Image may be NSFW.
Clik here to view.
JavaScript
Image may be NSFW.
Clik here to view.
Trusted Web Activities(TWA)とKotlin/NativeとFlutter
今日行われたBPS社内勉強会での「DroidKaigi 2019」報告会でFlutterやKotlinなどとともにTWAの話題もあったので。
参考: DroidKaigi 2019
参考: PWA+TWAでウェブサイトを完全アプリ化、PWAサイトのGoogle Play登録も可能に | 海外SEO情報ブログ
つっつきボイス:「今日の勉強会所要で出席できなかったけどTWAの話題とか聞きたかったんですよねImage may be NSFW.
Clik here to view.」「勉強会ではkazzさんがとても的確な質問をしてくれてましたよ: morimorihogeさんもTWAが気になってたって: DroidKaigiに行った人はぶっちゃけTWAはあんまりマークしてなかったそうですがImage may be NSFW.
Clik here to view.」「だ、誰か書き起こしをImage may be NSFW.
Clik here to view.」「今回YAMAHAのいいスピーカーフォンを録画に使ったので音声クリアだと思いますImage may be NSFW.
Clik here to view.」
「うぅ、この色合い↓、Windowsノートだと目がおかしくなりそうImage may be NSFW.
Clik here to view.」「Macだともうちょっとオレンジっぽいような?」(覗き込んで)「あ〜これはかなり目に滲みる」「一応Adobe RGBに設定してるんだけどImage may be NSFW.
Clik here to view.」「どことなくメルカリっぽい色合い?」「あ、スポンサーにいるし」
Image may be NSFW.
Clik here to view.
droidkaigi.jpより
「AndroidでJavaとか特にKotlin書いてる人たちにとっては、そこにWebエンジニアが入ってきて作業を分担できるのは結構エポックメイキングというか」「TWAやるのは主にJavaScripを書く人たちということになりますね」
「Kotlin勢としては、どちらかというとKotlin/Nativeの話題の方が気になってたようです」
参考: Kotlin/Native を Android/iOS アプリ開発に導入しよう - Qiita
「で社内のiOS勢が気にしてるのはマルチプラットフォームなGUIで、中でもFlutter」「勉強会の質疑応答では、TWAとKotlin/NativeとFlutterがさながら三すくみ的な様相を呈してましたImage may be NSFW.
Clik here to view.」「そうそうそんな感じImage may be NSFW.
Clik here to view.」「Kotlin勢はDartで書きたくない、とかImage may be NSFW.
Clik here to view.」「Dartは自分もちょっとね〜Image may be NSFW.
Clik here to view.」
参考: Dart - Wikipedia
参考: Dart 2 | Dart — 昨年2が出てたんですね
Image may be NSFW.
Clik here to view.
dartlang.orgより
「Kotlin/Nativeってだいぶ前からやってたはずだけど、今どのぐらい進んでるんだろう?」「勉強会の報告ではいろいろ策定中という話だったので、まだproductionで使うほどではないのかなとも思ったり」「ライブラリもまだ足りないらしいですね」
「まあWeb開発チームとしては、ガワネイティブで食えるようになったらそれはそれでデカいんじゃね?と思ったりしてImage may be NSFW.
Clik here to view.」「かもですねImage may be NSFW.
Clik here to view.: 見た感じですが、TWAに乗るよりFlutterの方がよさそうなのかなとちょっと思ったり」「FlutterはReactとほぼ同じ感じで書けるからって強調してましたね」「Flutter勢からの勧誘Image may be NSFW.
Clik here to view.」「でもFlutterはDartですよねImage may be NSFW.
Clik here to view.」「Dart自体がJavaScriptの置き換えを目指してる言語だし、まあどうにかなるかななんてImage may be NSFW.
Clik here to view.」
「この場合ガワネイティブってどう理解したらいいでしょうか?」「要するにWebViewが入ってるだけのアプリ」「ガワだけネイティブImage may be NSFW.
Clik here to view.」「WebViewが立ち上がると後はWebViewの中でWebアプリケーションを動かすイメージ」「ちょっとElectron的な」「AndroidアプリなりiOSアプリの形になってないとアプリストアで配信できませんしね」
Image may be NSFW.
Clik here to view.
electronjs.orgより
「まあガワネイティブがReact Nativeと同じなの違うの?って聞かれたら違うんだけどImage may be NSFW.
Clik here to view.: React NativeはJavaScriptでReact書いたらそれがネイティブアプリになるというヤツだし」「でもガワネイティブの方が歴史は古いというImage may be NSFW.
Clik here to view.」「ですよねImage may be NSFW.
Clik here to view.」「今日の勉強会で途中からネイティブの意味がだんだんよくわからなくなってきましたImage may be NSFW.
Clik here to view.」「アプリケーションそのものはWebなんだけど、というか」「ガワネイティブでも、たとえばカメラ機能の部分だけ自分でちょこっと書いたりとかはするけど、他の部分はすべてWebViewにお任せしちゃう」
Image may be NSFW.
Clik here to view.
facebook.github.io/react-nativeより
「TWAだけど、ちょろいAndroidアプリみたいなのをささっと書けたらアプリの単価も取れたりしてImage may be NSFW.
Clik here to view.」「いいかもImage may be NSFW.
Clik here to view.」「ほら、Webをアプリの形にできるとたとえばHomeボタンを無効にするとかできるし」「Backボタンとかもですね」「iOSアプリにもそういうモードがあって、それで業務用アプリとして使えるようにしたり」「その意味で、形だけでもネイティブアプリにできるのは大きいっすねImage may be NSFW.
Clik here to view.」「それもあってガワネイティブには結構期待してるImage may be NSFW.
Clik here to view.」
「TWAとPWAって同じじゃないけど割と一緒に出てくることが増えてるっぽいですね」「PWAはAndroidとかに限らない話ですが、TWAはGoogleがやってるストアで扱うための仕組みの方ですねImage may be NSFW.
Clik here to view.」
「PWAとかに投資するよりは…という気がちょっとしましたけど」「まあPWAに投資したいというより、RailsでもVue.jsでもいいのでちょろいアプリをささっとPWA化できたらいいよね、ぐらいの感じで」「ぶっちゃけそれ用のヘッダーをつければ基本的にPWAにできるし: それだけだとUIというかUXまでは最適化されないにしても」「あ〜なるほど、オフラインでは使えないにしても、アプリらしい体裁でホーム画面にボタン置くぐらいのことはヘッダというかマニフェストつけるだけでできると」「そうそう、それだけでやれるならうちらもアプリ作れますって言えるしImage may be NSFW.
Clik here to view.」「そこまでラクにできるなら夢ありますね〜Image may be NSFW.
Clik here to view.」「どってことないといえばそうなんだけど、PWAでWebアプリの単価上げるのやってみたいImage may be NSFW.
Clik here to view.」「1.5倍ぐらいになったりして」
「ところで今回のDroidKaigi会場はBPSから近いのか」「発表者は2軒目のもうやんの隣とか言ってましたけど」「それってImage may be NSFW.
Clik here to view.」「方向感覚がすべて食べ物屋ベースImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他JavaScript
つっつきボイス:「mizchiさんのインタビューです」「mizchiさんがインタビューされてるのかと思ったらインタビューする側なのか」「フリーランスになったからこういう仕事もやってるのかな」
Image may be NSFW.
Clik here to view.
CSS/HTML/フロントエンド/テスト
Image may be NSFW.
Clik here to view.
WebAuthnとFIDO
- 元記事: WebAuthnでパスワードレスなサイトを作る。安全なオンライン認証を導入するFIDOの基本 - エンジニアHub|若手Webエンジニアのキャリアを考える!
- サイト: FIDO Alliance - Open Authentication Standards More Secure than Passwords
つっつきボイス:「はてブからです」「生体認証をWebブラウザでやるみたいな感じだった」「そういえばこういうのあったあった: 認証機器の種類を問わずこのフレームワークでやれるとかそういうの」
参考: 生体認証 - Wikipedia
「いつも思うけど、認証は難しいというか、どこまでやるべきか感が半端ない」「たしかに〜」「もちろん、これが漏れたら会社潰れるみたいなのはちゃんと守らないといけないけど、それ以前にリスクの分散も必要になってくるし」
「ところで何でWebAuthnのnが最後に?」「ググって見つかりやすいようにとか?」「mattnさんみたいImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
最新HTML/CSSコードスニペット
つっつきボイス:「管理画面ぐらいならこういうのでも別にいいかなとImage may be NSFW.
Clik here to view.」「社内だとデザインチーム向けの記事ですかね」「ランディングページ(LP)ぐらいだったらこういうのをふんだんに使ってもいいんじゃないかとImage may be NSFW.
Clik here to view.」
「これとかもうスゴいな〜↓」「CSSアニメーションでやるとかスゴすぎImage may be NSFW.
Clik here to view.」「もう発想一発の世界Image may be NSFW.
Clik here to view.」「これCSSだから文字を選択できるし、文字を移動しているのか書き換えているのかも一発でわかるし」
See the Pen
Flipping Out by Jon Kantner (@jkantner)
on CodePen.
「思いつきですけど、近い将来にテキストはこんなふうに動的にするのが普通になったりするかなと: 重要な部分がプルプル震えて視認性をアップするとか」「まーなくもないかも?」「今の絵文字は色まで含んでるし、文字とはグリフとは何ぞやみたいなのもぶっ飛ばしつつあるというかImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他フロントエンド
- 元記事: 通信系のデバッグには Charles が便利 - Qiita — モバイルアプリ向け?
-
サイト: Charles Web Debugging Proxy • HTTP Monitor / HTTP Proxy / HTTPS & SSL Proxy / Reverse Proxy
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
charlesproxy.comより
つっつきボイス:「これも今日のDroidKaigi報告会で触れられてました」「BPSのアプリチームの人が言うには、Charlesは有料だけどできがいいので使ってるそうです」「ほうほう、普通にプロキシでデバッグできるサービス: この種のツールは昔からいろいろありますが、使いやすいのが一番Image may be NSFW.
Clik here to view.」
「ちなみにこの種のツールはカスタム証明書が入れられるかどうかがポイント: それができないと話にならない」「あー」「でないとHTTPS通信をキャプチャしても暗号化を戻せないから読めないImage may be NSFW.
Clik here to view.」
「モバイルアプリはWebみたいにブラウザのデバッガーが見えないからこういうのが必要なのかなと思ったのですが」「Webでも必要なときはありますね: ここまでしなければならないほどの状況はめったにありませんが」「おー」「HTTPレベルの通信であればブラウザのdevツールで見えます: たとえば(API触ったことはないけど)WebSocketなんかで、TCPで言うurgentフラグみたいなのを使って今バッファにあるものを吐き出させるなんてときに、それが正しく動作しているかどうかを確認するにはHTTPレベルのキャプチャでは無理で、パケットレベルでのキャプチャが必要になるでしょうね」「なるほど」
Image may be NSFW.
Clik here to view.
言語
Image may be NSFW.
Clik here to view.
最近のPython環境構築
つっつきボイス:「Rubyでrbenvやらbundlerやらでやってるのと同じようなことをPythonでもやってるんだなと思って」「まあpyenvとかanyenvあたりでやれそう」
「記事ではこのツールがいいとかAnacondaは古いとか書いてあってコメントでツッコミがあったりしてますね」「Anacondaというと自分はRed Hatのインストーラの方を思い出すし↓」「自分もそれ聞いたことあったし」「リンク先はGUIだけど、CUIのcurses的なAnacondaもあった気がする」「PythonのAnacondaは機械学習で入れがちなライブラリだったと思うんですが、jupyter notebookあたりと一緒にインストールしたときに入ってきた覚えがあります」
参考: 第13章 Anaconda を使用したインストール - Red Hat Customer Portal
参考: curses - Wikipedia
「ところで採用面接なんかでも最近Pythonかじってる人がだんだん増えてきた感」「自分も最近触るはめになってますImage may be NSFW.
Clik here to view.」「流行りの言語でもあるし」「業務でどこまで使うかだけどImage may be NSFW.
Clik here to view.」
「Pythonでビジネスロジック書いてるって話はなぜかあまり聞かない」「そういえば」「機械学習とかAIは基本Pythonだろうけど、WebアプリとかになるとDjangoとかやってる話とか見聞きしてもそっちはあまり聞かないし」
「以前雑談してたときに聞いた話なんですが、以前Pythonを死ぬほど書いてた人が今はRubyがいいと言ってて、その理由がPythonは彼にとっては走らせてみないと挙動がわからないからということでした: Rubyは見ればだいたい挙動がわかるし、うんと小さいコードなら書いていきなりpushとかすることもたまにやったりするとも言ってました」「一般にはPythonの方がコードのブレが少ないって聞きますけど、意外ですね」「そうそう、Pythonの方が誰が書いても同じようなコードになるとか聞くし」
「自分の印象だと、Pythonはあんまりクラスのこととかうるさく言わない感じがしました」「オブジェクト指向という意味ではRubyの方が読みやすいとかそういうところがあるのかしら?」「自分のPythonの使い方がシェルスクリプトに毛の生えたようなものなのでImage may be NSFW.
Clik here to view.」
「何となくだけど、PythonはAtCoderみたいなプロコン的なところには向いてる気がちょっとした: 解くべき問題がはっきりしてて、かつ制限時間内に解くみたいな状況」「あー、一人でできる規模で、設計とかあまり関係ないところとか」
参考: AtCoder
「まあ今どきは大きいものについてはオブジェクト指向設計でやるのが当たり前ですが、オブジェクト指向設計の何がいいかというと、忘れられるところImage may be NSFW.
Clik here to view.」「Image may be NSFW.
Clik here to view.」「自分が使ってるものの内部を特に気にせず使えるのがいいところImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他言語
ので、これからプログラミング言語を作ってばーんってしたい人へのアドバイスは、「自分の感性を信じてやってみろ」くらいしかない。タイミングが良くて、デザインが良くて、良い出会いがあれば、成功するかもしれないし、そうでなくても良い経験になる。
— Yukihiro Matsumoto (@yukihiro_matz) February 19, 2019
Matz先生の説は正しくて、Goと立ち位置が似ているD言語があまりブレイクしなかった理由の一つに「早すぎた」は確かにあったと思います(標準ライブラリのFixが言語本体よりかなり遅かった、DigitalmarsにGoogleほどブランド力がなかったのも大きいですが)https://t.co/PWV8jDkEAU
— にゃーん (@zetamatta) February 20, 2019
つっつきボイス:「Matzから若い人へのアドバイス的な」「自分のやってきたことは再現性がないのであまり参考にならないけどみたいな」「上のツイートの前には以下がありました↓」「4番目は笑い取ろうとしてますねImage may be NSFW.
Clik here to view.」「きっとそうImage may be NSFW.
Clik here to view.」
Rubyに人気が出た理由として私に思いつくのは:
* オブジェクト指向スクリプト言語が「発見」されたタイミング
* Webの台頭で新言語が求められたタイミング
* 達人プログラマーに見つけてもらった縁
* 優れた言語デザインを可能にしたオレの感性
くらいで、どれも制御困難で、後進の役には立たない。— Yukihiro Matsumoto (@yukihiro_matz) February 19, 2019
「Rubyについては、たしかにタイミングの要素はとっても大きかったと思うし: みんながPHPで辟易してて、かつフレームワーク戦争の終息が見えなかった、まさにちょうどそのときにRailsが出現したので」「あの当時3つぐらいフレームワークが乱立してましたよね」「自分も3つぐらいしょうがなく使ってたし: 何でDAOをいくつも使わなきゃいけないんだとかImage may be NSFW.
Clik here to view.」
「それがRails出現後はいっせいにRailsっぽいフレームワークに落ち着きましたしImage may be NSFW.
Clik here to view.」「そうそう!何だよ結局LaravelかよってImage may be NSFW.
Clik here to view.」「Railsが出現したことで仲の悪いPHPフレームワーク同士の結束が急に強まったというかImage may be NSFW.
Clik here to view.」「今のPHPフレームワークならちょっと触ってみてもいいかな〜なんてImage may be NSFW.
Clik here to view.」
「今のPHPは型ヒント付けられるし、PHPをstrictモードで使うなら割と頑張れる気がする」「お〜」「Rubyと違って引数の型を書ける」
参考: PHP: 関数の引数 - Manual — 型宣言(タイプヒンティング)
参考: PHP: 新機能 - Manual — strictモード
「D言語ちょっぴりやったことあるImage may be NSFW.
Clik here to view.」「言語の登場の早い遅いとかちょっとしたタイミングで運命が変わるってたしかにあるな〜: WebObjectsも早すぎる登場だった感あるし」「JavaScriptも一度滅びかけたのが完全に甦ったし、あのObjective-Cなんてのも当時滅びるしかないと思ってたらNeXTで全面採用されて今やiOSまでObjective-CだったりするしImage may be NSFW.
Clik here to view.」「ほんと先のことはわからんImage may be NSFW.
Clik here to view.」「ジョブズがあのときその選択を取らなかったら今絶対残ってなかったろうし、その意味では彼がObjective-Cを復興させたといっても過言ではないし」
参考: WebObjects - Wikipedia
参考: Objective-C - Wikipedia
「そういえばObjective-Cの本って、すごく古い本とすごく新しい本のどっちかしかないImage may be NSFW.
Clik here to view.」「間がごっそり抜けてるImage may be NSFW.
Clik here to view.」「NeXTの時代とiOSの時代」「Objective-Cで最大にキモいのはCと完全コンパチなところ」「そうだった!」「Objective-CはC言語のプリプロセッサだから、実際にはCのコードを出力するし」「知らんかった〜」「Objective-Cの構文キモチワルイImage may be NSFW.
Clik here to view.」「(指で角かっこ
[ ]
作って)これですよね?」「それそれImage may be NSFW.
Clik here to view.」「名前付き引数あるのに順序が決まってるとか」「なに〜Image may be NSFW.
Clik here to view.」「それ名前付き引数なんでしょうかImage may be NSFW.
Clik here to view.」「Cとの互換性を保つためなのでしょうがないImage may be NSFW.
Clik here to view.」
// Wikipediaより
val = [obj1 msg: [obj2 msg]];
Image may be NSFW.
Clik here to view.
その他
Image may be NSFW.
Clik here to view.
ATMも顔認識で
『次期ATMは画像認識AIと複数の高精細カメラを搭載し、身分証明書を用いた本人確認手続きを自動化する。この機能を使ってコンビニエンスストアの店頭で口座開設手続きが完結』 / “セブン銀が画像AIで本人確認、次期ATMの目玉 | 日経 xTECH(クロステック)” https://t.co/S8yRsVu2ik
— 徳丸 浩 (@ockeghem) February 20, 2019
つっつきボイス:「そういえばセブン銀行も最近ATMの利用率が下がってるせいで手数料収入減ってツラいらしいしImage may be NSFW.
Clik here to view.」「たしかに現金利用する機会減ってますし」
Image may be NSFW.
Clik here to view.
MacでEXE
つっつきボイス:「MacだとたまにEXEがzipに入ってても安心しきっちゃってたし」「してた〜」「いや安心はしないけどっImage may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
その他のその他
参考: 誰でも簡単に「縫合が必要なレベルの切り傷」に応急処置を施せる「ZipStitch」 - GIGAZINE
つっつきボイス:「この傷本物なんでしょうね(イタソー)」「プロレスラーが接着剤で応急処置してから病院に行くみたいなのよりはまともそう?」「これってインシュロック(結束バンド)みたいだし」「インシュロックだ!」「アウトドアで欲しいヤツでしょうね」
参考: よくあるインシュロックの誤使用例 |ヘラマンタイトン株式会社
参考: 実在しない人の顔写真を無限に生成できるWebサイトが公開。ディープラーニング技術を応用 - Engadget 日本版
つっつきボイス:「実在しないっていうのは統計的にそうだろうと言ってるだけなんでしょうね」「混ぜてるから実在しないとかそういう感じかと」「実在しないことを直接バリデーションできたらスゴいしImage may be NSFW.
Clik here to view.」「悪魔の証明Image may be NSFW.
Clik here to view.」
Image may be NSFW.
Clik here to view.
番外
Image may be NSFW.
Clik here to view.
ウミヘビ
ウミヘビは、雨が降ったときに一時的に出来る淡水層の水を飲んでいるらしい、という話。
海水飲めないウミヘビ、水分補給の謎の一端を解明 | ナショジオ https://t.co/QcK0bmarhw
— 樺沢 宇紀 (@adx50150) February 20, 2019
Image may be NSFW.
Clik here to view.
宇宙2題
つっつきボイス:「1つめは大学のときの知り合いが趣味で作ってるはやぶさの軌道を追いかけるサイトなんですが、何年も前にNASAから(別のアプリですが)『これ使わせてくれ』って言われたという何だかスゴい人です」「ほぇ〜」
「2つ目はページのナビゲーションが見事だったので: とにかくページを下にスクロールしてみてください」「ほっほ〜Image may be NSFW.
Clik here to view.」
今回は以上です。
バックナンバー(2019年度第1四半期)
週刊Railsウォッチ(20190212)EnvoyとIstioに大注目、SQLQLとは、buildkite.comのCI、さよならItanium、PWA vs Androidほか
- 20190204 あってうれしい40のgem、Ruby 2.6.1セキュリティリリース、Hanami v2.0.0.alpha1リリースほか
- 20190128 Rails 6のオートローダーがZeitwerkに置き換わる?Rails 6はRuby 2.5が必須、最近のSQLiteほか
- 20190121 Rails 6.0.0 beta1リリース、Railsは2019年も「あり」か、Jetsでサーバーレス、ES2018の新機能、RSpecの心ほか
- 20190115 Rubyの<=でクラス同士を比較、Rubyの記号の読み方いろいろ、Ruby C API解説サイトほか
- 20190107 Railsのパフォーマンス改善Tips集、Rubyの
&:シンボル
ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。