astamuse Lab

astamuse Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今を発信しています。

「絶対フォント感」を身につけようとすると新たな扉が開く話 - その1 -

どうも。フロントエンジニアやっている僕です。

f:id:astamuse:20180606115854j:plain

弊社には「書籍購入補助制度」があり、各々がこの制度を利用してスキルアップに勤しむ。

素晴らしい会社だ。

たぶん。

ブログに書くネタにも事欠かない。

この本を見てほしい。

f:id:astamuse:20180606120045j:plain

「絶対フォント感」

なんかよくわかんないけどかっこいい。

文字を見ただけで何のフォントを使用しているかわかる能力らしい。

これはすごい能力だ。

想像してみてほしい。

意中の女性と初めてのデートで、あなたは見栄はってワインをボトルで注文した。

このワインの種類なんかわからない。

話も途切れ途切れだ。

そんな時、あなたに「絶対フォント感」があったらどうなるか。

あなたの口からはごく自然にこう出てくる。

「このワインのラベルに使われているフォントはフランスの伝統的なロンド体だね。フランスワインにフランスのフォント。こだわりを感じるなぁ。あ、ちなみにこれはLino Scriptって名前ね!」

「かっこいい!抱いて!」

~Fin~

となるか知らんがとにかく響きがかっこいい。

身につけねばならない。

私はエレガントな男になりたいのだ。

なにより外に出れば文字だらけだし、お金も時間もかからない。エレガントな男はエコなのである。

さあ、外に出よう。

その一歩がエレガント。

ポイ捨てサイン

f:id:astamuse:20180605202241j:plain

ビルを出ると早速エレガントへの道が開かれていた。中央区役所・作「ポイ捨てサイン」だ。

私にはMdN2016年11月号の付録、665書体も載っている見本帳を持っている。

恐れることはない。

f:id:astamuse:20180605181719j:plain

月刊MdN 最新刊|株式会社エムディエヌコーポレーション

どれどれ。

f:id:astamuse:20180605204703j:plain

  • 太さが同じで角が尖っている
  • 「き」の3画、4画目が離れている
  • 「は」が跳ねてない
  • 「こ」が「クィン」ってなってる
  • 「ポ」の2画目が跳ねてない

これをキーワードに探していく。

  • 太さが同じで角が尖っている

これは「ゴシック体」というやつだ。ふむ、ゴシック体だけで29P。

つれぇわ・・・。

64P、ついに見つけた、お前か!!

f:id:astamuse:20180605204723j:plain

モリサワフォントの「新ゴ」。たぶん合ってる。

www.morisawa.co.jp

これを見つけたら「このサインのフォントは、モリサワ社のゴシック体アップデート系・「新ゴ」ですぜ!」と言ってやりましょう。

僕はただ微笑され「へー」で終わりましたけど。

まだエレガントな男になれてないからね。しょうがないね。

散水栓

f:id:astamuse:20180605181659j:plain

お次に出会ったのは散水栓。外の水まきなんかに使う用。らしい。

分析

f:id:astamuse:20180605181731j:plain

  • 丸くなってて、跳ねがない
  • のぶん(散の部首)の箇所がちょっと離れてる
  • 「水」の「フ」と「l」の間にスペースアリ
  • 「栓」の「王」の上二つの横線が揃ってる

あと、一番の特徴は「栓」のデザインが「入」みたいになってる箇所だ、こんなの見たことない。

どれどれ。「丸ゴシック体」ってカテゴリーに絞って調べてみますかね。 私には見本帳がある。恐れることはない。

どれどれ。

どれどれど・・・・

参った、一つも該当する漢字が載ってない。

2つ目で挫折するわけにはいかない。任意の文字で確認できるフォントメーカーのサイトも駆使して力作業でねじ伏せてやる。

www.morisawa.co.jp

fontworks.co.jp

www.vdl.co.jp

どれどれ。

f:id:astamuse:20180605185010j:plain

f:id:astamuse:20180605185018j:plain

ない!

「散」も「水」もニアピンで歯がゆいところまで来てる気がするのだが、「栓」が全然ない。上が「入」みたいになってるフォントは一つもない。「王」の上二つの横線が揃ってるのもない。

Googleで検索だ。迷ったらすぐ検索。

「栓 入 漢字」っと・・。

Google >「それ旧字やで^^」

 現行常用漢字の「全」「栓」は、旧字体は上部が入屋根(いりやね)ですが、現在使われている新字体は人屋根(ひとやね)。一方、今回追加される「詮」は入屋根のままです。表外漢字字体表もこの形で掲げており、JIS2004で「詮」の例示字体が人屋根から入屋根に変更されました。改定常用漢字表は「詮」の人屋根の字体を「デザイン差」には掲げておらず、この字の印刷文字は入屋根で設計しなくてはなりません。

 「人屋根←→入屋根」の揺れは、「詮」以外でも日常生活のなかで時々見かけているはずです。さすがに「全」は当用漢字以来の表内字なので新字体(人屋根)が広く定着していますが、「栓」は1981年に常用漢字入りした95字のひとつで歴史が浅い?ため、今でも駅などの「消火栓」の表示で旧字体(入屋根)が使われていることがあります。

「改定常用漢字表」解剖 5 - ことばマガジン:朝日新聞デジタル

漢字面倒すぎるだろ、いい加減にしろ。

4時間ほど調べてみたがお手上げだ。

わからないことをわからないと認めるのもまた勇気。

エレガントな男は挫けない。

次のサインを探し再び歩き始める。

Apache Spark 2.3 Vectorized ORC Reader 性能検証

こんにちは!データ周りをやってる朴です。

先日ご紹介があったとおり「開発・デザイン部」はついに独立?!して違うフロアに移動しました。
つい先日まで冷蔵庫も電子レンジもなく少し寂しい感じがしたのですが、本日ついに必需品が揃い、
みんながテンション上々↑↑です。

そして冷蔵庫にはチームメンバーの福田さんが自腹でガリガリ君をフル補充!何という太っ腹!
いつもありがとうございます!
f:id:astamuse:20180529174138j:plain

で!今日は先日リリースされたApache Spark 2.3 でORCのファイルの読み込みが性能向上した内容が
含まれていたので、それについて検証してみたいと思います。

該当リリースはSPARK-16060
以下本文引用
Adds support for new ORC reader that substantially improves the ORC scan throughput through vectorization (2-5x). To enable the reader, users can set spark.sql.orc.impl to native.

これに関連したリリースとしてApache ORC 1.4.0がサポートされるようになり、
Apache Spark2.3からはHive ORCとApache ORC2種類のORCデータフォーマットが読み書きできるようになりました。

検証内容

ORCデータフォーマット 2種類(Hive ORC, Apache ORC) と readerの2種類(hive, native=Vectorized ORC Reader)でそれぞれ4パターンの確認を行います。

テストデータ

日本国特許公報の書誌データ(特許の概要と出願日などの情報)約100万件(snappy圧縮したparquetフォーマットで容量は約775 MB)
上記のテストデータをそれぞれHive ORCフォーマットとApache ORCフォーマットで保存します。

  • Apache ORCフォーマットで保存する
scala> val _research = spark.read.parquet("/user/s.paku/gazette_data_parquet/published_research/*")
scala> _research.write.format("org.apache.spark.sql.execution.datasources.orc").save("/user/s.paku/gazette_data_orc/research_native")

Apache ORCフォーマットで保存するにはwrite.format("org.apache.spark.sql.execution.datasources.orc")指定するか、 spark.conf.set("spark.sql.orc.impl","native")にしてdf.write.orc(path)で保存できます。

  • Hive ORCフォーマットで保存する
scala> val _research = spark.read.parquet("/user/s.paku/gazette_data_parquet/published_research/*")
scala> _research.write.format("orc").save("/user/s.paku/gazette_data_orc/research_hive")

SparkSQLのORCがHiveの状態で Hive ORC フォーマットと Apache ORCフォーマットの読み込み性能検証

※Spark 2.3までのデフォルトのORC はhiveとなります

  • hiveフォーマットをhive readerで読み込む
scala> spark.conf.get("spark.sql.orc.impl")
res0: String = hive

scala> spark.time(spark.read.orc("/user/s.paku/gazette_data_orc/research_hive").count)
Time taken: 21662ms                                                            
res0: Long = 1121565


  • Apache ORCフォーマットをhive readerで読み込む
scala> spark.conf.get("spark.sql.orc.impl")
res0: String = hive

scala> spark.time(spark.read.orc("/user/s.paku/gazette_data_orc/research_native").count)
Time taken: 20698 ms                                                            
res1: Long = 1121565

上記の結果からはSpark sqlのORC設定がhiveの場合、新旧ORCフォーマットでパフォーマンス的にそんなに変わらないことが分かります。

SparkSQLのORCがnativeの状態で Hive ORC フォーマットと Apache ORCフォーマットの読み込み性能検証

spark.conf.set("spark.sql.orc.impl","native")

scala> spark.conf.get("spark.sql.orc.impl")
res2: String = native

scala> spark.time(spark.read.orc("/user/s.paku/gazette_data_orc/research_native").count)
Time taken: 16773 ms                                                            
res0: Long = 1121565
scala> spark.conf.get("spark.sql.orc.impl")
res0: String = native

scala> spark.time(spark.read.orc("/user/s.paku/gazette_data_orc/research_hive").count)
18/05/29 12:19:43 WARN util.Utils: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf.
Time taken: 18544 ms                                                            
res1: Long = 1121565

Spark SQLのORCをnativeに設定した、結果新旧orcフォーマットでいずれも高い性能が出てます。

上記結果表にまとめると

orc reader data format count time (ms)
native Apache ORC 16773
native Hive ORC 18544
hive Apache ORC 20698
hive Hive ORC 21662

リリースドキュメントとおりの性能は出てないものの新ORCフォーマットでspark.sql.orc.implをnativeに設定したときに最も性能が発揮されてることが分かります。
データ量とデータサイズによって性能の差は広がるかも知れません。
その辺SparkとORCの歴史と取り組みを良く纏めた資料がこちらORC improvement in Apache Spark 2.3にあります。

ちなみに上記同様のデータをparquetで読み込むと12649 msという結果でparquetの読み込み性能が最優位である結果となりました。

最後に

いつものことですが、SparkとかHadoopとかMongoとかElasticSearchとかゴリゴリいじる仲間を募集してますので、ご応募お待ちしております。

初公開!データエンジニアのデスクトップ。1/3日の順調な環境移行

こんにちは、福田です。

新緑が目を刺すGW明け、オフィスを引っ越しました。最近人が増えてきたため、開発・デザイン部は7Fから、8Fの新しいスペースへの移動です。なので、正確にはフロアを跨ぐ座席移動になります。私にとって、6回目の社内引越です。

f:id:astamuse:20180515180658j:plain

午前。ミーティングを終え、先陣を切って機材の移動を開始。台車に乗せ、エレベータで上階へ。チームメイトの朴さんが優しく手伝ってくれます。いつもありがとうございます。

lab.astamuse.co.jp

一番乗り、と勇み足で入室。しかしそこには人影が。仕事が速く正確なことで有名なtorigakiさんが既に移動を済ませ、軽快にMacBook Proを叩いていました。そのスピードに舌を巻きます。

lab.astamuse.co.jp

ひと通り自席の配線を済ませたところで、今回の引越しの裏方で皆を支えてくださったnishikawaさんとランチへ。175°DENOでの担々麺。花椒の香りに誘われて、会話に花が咲きます。

f:id:astamuse:20180515180828j:plain

lab.astamuse.co.jp

午後、マシンに火を入れます。お願い、動いてっ!  

f:id:astamuse:20180515180912j:plain

殺風景だった空間に華やぎと活気が。自分へのご褒美、グリーンスムージーで一息。不足しがちな食物繊維を補給します。デスク右手は愛用のプラズマクラスター加湿器。PCの筐体ではありません。

f:id:astamuse:20180515180945j:plain

足回りの古式ゆかしいマシン3台。OSは全てGentoo Linux。カーネルは最新です。メイン機に挿したNVIDIAのカードから3枚のディスプレイに出力。サブ機では、仮想環境で検証用のHadoopクラスタが動いていたり、コンテナの実行環境になっており、日々のR&DやPoCに重宝しています。

f:id:astamuse:20180515181018j:plain

グリーンも、滞りなくデプロイ完了です。手塩に掛けたパキラが高くそびえ立ちます。成長著しく伸びすぎた感があるので、ひと段落したら少し剪定を。

f:id:astamuse:20180515181046j:plain

さて、環境が整ったところで心機一転、仕事に戻りたいと思います。ありがとうございました。

アスタミューゼでは、エンジニア・デザイナーを募集しています。ご興味のある方はこちらからご応募ください。お待ちしております。

recruit.astamuse.co.jp

Copyright © astamuse company, ltd. all rights reserved.