週刊Railsウォッチ(20190918-2/2後編)RubyPrize 2019候補者発表、GoogleがTypeScript 3.5に熱烈フィードバック、日本語形態素分析kagomeほか

こんにちは、hachi8833です。

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

週刊Railsウォッチ「公開つっつき会」第15回のお知らせ(無料)

第15回目公開つっつき会は、10月5日(木)19:30〜にBPS会議スペースにて開催されます。皆さまのお気軽なご参加をお待ちしております🙇。

臨時ニュース: RubyPrize 2019の候補者が発表

今回のノミネート対象は19名です。詳しくはリンク先をどうぞ。


rubyprize.jpより

DB

MongoDBがHomebrewフォーミュラから削除された(DB Weeklyより)


mongodb.comより

↓いきさつです。


つっつきボイス:「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が公開されているのを見つけました↓。


同PDFより

入門: PostgreSQLのアップグレード方法(Postgres Weeklyより)

見出し:

  1. Logical Dump / Restore
  2. Binary In-Place Upgrades
  3. Logical Replication

つっつきボイス:「pg_dump/restore方式とbinary in-placeはともかく、Logical Replicationでもバージョンアップグレードできるんですね: PostgreSQL 10以降が必要だけど、バージョン違いでのレプリケーションが正常に動くことをサポートしているということなら、移行パスとしては結構いい方法になりそうな感じもする😋」

参考: 第31章 論理レプリケーション(PostgreSQL 10.5ドキュメント)

その他DB

つっつきボイス:「どうでもいいけどベン図のベンって英語だったんですね😆: 数学で普通に使ってきたけど日本語訳かと思っていた」「Vennさんは数学者かと思ったらWikipediaには論理学者ってありました😅」「あとこれはFULL JOINの解説がないですね(あんまり使うことはないけど)」

参考: ベン図 - Wikipedia
参考: ジョン・ベン - Wikipedia

記念のステンドグラス↓です。

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

サーバーレスを考える


元記事より


つっつきボイス:「BPS社内Slackに貼っていただいた記事です」「僕もよく「AWSピタゴラスイッチ」という俗称を使いますが、同じように表現している方がいたということでちょっと安心した☺️」

「従来のマネージドサーバーを使った方法は、モノリスでたくさんのステートを処理するが故にアプリケーションは複雑で柔軟なことができたという利点に対して、サーバーレスアーキテクチャでは一つ一つはシンプルな代わりに複雑なことを柔軟に組み替えようとするとアーキテクチャのピタゴラスイッチに手を加える必要があって、よく設計して進めないとつらい、という認識があります」「解きたい問題をどれだけシンプルな問題に落とし込めるのかがサーバーレスがうまくハマるかの判断基準になりそうな感じはします」

「ゆううきさんの他の記事も↓よさそうかなと」「たまに「管理者が誰もいなくなったLinuxマシンがおかしい、何とかして」って言われたときにやるような、割と普通の作業ですね☺️」

参考: Linuxサーバにログインしたらいつもやっているオペレーション - ゆううきブログ

その他サーバーレス

「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に熱烈なフィードバック


typescriptlang.orgより


つっつきボイス:「上の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


つっつきボイス:「これは@mizchiさんがさっそく実験してた記憶がある」「後で探してみます」「ファイルシステムはクロスプラットフォームな問題もあるので、単純な読み込みはともかく、書き込みやPermissionを触るようなものになると標準化難しそうな感じがするんですが、どの辺までできるようになるんだろうか🤔」

ありました↓。

参考: Chrome(Canary) の Native File System API で ローカルファイルの読み書きをする - mizchi’s blog

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

nofollowsponsoredugc


つっつきボイス:「こういうクローラ(だけではなくプログラム)にコンテンツの性質をannotateさせるようなやつ、セマンティックウェブ界隈でやってたことをHTMLにも適用していくのは良いんだけど、サイトメンテナにとっては無限に気を遣うことが増える感じがして悩ましくはありますね😓」「😲」「常にこういう事情を理解して触れる人がメンテするならいいけど、退職とか配置転換でWeb詳しくない人がアサインされたときに、よくわからずコピペされて事故る事例が後を絶たないので、あえて積極的にannotateせずに検索エンジンに判断させるという選択肢もあるのかなあと思ったりします」

なお、現在はGoogle Search Consoleのヘルプが更新されてsponsoredugcも追加されています↓。

参考: 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より)

記事では「ベトナム帰還兵」にたとえた、やけに強そうな紹介のされ方です。


同記事より

(音うるさいです↓)

参考: ソーティングネットワーク - Wikipedia


つっつきボイス:「このソートアルゴリズムは初めて見ましたが、あみだくじのようなグラフが特徴的ですね」「要素数2^nで使える、かつデータの局所性的に近い場所同士で行われるので並列実行しやすいという感じのアルゴリズムぽいですね☺️」「😀」「こっちのほうがわかりやすかった↓」

参考: バイトニックソート - 高速化プログラミング


seesaawiki.jpより

その他言語

つっつきボイス:「これ以前も話題に出たやつですね☺️」「う、失礼しました😅」「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号、ロックイン回避の落とし穴ほか

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

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

Morning Cup Of Coding

morningcupofcoding_banner_captured

Postgres Weekly

postgres_weekly_banner

DB Weekly

db_weekly_banner

Serverless Status

serverless_status_banner

JavaScript Weekly

javascriptweekly_logo_captured

Golang Weekly

golangweekly_logo_captured

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の監修および半分程度を翻訳、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れて更新翻訳中。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好きで、Goで書かれたRubyライクなGoby言語のメンテナーでもある。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

開発
Ruby 2.7.0-preview2がリリース

2019年10月23日

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ