- 開発
週刊Railsウォッチ(20190918-2/2後編)RubyPrize 2019候補者発表、GoogleがTypeScript 3.5に熱烈フィードバック、日本語形態素分析kagomeほか
こんにちは、hachi8833です。
- 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
- 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
- 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください
⚓週刊Railsウォッチ「公開つっつき会」第15回のお知らせ(無料)
第15回目公開つっつき会は、10月5日(木)19:30〜にBPS会議スペースにて開催されます。皆さまのお気軽なご参加をお待ちしております🙇。
⚓臨時ニュース: RubyPrize 2019の候補者が発表
- 元記事: RubyPrize 2019|候補者決定
今回のノミネート対象は19名です。詳しくはリンク先をどうぞ。
⚓DB
⚓MongoDBがHomebrewフォーミュラから削除された(DB Weeklyより)
- PR: Remove mongodb by fxcoudert · Pull Request #43770 · Homebrew/homebrew-core
- リポジトリ: mongodb/mongo: The MongoDB Database
- サイト: The most popular database for modern apps | MongoDB
↓いきさつです。
PSA: we are removing MongoDB from @MacHomebrew's core formulas. MongoDB was migrated to a non open-source license, and the older version we had been shipping for some time does not build anymore. Check this link below for more details: https://t.co/Gj5r91AhgB pic.twitter.com/b0WAf0gd6U
— FX Coudert (@fxcoudert) September 2, 2019
つっつきボイス:「MongoDBっていつの間にかオープンソースじゃなくなったんですね😳」「そういえばそうでしたね: 正確にはSSPL(Server Side Public License)↓になって主要ディストロから「オープンソースではない」とみなされて消えたみたいです」「おぉ〜」「MongoDBそのものをSaaSとして提供して売るならソース公開の必要がある、という感じのライセンスなので、普通に自分のサービスの中で利用するだけであれば問題なく使える、ということのはず」
参考: 2019年1月17日 SSPLはオープンソースライセンスにあらず!? Fedora,リポジトリからSSPLソフトを削除へ:Linux Daily Topics|gihyo.jp … 技術評論社
⚓サムスンがキーバリューを直接保存できるSSDのプロトタイプを発表(DB Weeklyより)
「Key Value Storage API Specification」と互換性があるそうです。
参考: Key Value Storage API Specification | SNIA
つっつきボイス:「標準的なキーバリューを保存できるSSDだそうです」「なるほどなあ、NVMe直結でKVS専用ストレージデバイスという方面があるのか: 確かにキー長をある程度固定にすればKVSの処理自体はある程度ハードウェアで処理できそうだし、利点はあるのかも」
「直接ハードウェア接続だと排他制御をドライバレベルでやってくれるだろうからアプリケーション側から気にしなくて良いとか色々な利点はありそう: とはいえデータが壊れたときの冗長化はどうするのかとかの問題はありそうだなあ」
参考: NVM Express - Wikipedia
参考: KVS(Key-Valueストア)とは - IT用語辞典 e-Words
後でSamsungのPDFが公開されているのを見つけました↓。
⚓入門: PostgreSQLのアップグレード方法(Postgres Weeklyより)
見出し:
- Logical Dump / Restore
- Binary In-Place Upgrades
- Logical Replication
つっつきボイス:「pg_dump/restore方式とbinary in-placeはともかく、Logical Replicationでもバージョンアップグレードできるんですね: PostgreSQL 10以降が必要だけど、バージョン違いでのレプリケーションが正常に動くことをサポートしているということなら、移行パスとしては結構いい方法になりそうな感じもする😋」
参考: 第31章 論理レプリケーション(PostgreSQL 10.5ドキュメント)
⚓その他DB
- 元記事: All about SQL JOINs | Helen Anderson -- JOINをヴェン図を使わずに説明(DB Weeklyより)
つっつきボイス:「どうでもいいけどベン図のベンって英語だったんですね😆: 数学で普通に使ってきたけど日本語訳かと思っていた」「Vennさんは数学者かと思ったらWikipediaには論理学者ってありました😅」「あとこれはFULL JOINの解説がないですね(あんまり使うことはないけど)」
参考: ベン図 - Wikipedia
参考: ジョン・ベン - Wikipedia
記念のステンドグラス↓です。
Stained glass window in the Hall @CaiusCollege commemorating their long-time Fellow John Venn and his diagram, by Maria McClafferty, 1989. pic.twitter.com/FikzOZ8Iiy
— Julia Abel Smith (@jabelsmith) March 15, 2019
⚓クラウド/コンテナ/インフラ/Linux/Serverless
⚓サーバーレスを考える
つっつきボイス:「BPS社内Slackに貼っていただいた記事です」「僕もよく「AWSピタゴラスイッチ」という俗称を使いますが、同じように表現している方がいたということでちょっと安心した☺️」
「従来のマネージドサーバーを使った方法は、モノリスでたくさんのステートを処理するが故にアプリケーションは複雑で柔軟なことができたという利点に対して、サーバーレスアーキテクチャでは一つ一つはシンプルな代わりに複雑なことを柔軟に組み替えようとするとアーキテクチャのピタゴラスイッチに手を加える必要があって、よく設計して進めないとつらい、という認識があります」「解きたい問題をどれだけシンプルな問題に落とし込めるのかがサーバーレスがうまくハマるかの判断基準になりそうな感じはします」
「ゆううきさんの他の記事も↓よさそうかなと」「たまに「管理者が誰もいなくなったLinuxマシンがおかしい、何とかして」って言われたときにやるような、割と普通の作業ですね☺️」
参考: Linuxサーバにログインしたらいつもやっているオペレーション - ゆううきブログ
⚓その他サーバーレス
- リポジトリ: ghuntley/serverless-to-cgi-bin: A browser extension that replaces occurrences of 'serverless' with 'cgi-bin'(Serverless Statusより)
「serverless」でググると「cgi-bin」に置き換えて検索するというだけのジョークブラウザ拡張です(ChromeとFirefoxに対応)。
つっつきボイス:「世の中にすでにCGI実装で十分に枯れたものがあるのに、自力でサーバーレスなものを作るとまー大体ハマりますよね😆」「😆」「Apacheの.htaccess
がいかに何でもできるかというのは、S3 Static Website Hostingとかやるとしみじみ実感する(BASIC認証やるだけでもLabmdaのつなぎこみが必要とかそういうやつ)」
参考: Apache チュートリアル: .htaccess ファイル - Apache HTTP サーバ バージョン 2.4
参考: Amazon S3 での静的ウェブサイトのホスティング - Amazon Simple Storage Service
⚓JavaScript
⚓GoogleからTypeScript 3.5に熱烈なフィードバック
つっつきボイス:「上のissueはたまたまRedditで見つけたんですが、とても好意的かつ建設的な雰囲気で、👍や❤️がすごい数になってました」「AltJS界隈の型付け言語はTypeScriptで落ち着きましたね: 大人数でメンテしようとすると型チェック欲しいという気持ちはとてもわかるので選択肢として良いと思います🥰」「MicrosoftとGoogleがこうやってTypeScriptで互いに協力し合うようになるとは😂」
なおTypeScriptがGoogle社内標準になったのは2017年でした↓。
参考: Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017 - Publickey
⚓Firefox 69でpublic instance fieldが導入(JavaScript Weeklyより)
// developer.mozilla.orgより
class ClassWithInstanceField {
instanceField = 'instance field';
}
const instance = new ClassWithInstanceField();
console.log(instance.instanceField);
// expected output: "instance field"
つっつきボイス:「昔からJavaとJavaScriptは違う言語だから混同するなと学生に言い続けてきたけど、Javaは簡潔に書けるようになったりJavaScriptはこういうのサポートしたりで、コードの一部だけ見せられたらぱっと見で判別できないくらい似てきているのかもしれない😆」「😆」「まあでもプログラマとしては他の言語で書かれたソースもなんとなく読み書きできるような共通点があると習得しやすいのでありがたい話ではある☺️」
後で記事を見返してみると、private instance field(#
で表記)も近いうちにFirefoxに導入される見込みだそうです。当然Firefox 69ではまだ動きませんでした↓。
参考: Public instance fields -- Class fields - JavaScript | MDN
参考: Private instance fields -- Class fields - JavaScript | MDN(Firefox 69では未実装)
⚓その他JS
このChromeの新機能激アツですよ
Native File System API
Enables the experimental Native File System API, giving websites access to the native file system – Mac, Windows, Linux, Chrome OS, Android— HDMI (@mizchi) September 7, 2019
つっつきボイス:「これは@mizchiさんがさっそく実験してた記憶がある」「後で探してみます」「ファイルシステムはクロスプラットフォームな問題もあるので、単純な読み込みはともかく、書き込みやPermissionを触るようなものになると標準化難しそうな感じがするんですが、どの辺までできるようになるんだろうか🤔」
ありました↓。
参考: Chrome(Canary) の Native File System API で ローカルファイルの読み書きをする - mizchi's blog
⚓CSS/HTML/フロントエンド/テスト
⚓nofollow
とsponsored
とugc
つっつきボイス:「こういうクローラ(だけではなくプログラム)にコンテンツの性質をannotateさせるようなやつ、セマンティックウェブ界隈でやってたことをHTMLにも適用していくのは良いんだけど、サイトメンテナにとっては無限に気を遣うことが増える感じがして悩ましくはありますね😓」「😲」「常にこういう事情を理解して触れる人がメンテするならいいけど、退職とか配置転換でWeb詳しくない人がアサインされたときに、よくわからずコピペされて事故る事例が後を絶たないので、あえて積極的にannotateせずに検索エンジンに判断させるという選択肢もあるのかなあと思ったりします」
なお、現在はGoogle Search Consoleのヘルプが更新されてsponsored
とugc
も追加されています↓。
参考: Google に外部リンクの関係性を伝える - Search Console ヘルプ
⚓言語・ツール
⚓kagome: 日本語形態素分析(Golang Weeklyより)
2015年からあったんですね。
つっつきボイス:「日本語だとMeCab↓が実績多いですけど」「辞書同梱でコンパイル不要というのは学校とかで教える用途としては手軽でよさそうな感じする😋」
参考: MeCab: Yet Another Part-of-Speech and Morphological Analyzer
試しに動かしてみたところ、kagomeをファイル読み込みで動かすとmecab(C++製)ほど速くありませんでしたが、サーバーモード(kagome server -http=":8080"
)だと一転してmecabと変わらないぐらい高速な印象でした🚄。
$ kagome -file test.txt
また 接続詞,*,*,*,*,*,また,マタ,マタ
、 記号,読点,*,*,*,*,、,、,、
GitLab 名詞,固有名詞,組織,*,*,*,*
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
ソース 名詞,一般,*,*,*,*,ソース,ソース,ソース
ファイル 名詞,一般,*,*,*,*,ファイル,ファイル,ファイル
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,使う,ツカッ,ツカッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
手動 名詞,一般,*,*,*,*,手動,シュドウ,シュドー
で 助詞,格助詞,一般,*,*,*,で,デ,デ
セット 名詞,一般,*,*,*,*,セット,セット,セット
アップ 名詞,サ変接続,*,*,*,*,アップ,アップ,アップ
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
ソース 名詞,一般,*,*,*,*,ソース,ソース,ソース
インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール
版 名詞,接尾,一般,*,*,*,版,バン,バン
と 助詞,並立助詞,*,*,*,*,と,ト,ト
、 記号,読点,*,*,*,*,、,、,、
パッケージ 名詞,一般,*,*,*,*,パッケージ,パッケージ,パッケージ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,使う,ツカッ,ツカッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
オムニバス 名詞,一般,*,*,*,*,オムニバス,オムニバス,オムニバス
パッケージ 名詞,一般,*,*,*,*,パッケージ,パッケージ,パッケージ
版 名詞,接尾,一般,*,*,*,版,バン,バン
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
あり 動詞,自立,*,*,五段・ラ行,連用形,ある,アリ,アリ
ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。
EOS
例のserveoでアクセスしてみました↓。
⚓バイトニックマージソート(Morning Cup Of Codingより)
記事では「ベトナム帰還兵」にたとえた、やけに強そうな紹介のされ方です。
(音うるさいです↓)
つっつきボイス:「このソートアルゴリズムは初めて見ましたが、あみだくじのようなグラフが特徴的ですね」「要素数2^n
で使える、かつデータの局所性的に近い場所同士で行われるので並列実行しやすいという感じのアルゴリズムぽいですね☺️」「😀」「こっちのほうがわかりやすかった↓」
⚓その他言語
- 元記事: PHP: pplusplus:faq P++というPHPの改良版を提案(Morning Cup Of Codingより)
つっつきボイス:「これ以前も話題に出たやつですね☺️」「う、失礼しました😅」「PHPはもはやbreaking changeできないので明示的に宣言で分けたろうという。通常のPHPと一緒に配布されるので、使いたければ使えるみたいな配布方式だったと思います: 関係性としてはPerl 5と6みたいな位置づけ(アップグレードパスではない)といった形になるのかなあ」
参考: Perl6は未来的な言語、Perl5は現実的な言語 - Perlテックブログ
⚓番外
⚓レドックスフロー電池
金属イオンを1種類しか使わないのが特徴の二次電池(=充電できる電池)で、小型化が難しい代わりに水素発電や太陽光発電より高効率かつ長寿命だそうです。使う金属としてはバナジウムが注目されているようです。
参考: レドックス・フロー電池 - Wikipedia
参考: バナジウム - Wikipedia
後編は以上です。
バックナンバー(2019年度第3四半期)
週刊Railsウォッチ(20190917-1/2前編)Sidekiq 6.0がリリース、銀座Rails#13と「出張!Railsウォッチ」、るびま0060号、ロックイン回避の落とし穴ほか
- 20190910-2/2後編 buildersconと「20年後のソフトウェアテスト」、はてなブックマークがScalaに移行、「詳解PostgreSQL」、Go 1.13ほか
- 20190909-1/2前編 Rails 6のキャッシュバージョニング、Rubyのキーワード引数周りが変わる、Faker 2がリリースほか
- 20190902 Ruby 2.6.4セキュリティ修正リリース、スライド「All About Ruby in 2019」、Shrine gem 3.0に入る新機能ほか
- 20190826 6-0-stableの更新を見てみる、『Morning Cup of Coding』ニュースレター、Rails TutorialがRails 6対応に動き出すほか
- 20190821-2/2後編 11のgemにバックドア、ruby-jp Slackがとてもアツい、Fullstaq Rubyでチューンアップ、HTTPサービス監視chaoほか
- 20190819-1/2前編 祝: Rails 6がついにリリース、RailsガイドもRails 6に対応、Arelはpublicだったかほか
- 20190806-2/2後編 RSpec CopのLeakyConstantDeclaration、serveoでゼロコンフィグ公開、RuboCopのPerformance/RegexpMatch改修ほか
- 20190805-1/2前編 Rails 6のActive Recordは速くなった、Windows WSL2+VSCodeでのRails開発、Martin Fowler記事ほか
- 20190730-2/2後編 Docker 19.03の新機能に注目、ngrokはスゴい、redis-namespaceほか
- 20190729-1/2前編 Rails 6のリリースは近そう?、Evil MartiansのRails+Docker記事、Railsパフォーマンス測定ほか
- 20190723-2/2後編 Rails 6 rc2がリリース、「MySQLパフォーマンスチューニングTips」が超便利、Aurora Serverlessほか
- 20190722-1/2前編 Rails 6エラー画面の改良点、Dateを四捨五入できるtime_calc、Rackミドルウェアのデザインパターンほか
- 20190717-2/2後編 NFSのよさとは、Linuxカーネル5.2リリース、Puppeteerでメモリリーク検出ほか
- 20190709-2/2後編 strong_password v0.0.7がハイジャックされていた、TerraformとCloudFormation、CSSの設計ミスリストほか
- 20190708-1/2前編 ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか
- 20190701 RMagickのメモリ使用量が劇的に改善、インスタンス変数の定義順で速度が変わる?、GitLab CIランナーをローカルで回すほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSなど)です。