もやぶろ

moyashidaisukeのブログだからもやぶろ。フリーランスのエンジニアのダイスケです。QOLあげて色々楽しくチャレンジして良く生きたい。プログラム関連とかギター関連とか旅行関連とか色々。

2018 北海道東日本パスで東北弾丸3泊4日の旅〜初日〜

みなさん「北海道東日本パス」という切符をご存知でしょうか?

 

似たような切符で「青春18切符」があるのですが、「北海道東日本パス」は、連続する7日間、東日本と北海道のJR+αの各駅停車路線に乗り放題というものです。

私は電車の旅行が好きで何回か使っているのですが、3連休に何も予定がない事に気がついて、この切符を使って東北に旅行に行く事にしました。思いついたのは旅行の前日です。

ちなみに、北海道東日本パスはお金を出して特急券を買っても特急や新幹線にはのれません。 (その代わりめちゃめちゃ安くて、7日間で10850円です。10850円がどれくらいかと言うと、東京と仙台を往復するとちょうどこれくらいです。なので、これより遠くにいけば行くほどお得です。)

 

出発

金曜日、普通に仕事をして、一回家に帰って準備をしてから出発です。

本当は仕事帰りにそのまま旅行にいければベストだったのですが、いかんせん急なので準備が間に合わず、、、

今回は7日間も使えないので(火曜日から仕事)、金曜日にもできる限り移動する事にしました。

というわけでこんな感じで移動。仕事の帰りのみなさまと一緒に移動です。 f:id:moyashidaisuke:20180915003032j:plain

 

宇都宮

乗り換えに30分ある事がわかったので、ダッシュで駅前のお店に入って餃子食べました。 

12種類の食べ比べセットみたいなのにしたのですが、普通の餃子が一番美味しかったです。今度は普通のにしよう。

こんな感じで気軽に途中下車できるのがこの旅行の良い所。

スタミナ健太の宇都宮餃子館

 f:id:moyashidaisuke:20180914214713j:plain

 f:id:moyashidaisuke:20180914215839j:plain

新白河

できるだけ仙台方向に向かってたどり着けたのが福島県新白河f:id:moyashidaisuke:20180915003506j:plain f:id:moyashidaisuke:20180914232857j:plain

終点は白河駅なのですが、隣の新白河駅に漫画喫茶がある事がわかったので(翌日も始発のつもりなので、数時間休めれば良いので漫画喫茶で十分)、新白河で降りて、目的の漫画喫茶へ、、、

が、、、

f:id:moyashidaisuke:20180914233549j:plain

なんと閉店しておりました、、、、

しょうがないので駅前のビジネスホテルへ宿泊する事にしました。予定外の出費、、、

そういえば、新白河には7年前くらいに数ヶ月間、仕事でホテル住まいをしていた事があります。その時のホテルに宿泊です。懐かしい、、、ホテルに帰ってから暇すぎてPS3買って遊んでました。そのPS3は未だに現役です。

費用

用途 お値段
北海道東日本パス ¥10850
餃子とビール ¥1500
夜のおつまにとビール ¥500
宿泊費 ¥5000

合計 ¥18000くらい

宇都宮のコンビニで買ったホタルイカ美味しかったです。 今日は移動だけでしたが、明日以降はちゃんと観光する予定。 f:id:moyashidaisuke:20180915004943j:plain

f:id:moyashidaisuke:20180923195019j:plain

 

TOEIC初めて受けてきた

今日、初受験終わりました!

ミスもしたので、次回以降の自分と、これから初めて受験する方のお役に立てばと思います。 (TOEICの点数をあげるための情報はいっぱい出てくるんだけど、本番の具体的な話って意外と少ないような気がします。)

申し込み

TOEICの公式ページから申し込みます。

www.iibc-global.org

申込期間が1ヶ月ありますが、後で申込も〜と思ってるとうっかり忘れがちなので、すぐに申し込みましょう。

会員登録が必要なのですが、EmailじゃなくてIDを設定しなきゃいかなかったり(しかも文字数少なめ)、SNSアカウントで登録できないのでちょっと面倒です、、、

ちなみにメルマガもあって、1週間に一回、練習問題付きのメールも送られてきます。公式の問題なので、せっかくなのでやっておきましょう。(1問しか付いてこないですが)

受験票が届く

試験の2週間前に発送されるようですが、1週間前くらいに着いたような、、、 申し込みタイミングに比べると、けっこうぎりぎりに着くイメージになります。

試験会場もこのタイミングで判明します。自分は家から2駅の近い所でラッキでーした。(この油断が悲劇を生む)

持ち物の準備をする

試験に必要なのは、受験票の他に、

  • 筆記用具(鉛筆 or シャープペン)、消しゴム
  • 受験票に貼る証明写真1枚
  • 写真付きの身分証明書
  • 腕時計

です!それぞれ注意があります。

筆記用具

マークシートなので、塗りつぶしやすいように鉛筆の方がいいです!折れても大丈夫なように複数用意しましょう。 自分は手元に無かったのでシャープペンで突撃しましたが、無駄に手が疲れました。

あと筆箱もあった方が良いです!(普通の人は持ってる・・?)

証明写真

パスポート用の大きさのやつです。 最近の証明写真はデータをスマホ連携できたりするようで、何回も受験する予定の方は使い回せるようにしとくと良いかもしれません。

カラーでも白黒でも良いようです。

自分は当日に自宅最寄りの駅で取りましたが、切って貼り付けるのも必要なので、予め自宅でやっておきましょう、、、

写真付きの身分証明書

免許証ある方は免許証で。 持ってない方は、パスポートとか個人番号カードですね。それも無い方は、、、個人番号カードを取得しましょう!

腕時計

スマホはダメです!

自分は普段腕時計使わないのですが、当日の朝、押し入れから出したら電池が切れていきました、、、 慌てて近所で探しましたが売っておらず、時計無しで受験しましたとさ、、

当日

当日のスケジュールは

11:45~12:30 受付

12:35~13:00 試験の説明・音テスト

13:00~15:00 試験開始~試験終了

となっています。

これも注意点がありました。

お昼ごはんをどうするか。

試験開始が13時なので、なんかしらご飯は食べたほうが良いと思います。 が、食べすぎても眠くなっちゃうので、軽くお腹に入れるくらいが良いんじゃないかと。

また、トイレが近くなりがちな飲み物は避けたほうが良いです。

自分は試験会場近くのコンビニでパンを1個食べて、散歩しながら食べましたがちょうど良かったです。

本格的なお昼ご飯は、試験が終わったら食べましょう。頭を使って疲れているはずです。自分は焼き肉を食べました。美味しかったです(小並)f:id:moyashidaisuke:20180909152630j:plain

受付

ぎりぎりになりすぎないようにしましょう。会場まで迷うかもしれませんし、電車が遅延したりするかもしれません。多分電車遅延とか考慮してくれません。

会場の入り口で、受験票と身分証明書をチェックされます。その後、自分の受験番号が記載された席につきます。

机の上には、受験の案内と、ちらし(こんど発売される公式問題集の)と、回答用のマークシートです。

また、12:30以降は原則トイレに行けないので、確実に済ませておきましょう。

1/3くらいの席は空いてました。申し込んだけど受験しない人けっこういるみたいです。

試験の説明・音テスト

口頭でのアナウンスはありませんが、受験の案内によると、12:30から、回答用のマークシートの名前やアンケートについては記入開始して良いようです。さっさと書いちゃいましょう。

12:35から試験員の人が入ってきて、スマホしまってね〜的なアナウンス等があります。

また、スピーカーの音量チェックがあります。内容は、リスニングテストの最初に流れる定番のあれです。

自分は後ろの方の席だったのですが、思ったより音量が小さくて子音が聞き取りにくいかな?と思いましたが、まあこんなものなのかな?と思い受け入れる事にしました。試験員の方に伝えれば調整してくれるはずです。

その後、問題が配布されます。問題は中が見えないように袋とじのシールが貼ってあります。 また、試験後回収したチェックのため(?)、名前も記入する欄があります。

10分くらいは時間が余るので、集中力を高めておきましょう。

試験開始~試験終了

がんばりましょう。

今回の試験の手応え

公式問題集をやって、その後ひたすら単語の勉強をしてましたが、思ったよりはできたかな?という印象です。

リスニング

問題集の時は苦手だったのですが(そもそも生まれてからリスニングの勉強をした事が無い)、この1ヶ月で伸びた事を実感できました。

あんなに聞き取れなかった質問文の最初の単語(Where, Whyとか)がわかる、わかるぞ、、、となりました。

リーディング

単語の勉強をやったおかげで、長文の意味は比較的理解しやすくなりましたが、時間配分がうまくできず(そもそも時計が手元に無いという致命的なミスをしているのですが)、後半15問くらいは間に合わず(周りがざわざわして、終了時間が近いことを察知して慌ててマークシートを適当に埋めました)。試験慣れが必要ですね。

あと、文法問題もパターンは多くないはずなのですが、考えないとわからないので、数をこなしたいところ。

次の試験に向けて

  • 単語 -> 今のやり方で有効な事がわかったので引き続きやる
  • 長文 -> 数をこなして時間配分の感覚を掴む
  • 文法問題 -> 解くスピードを早くして長文問題に時間をかけられるようするため、数をこなす

まとめ

持ち物関連は前日までに準備しましょう!

北海道地震(平成30年北海道胆振東部地震)で思うこと

札幌市出身の@moyashidaisukeです。

朝起きたらなんかすごい事になってて驚きました。 今年は色々あって大変なのは北海道だけでは無いのですが、自分と関連がある土地なので、主観が入ってしまう事をご了承ください。

実家の状況

今朝電話したところ、幸いにもみんな無事との事でした。心配してご連絡いただいた方、ありがとうございます。

  • 築年数が古い家は大きな問題は無し
  • 私が高校生の時に読んていた本が詰まってる本棚は倒れた
  • 電子レンジ落ちたりした
  • 電気は止まってる
  • 水は止まってない
    • 札幌市全域ストップみたいな噂がネット上でありましたが、マンションとか水道で電気を使う所は止まってるだけじゃないの?との事でした(真偽は不明)
  • 道路はところどころ、ぼこぼこしてたり

今朝の段階では思ったよりも深刻な雰囲気でもなく、珍しく私が連絡したので逆に喜んでる感じでした。(おい)

現時点では停電も長引くかも、というニュースが流れているので、これからどうなるかはわかりませんが、一安心。

所感もろもろ

知ってる地名が、、

ニュースやSNS等で、知っている地名が写真とともにがんがん出てくると、すごく身近に感じられますね。 逆に言うと知らないところは想像ができないという事で、西日本の大雨や、ついこの前の台風の被害なんかはここまで深刻に捉えられてなくて、なかなか難しいな、、、と。

季節

不幸中の幸いにも、この時期で良かったと思います。 真冬だったらインフラの停止は凍死につながる地域なので、、、

これから

明らかになっていくであろう被害状況とともに、復旧がどうなるかが心配です。 これ以上被害が広がらないように、早く元通りの生活が送れるようになればと思います。

何ができるか

ニュースを見ていると哀しい気持ちになってきて何かしたくなるのですが、現状ではできる事は少なそうです。実家の様子を見に行きたくなりましたが、そもそも足がありません。

まずは「自分自身が元気に過ごすこと」が大事だと思います。いざ助けを求められた時に対応できるように。

また、問題が長期化すれば食べ物への影響や、経済的な影響も全国的に出てくるかもしれません。美味しい北海道の食べ物が手に入りにくくなるかもしれませんね、、

募金

他にもあるかもしれませんが、とりあえず見つけたものを貼っておきます。

Tポイント全部と、楽天ポイント、少しですがカード支払いでyahooさんに募金しました。みなさんも使ってないポイントがあったら是非。

donation.yahoo.co.jp

www.ntv.co.jp

camp-fire.jp

https://corp.rakuten.co.jp/donation/hokkaido201809_ja/hokkaido201809_ja.htmlcorp.rakuten.co.jp

平成30年北海道胆振東部地震 災害緊急支援募金 | ふるさと納税サイト「さとふる」

official-blog.line.me

tsite.jp

LiSAカバーバンドHiSA、3回目のライブ ありがとうございました

LiSAカバーバンドHiSA、3回目のライブが無事に終わりました!

全体的な感想とか

ライブに出るの半年ぶりくらいだったのですが、なんかリハから打ち上げまで含めて全体的に楽しかったです。やっぱりライブをやるのは好きだなーと想いました。大変だけど。

気分良くライブさせていただいた、見に来てくださった方々、メンバー、イベント主催のJAMさん、対バンのみなさま、大塚Hearts Nextのスタッフのみなさま、ありがとうございました。

あ、大塚HeartsNextさんは初めてだったのですが、良かったです。

  • 楽屋が広い
  • 楽屋に冷蔵庫があってドリンクが置ける
  • 出演者用のトイレがある
  • ライブハウスで打ち上げできる
  • すぐ近くにDAISOとコンビニがある
  • 音に癖がなくて綺麗

セトリとか

全体的にタイアップ少なめの激しめセトリでした。LiSAファンの人以外には知らない曲が多かったと思うんだけど、楽しんでいただけたようで何よりです。 時間の関係で本番では曲紹介できなかったのでこの場で紹介しようと想います。

1. Rock Mode'18

元々は2012年の1stアルバム「LOVER"S"MiLE」に入ってるアルバム曲なんだけど、ライブの定番ソング。 HiSAでも1回目のライブの時にやりました。

んで、2018年の5月に発売されたベストアルバムにアレンジして収録されたバージョンです。 5月より前に収録される事自体は発表されていて、良い感じのアレンジだったらやりたいね!とバンド内で話していて、無事にかっこいいアレンジだったのでセトリに組み込まれました。

原曲に比べると音色がかなりハードでソリッドになってます。 原曲はロキノン系?な感じなんだけど、18はモダンヘビネスっぽい感じ?

イントロはメタルバンドのアルバム1曲目みたいな、ダサい(ほめ言葉)プレリュードになってます。(Helloweenかよ)

あとはギターソロの音数が10倍くらいになってたり、ベースソロが入っていたり、なかなかロックなアレンジ。

コーラスも多くて、バンドでやって楽しい曲です。

ameblo.jp ameblo.jp

2. Thrill, Risk, Heartless

ソードアート・オンラインのゲームの主題歌。 RisingHopeをアレンジした堀江晶太さんのアレンジだけあって、演奏するのがしんどい。

全体的にギターが3本か4本ずっと鳴っているし、参考になるような本人のライブ映像とかないし、ギターのパート分けに悩みました、、、

ギター2本のハモりが多いんだけど、相方ギターのオガワ君との二人ならではの安定感が出せたんじゃないかと。

3. Psychedelic Drive

16分のリズムが特徴のロックな曲。 これは2回目のHiSAのライブでもやりました。

Aメロのカッティングのハモリ、随所に入るブレイクでの謎フレーズのハモリ、中間パートのディスコとか、見せ場が多くてライブ映えする曲。

CDではほぼ一発撮りらしいですね。鬼ですか。 www.lxixsxa.com

ここまで3曲ノーストップ。激しいね。(疲れました)

4. エレクトリリカル

チップチューンですね。 キーボードのkentaさんがこの曲のために音源買ってました。

Bメロのギターのカッティング大好き。

今調べてたら作曲は渡辺翔さん。「oath sign」「crossing field」作った人です。良いメロディを創れる人で好きです。 LiSA関係ないけど、ClariSの「コネクト」もこの人ですね。(しかも作詞も)

ameblo.jp

5. オレンジサイダー

「Rally Go Round」のカップリングの曲で、自分がやりたい!と言ってセトリに入りました。 「Rally Go Round」はHiSAの2回目ライブでやったんだけど、移動の時とかに聞いててずっとやりたいと思ってたので、やれてよかったです。

今回のセトリで唯一の落ち着いた曲。ちなみに、テンポが遅いからと気を抜くと、バタバタしてださい演奏になっちゃうので、演奏は全然楽じゃありません。

Bメロ〜サビにかけての、転調を含むコードの流れと、それに乗っかるメロディと歌詞の切ない感じが大好きな曲です。

6. Catch the Moment

ソードアート・オンラインの映画の主題歌で、エムステに出たりとかタイアップ頑張ってた曲。今回のセトリで一番メジャーだと思う曲。

最初に聞いた時はサビにパンチがなくてもったいないな〜と感じたんだけど、何回か聞いてるうちにすごく好きになりました。

ギターは全体的に変則的で、開放弦を使った謎フレーズが多くて覚えるのに苦労しました、、、特にBメロとサビの間のブレイクのフレーズは、どうやったあのフレーズがうまれるのか未だに理解できません。

後は、バンドインしてからのギターのメインメロディのチョーキングがかっこいいです。(細かい)

7. best day,best way

これもライブの定番曲なのかな? シンプルなロックナンバー。

Bメーロのhey! の掛け声とか、ラスサビ後のコーラスとか、バンドでやってて楽しい曲。

Aメロの入りのコード(Ab Cm)と、サビのコードの入り(Ab C)という関係性が、サビだけメジャーのコードで変化をつけているところがお気に入り。(細かい)

サビは、この後、Fm Ebm Dbといくのですが、このEbmもおしゃれですね。 さらに、サビの後半はここが、Fm Ebm Ab Dbとなっていて、1回めは省略されていたDbへの部分転調が明示的に演奏されるアレンジになっています。

何を言っているかさっぱりわからないと想いますが、シンプルに見えてちょいちょい凝ったアレンジになっていて、私はそれが好きだという事です。

写真とか

f:id:moyashidaisuke:20180902152911j:plainf:id:moyashidaisuke:20180902152916j:plain

ライブ後楽屋前 f:id:moyashidaisuke:20180902153019j:plain

家に帰ってからライブの余韻に浸りながら f:id:moyashidaisuke:20180902152931j:plain

身の回りの設定を英語にした

TL;DR

  • 少しでも英語に触れる時間を増やすため、PCやスマホの設定を英語にしてみました。
  • やらないよりはやったほうが絶対良い

スマホ

Huawayの格安スマホ、nova lite2を使っています。 Androidのバージョンは8.0です。 moyashidaisuke.hatenablog.com

手順

www.iscle.com

興味本位でEnglishじゃなくて全然読めない言語(アラビア語とか)にすると、復帰するのが大変なので(どこから言語設定を元に戻すかまったくわからなくなる)気をつけましょう。(経験)

結果

before

f:id:moyashidaisuke:20180804164104j:plain

after

f:id:moyashidaisuke:20180804164119j:plain f:id:moyashidaisuke:20180804164218j:plain

所感

Android本体だけじゃなくて、設定されているものはアプリも英語になります。

googleの公式アプリや、海外サービスのアプリだけでなくて、Lineもなりました。メルカリはならなかったです。アプリ自体を国内用と海外用で別にしているのかな?

電話アプリが「Dialer」、google mapは「Maps(sがつく)」とか、意外と意識してない名前があって面白いです。

あと、Google Assistant (siriみたいなやつ)が英語で話しかけてきます。試しに英語で会話してみましたが、全然伝わらなかったです。発音がね、、、まだ何も対策してないからね、、、

Mac

手順

support.apple.com

再起動が必要です。

結果

before

f:id:moyashidaisuke:20180804170140p:plain

after

f:id:moyashidaisuke:20180804170221p:plain

所感

普段から英語のアプリケーション(開発用のコンソールとかエディタとか)を使っているのであまり違和感は感じなかったです。

地味なところで、スクリーンショットのファイル名が変わったりします。 (スクリーンショット XXXX.png -> Screen Shot XXXX.png)

あとOffice系も自動的に言語が変わりました。

google

手順

英語サイトのみをGoogle検索結果に表示 - PC設定のカルマ

恒久設定の方です。

結果

before

f:id:moyashidaisuke:20180804172018p:plain

after

f:id:moyashidaisuke:20180804172029p:plain

所感

これはけっこう影響が大きいです。 日本語で検索した場合はそんなに変わらないですが、英語で検索した場合(技術用語とか)、全部英語で出てきます。wikipediaも英語です。

技術用語は英語の方が鮮度が良いことが多いので、英語の勉強関係なく、エンジニアの人は普段からこっちの設定の方が良い気がしてきました、、、

各種SNS

SNSに限らないですが、サービス内で独自に言語設定を持っているものがあります。

手順

Twitter

help.twitter.com

Facebook

www.facebook.com

所感

最近あまりSNSやってないので影響あまりありませんが、SNSに浸かってる方はけっこう影響あると思います。

SmartNews

ニュースアプリのSmartNewsを普段使っているのですが、こちらにも設定がありました。

手順

knowl.jp

私は日本のニュースも読みたいので、チャンネルを追加しました。 「英語学習」というそのままのやつと、「BBC(英語)」と「TechCrunch(英語)」を追加しました。

所感

TechCrunchは技術用語が少し(あまり深い話は無いけど、、、)出てくるので良いですね。

まとめ

まだ設定変えてそんなに時間たってないのですが、色んなものが勝手に英語になるので、英語で考える場面が増えて良いです。 (でも食べログとか固有名詞が英語になってるのはつらいです、、)

公式TOEIC Listening & Reading問題集1のTEST1を解いて見直した

前回の

moyashidaisuke.hatenablog.com

TL;DR

  • 問題集解いてみた
  • 単語が課題
  • リスニングで単語がつながると聞き取れない問題

目的とか

ひとまずは自分の状況を確認しないと対策も何も取れない&本番テストは1ヶ月後なので、過去問を解いてみようと思ったのですが、TOEICは過去問は提供されていない代わりに、公式問題集があるという事で、解いて結果を分析してみました。

公式 TOEIC Listening & Reading 問題集 1

公式 TOEIC Listening & Reading 問題集 1

これ以外にも、同じ名前の2と3、「TOEICテスト公式問題集 新形式問題対応編」(ナンバリングされてるやつと何が違うんだ、、、)というのがあるらしいのですが、違いがよくわからないので、とりあえず本屋さんで山積みされていたこれにしてみました。

「公式 TOEIC Listening & Reading 問題集 1」について

本番形式の問題が2セット含まれています。マークシートもついてるし、本番のナレーターと同じ人がリスニング問題のナレーターをしています。

解答の解説はちょっと内容薄めだと思います。単語の説明はわかりやすいですが、文法の解説は結論だけ書いてる感じです。

やり方

昔の(もう15年以上前かぁ、、、)受験勉強のやり方を思い出しつつ、大人の知識を加えてこのやり方にしてみました。

  1. 本番想定の時間を測りながら解く
  2. 機械的に答え合わせ
  3. 時間気にせずもう1回解いてから解説を理解する
    • 間違った理由をメモ
    • わからなかった単語をメモ
  4. 3を参考に、対策を考える
  5. 対策する
  6. 1〜5を繰り返す

解答とかメモはGoogleのスプレッドシートで管理しています。 仕事するようになって身につけたやつですねw

f:id:moyashidaisuke:20180729191153p:plain

知らない単語はいい感じのマイ単語帳にしようと思っていますが、まだ未着手。

結果

全体

- listening reading 合計
min 260 295 555
max 335 385 720

全部で200問で990点満点なので、単純計算だと1問あたり5点なのですが、問題によって加重が違うらしく、実際には1問5点になりません。 なので、公式の問題集でも正解数によって、何点〜何点くらいですね、という結果になります。

900点を目指しているので、listeningとreadingそれぞれで450点が目標の目安になります。

パート毎の正解率

Part 問題数 正解数 正解率 課題
1 6 6 100.00%
2 25 14 56.00% 最初の単語が聞き取れない。where'd とかの省略形が聞き取れない。
3 39 24 61.54% 知らない単語がまあまあある。単語がつながると聞き取れない。
4 30 17 56.67% 知らない単語がまあまあある。単語がつながると聞き取れない。
5 30 22 73.33% 文法は大体大丈夫。単語がだめ。
6 16 11 68.75% よく考えればわかるはずだったが、、、問題の慣れ?時間?
7 54 40 74.07% 知らない単語を前後の文脈から推測しているので時間がかかるし、集中力が切れてしまっている。10問は時間切れ。

Part1〜4がlistening、5〜7がreadingです。

振り返り

全体

  • 思ったよりは点数が良かった
  • listeningの方が良くないのも想定通り
  • 最後の方は時間が足りなくなった(10問くらい)

できてる事

  • 文法 -> 大学受験の知識で大丈夫
  • 文脈の理解 -> stack over flowとかGitHubのissueが理解できれば大丈夫そう

課題

知らない単語

listeningもreadingも明らかに足りないです。 単語が知らないために間違えた問題が、listeningで20問、readingが10問くらい。

readingで時間が足りない原因の一つが単語の知識量不足(わからない単語を前後の文脈から推測してるので時間がかかる)なので、これも含めるとreadingは20問。

単語は読めるけど聞き取れない

10問くらい。 tour -> ツアーじゃなくてトゥアー みたいなやつ。

単語がつながると聞き取れない

check it out -> ちぇけらー みたいなやつです。

5問くらいだけど、全体的にきつい。

まともに頭に残ってる発音なんて、高校の時の先生のカタカナ英語だけなんで、さっぱりでした、、 読めばわかるけど、全然聞き取れない、、、

受験英語に出てこない言い回し

Where'd とか should you have any questions〜 とか。 全体で5問くらい。

まとめ

  • まずは単語(リスニングも含めて)
  • 単語つながると聞き取れない問題は別途対策が必要

おまけ

エンジニアなら知ってる単語(function, submitとか)がけっこうあるので、エンジニアという仕事は英語を習得するのに有利な仕事だと思いました。 良く考えたら、日本語で仕事してるのに英語の事を一番考えてる職業なんじゃないかと。この機能の名前何にしよう(できれば英語で)とか、いつも考えますよね。

typoするとエディターが勝手に知らせてくれるし。

社会人になって10年だけど今から英語の勉強をする事にした

英語を勉強する事にしました。

最終目標

  • 海外でエンジニアの仕事ができるくらいになる

きっかけ、モチベーション

仕事で

前から必要だよな〜とは思っていたものの、必要性を感じる事が多くなってました。

  • 英語を使えるか使えないかで、情報の鮮度が全然違う
    • ITの世界は日進月歩 && 中心は英語なので(最近中国語が増えてきましたが)、日本語情報だけだと一歩遅れる
      • 英語でバズってる有名なエンジニアの記事
      • 英語のマニュアル
      • 英語の技術書
  • 英語を使えないと、コミュニケーションが取れなくて不便な場面が多くなってきた
    • ライブラリの使い方をコミュニティ(英語)に質問する
    • ライブラリがバグってるのはわかってるし、直し方もわかるのに、issueとPRでどう伝えればいいかわからない

プライベートで

  • 旅行好きなので、海外でも快適に旅行したい

勉強の進め方とか

まずはTOEIC900点目指すよ

社会人で英語勉強するならまずはTOEICでしょ、という固定概念があるのは否めないですが、とりあえずTOEICやろうと思います。 TOEIC的には900点超えれば最高峰らしいので、せっかくなのでここまで目指します。 800点超えたら、ぼちぼちスピーキングの勉強もしますが、それまではTOEICだけで。

enjoylifeinenglish.blog112.fc2.com

良い(と思う)ところ

  • 成果が数字で出る
    • 数字の目標設定を置きやすい
  • 情報が多い
    • 勉強の仕方
    • 書籍
    • スクール
  • 国内では資格としての強さがある
  • 個人的に試験は得意
  • スピーキングの勉強するにしても最低限の色々(単語とか)は知ってないと効率悪そうなので

よくない(と思う)ところ

  • 話す能力が求められない
  • 試験なのでテクニックでカバーできてしまう
  • ITの専門用語は出てこない

今どれくらい?

  • TOEIC受けたこと無い
  • 大学受験の時に勉強した
    • なので文法は大丈夫だと思う
    • リスニングは無かったのでできない
    • スピーキングもできない
  • 仕事で英語のマニュアルを読んだりはする
    • google翻訳無くてもITの事ならなんとなくわかる

試験申し込んだ

試験として考えると、まずは自分の位置を把握しないと対策も何もできないので、とりあえず試験を申し込みました。

www.iibc-global.org

(この記事を書いていたタイミングでは)次回の実施は9/9で、結果がわかるのが10/9。けっこう先ですね、、、 というか、今年は後3回しか無いのか、、、

※ 記事公開前に見直したら次の会(10/28)が申し込み可能になっていたので、そちらにも申し込みました

勉強のコントロール

むかーし一瞬だけ登録して放置してたStudyPlusに、記録を付けていこうと思います。

english-seeker.com

細かい目標とか参考書選びはこれから考えます。

はてなブログ「Material」テーマのカスタマイズ

前回はMaterialテーマを設定しました。

moyashidaisuke.hatenablog.com

数ヶ月たっていくつか気になるところが出てきたので、色々カスタマイズします。

headingタグ(h1、h2とか。見出しタグ)

before

f:id:moyashidaisuke:20180718202115p:plain

h1とh2とh3がほぼ同じ見た目なので、記事のブロックがわかりにくいです。 こういう事です。私にはほぼ同じに見えます。

after

f:id:moyashidaisuke:20180718214003p:plain

かっこよくなりました。

やったこと

fontawesomeの設定

www.marorika.com

これだけでは見た目変わりませんが、この後使います。

cssの設定

hitsuzi.hatenablog.com

こちらの「みだし3種」を参考にいれました。

コードはこちらです。 - h1〜h3を対象に変光 - 色の変更(テーマカラーに合わせています) - 文字サイズをいい感じに調整 - marginとかpaddingをいい感じに調整

.entry-content h1 {
  padding: 4px 10px;
  background: #f3f3f3;
  border-left: 8px solid #3F51B5;
  margin:80px 0 30px 0;
  font-size: 180%;
}
.entry-content h2 {
  position: relative;
  border-bottom: 4px solid #f3f3f3;
  padding: 3px 10px;
  margin:40px 0 30px 0;
  font-size: 140%;
}
  
.entry-content h2::before {
  position: absolute;
  top: 100%;
  left: 0;
  width: 20%;
  height: 4px;
  background:#3F51B5;
  z-index: 2;
  content: '';
}
.entry-content h3 {
  position: relative;
  padding-left: 1.2em;
  line-height: 1.4;
  margin:30px 0 8px 0;
  font-size: 130%;
}
.entry-content h3:before{
  font-family: Font Awesome\ 5 Free;
  /*アイコンユニコード*/
  content: "\f00c";
  /*アイコン色*/
  color: #000; 
  position: absolute;
  font-size: 1em;
  left: 0;
  top: 0;
}

これを、「デザイン」->「カスタマイズ」->「デザインcss」に追記しています。(追記じゃないと以前の変更が消えちゃうので追記です)

本文の調整

本文って言っているのは、h1とかじゃないところです。ここみたいなメインの文章ですね。

headingタグをいい感じにした結果、本文が - 左に寄りすぎている - 行ごとの隙間がせまい

と思ったので調整します。

before

f:id:moyashidaisuke:20180718215050p:plain

after

f:id:moyashidaisuke:20180718215544p:plain

すきまが多くなって見やすくなったと思います。

やったこと

.entry-content p{
  margin:0 1em 1.5em 1em;
  line-height: 27px;
}

これをさっきと同じく、「デザイン」->「カスタマイズ」->「デザインcss」に追記しています。

font変える

before

f:id:moyashidaisuke:20180719231259p:plain

after

f:id:moyashidaisuke:20180719231715p:plain

やったこと

body {
    font-family: "メイリオ", Meiryo;
    color: #555555
}

フォントの変更と、ちょっと色が薄すぎるな、と思ったので色の調整です。

これもさっきと同じく、「デザイン」->「カスタマイズ」->「デザインcss」に追記しています。

SNSボタンかっこよく

before

f:id:moyashidaisuke:20180719234552p:plain

after

f:id:moyashidaisuke:20180719234604p:plain

やったこと

Materialテーマの作者さんの紹介記事そのままです。

webgaku.hateblo.jp

最終的なデザインCSS

/* <system section="theme" selected="8454420450093337097"> */
@import url("https://blog.hatena.ne.jp/-/theme/8454420450093337097.css");
/* </system> */


/* 2カラムレイアウト */
#container #content {
  width: 1160px;
}
#main {
  width: 800px;
  float: left;
}
#box2 {
  width: 300px;
  padding: 24px;
  float: right;
  margin-top: 0;
  margin-bottom: 60px;
  background-color: #fff;
  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
  border-radius: 2px;
  -webkit-animation-duration: 0.4s;
  -webkit-animation-duration: 0.4s;
  -webkit-animation-fill-mode: both;
  -webkit-animation-fill-mode: both;
  -webkit-animation-name: slideRight;
  -webkit-animation-name: slideRight;
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
}
@-webkit-keyframes slideRight {
  0% {
    -webkit-transform: translateX(6.25em);
    transform: translateX(6.25em);
  }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}
@keyframes slideRight {
  0% {
    -webkit-transform: translateX(6.25em);
    transform: translateX(6.25em);
  }
  100% {
    -webkit-transform: translateX(0);
    transform: translateX(0);
  }
}
#box2-inner {
  width: auto;
}
.hatena-module {
  text-align: left;
  padding-right: 0;
  width: 300px;
  float: left;
}
@media (max-width: 1024px) {
  #container #content {
    width: 95%;
  }
  #main, #box2, .hatena-module {
    width: 100%;
    float: none;
  }
  #box2 {
    padding: 0;
    background-color: transparent;
    box-shadow: none;
    border-radius: initial;
    -webkit-animation-duration: initial;
    -webkit-animation-duration: initial;
    -webkit-animation-fill-mode: none;
    -webkit-animation-fill-mode: none;
    -webkit-animation-name: initial;
    -webkit-animation-name: initial;
    -webkit-animation-timing-function: initial;
    -webkit-animation-timing-function: initial;
  }
}

/* Responsive: yes */


.entry-content h1 {
  padding: 4px 10px;
  background: #f3f3f3;
  border-left: 8px solid #3F51B5;
  margin:80px 0 30px 0;
  font-size: 180%;
}
.entry-content h2 {
  position: relative;
  border-bottom: 4px solid #f3f3f3;
  padding: 3px 10px;
  margin:40px 0 30px 0;
  font-size: 140%;
}
  
.entry-content h2::before {
  position: absolute;
  top: 100%;
  left: 0;
  width: 20%;
  height: 4px;
  background:#3F51B5;
  z-index: 2;
  content: '';
}
.entry-content h3 {
  position: relative;
  padding-left: 1.2em;
  line-height: 1.4;
  margin:30px 0 8px 0;
  font-size: 130%;
}
.entry-content h3:before{
  font-family: Font Awesome\ 5 Free;
  /*アイコンユニコード*/
  content: "\f00c";
  /*アイコン色*/
  color: #000; 
  position: absolute;
  font-size: 1em;
  left: 0;
  top: 0;
}

.entry-content p{
  margin:0 1em 1.5em 1em;
  line-height: 27px;
}


body {
    font-family: "メイリオ", Meiryo;
    color: #555555
}




.sns-header, .sns-footer {
    padding: 0 24px;
}

.sns-area {
    margin: 30px auto 10px;
    padding: 0;
    overflow: hidden;
    table-layout: fixed;
    display: table;
    width: 100%;
}

.sns-area li {
    list-style-type: none;
    display: table-cell;
    vertical-align: middle;
}

.sns-area li:last-child {
    margin-right: 0
}

.sns-link {
    position: relative;
    display: block;
    color: #fff;
    text-align: center;
    text-decoration: none;
    outline: none;
    overflow: hidden;
    height: 42px;
    line-height: 42px;
}

.sns-link::after {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 2;
    display: block;
    content: '';
    width: 0;
    height: 0;
    background-color: rgba(255,255,255,.3);
    border-radius: 50%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    opacity: 0;
}

.sns-link:hover {
    text-decoration: none;
}

.sns-link:hover::after {
    -webkit-animation: circle .75s;
    animation: circle .75s;
}
@-webkit-keyframes circle {
    50% {
        opacity: 1;
    }
    100% {
        width: 300px;
        height: 300px;
    }
}
@keyframes circle {
    50% {
        opacity: 1;
    }
    100% {
        width: 300px;
        height: 300px;
    }
}

.sns-twitter {
    background: #55acee;
}

.sns-facebook {
    background: #3a5795;
}

.sns-bookmark {
    background: #00A5DE;
}

.sns-pocket {
    background: #ED4055;
}

.blogicon-twitter,
.blogicon-facebook,
.blogicon-bookmark,
.blogicon-chevron-down {
    margin-right: 5px;
}

@media only screen and (max-width: 767px) {
    .sns-txt {
       display: none;
    }
   .blogicon-twitter,
   .blogicon-facebook,
   .blogicon-bookmark,
   .blogicon-chevron-down {
       margin-right: 0;
   }
}


/* 読者になる */
.hatena-follow-button {
  color: #fff !important;
  background: #4eacd1!important;
}

だんだん大げさになってきて、管理が大変そうになってきました、、、

【Unity】ビルドでエラー「com.android.dex.DexException: Multiple dex files define」

とあるassetを追加後に発生しました。

原因はjarなり、aarなりが重複している事。 追加されたファイルを確認し、似たような名前のjarやaarが無いか確認。 合った場合、バージョンが古い方を削除すればOK。

例のごとく、assetにplay-store系のjarやaarが直接含まれている場合に起こりがちなエラー。

※例のごとくについては以下を参照 www.moyashidaisuke.com

エラーログ

CommandInvokationFailure: Gradle build failed. 
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java -classpath "/Applications/Unity5.6/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleDebug"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/actions/ItemListIntents;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
]
stdout[
Incremental java compilation is an incubating feature.
:preBuild UP-TO-DATE
:preDebugBuild UP-TO-DATE
:checkDebugManifest

〜省略〜

BUILD FAILED

Total time: 1 mins 14.779 secs
]
exit code: 1
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.HostView:OnGUI()

今回は、以下の2つが重複していました。

  • play-services-basement-11.0.4.aar
  • com.google.android.gms.play-services-basement-15.0.1

play-services-basement-11.0.4.aar(古い方)を削除すればOK。

UnityのiPhoneX対応で苦労したポイントメモ

当時のログがあまり残ってないのもあって、不完全ですが、メモという事でご容赦ください。

やるべき事(ざっくり)

Submitting iOS apps to the App Store - Apple Developer

moyashidaisuke.hatenablog.com

  1. iOS 11 SDKでビルドする
  2. iPhoneXのSupreRetinaディスプレイに対応する

iOS 11 SDKでビルドする

必要要件の確認

iOS 11 SDKでビルドするためには、XCodeの9以上にする必要があります。

qiita.com

そして、XCodeの9.0〜9.2まではSierra、9.3以降はHighSierraに更新する必要があります。(9.2でSierraという組み合わせも考えられなくは無いですが、敢えて古いバージョンを使う理由がなければ、この際最新にした方が良いと思います。)

そして、HighSierraにするには、Unityのバージョンが問題になる事があります。

helpdesk.unity3d.co.jp

最低でもUnity 5.5.4p5 以上が必須になります。

必要要件まとめ

  • iOS 11 SDK
  • XCodeの9以上
  • HighSierra
  • Unity 5.5.4p以上

はい、明らかに大変そうな予感がぷんぷんします。 特にしんどそうなのが、Unityのバージョンアップが必要な場合です。

変更前 * iOS 11 SDK * XCodeの9.3 * HighSierra * Unity 5.6.

にを採用する事にしました。 Unityが5.6系なのは2017系だと更新が激しすぎてしんどそうだったためです。 5.5系よりは寿命が長そうとの判断もあります。(5.X系の最新なので)

もろもろバージョンアップ

OSのアップデート

普通にやればOK

XCodeのアップデート

普通にやればOK

ビルドで失敗する、、、(iOS) podが壊れてるっぽいエラーが出てたので最新化したら通りました。 https://qiita.com/Yuta/items/a20f4ea3207635b4ef9e

Unityのアップデート

インストールまでは普通にやればOK。 基本的には既存のUnityとは別でインストールする事をおすすめしますが、今回はHighSierraにした時点で過去のUnityが使い物にならなくなるので、上書きでも良いと思います。

コンパイルエラー潰す

gettype使えない対応 http://tsubakit1.hateblo.jp/entry/2016/11/25/235315#Unity-55%E4%BB%A5%E9%99%8D%E3%81%AE%E5%A0%B4%E5%90%88

targetSDKVersionはどちらにしろあげないといけないので、全て26に統一しました。

iPhoneXのSupreRetinaディスプレイに対応する

自分で書いたアプリのディスプレイ対応

Unity公式のを参考に

chocolattips.hatenablog.com

外部ライブラリ対応

あと、外部ライブラリを使っている場合、ライブラリの更新が必要になるケースが多いです。(広告とか)

これがまた大変です、、、

Unityのライブラリはunitypackageという、関連ファイルをまとめたものを展開する方式が一般的ですが、これは上書き機能しかありません。

Aというファイルが、新しいsdkでAというファイルのまま更新される分には問題ないですが、AというファイルがBというファイルにリネームされた(ディレクトリ構造が変わった場合含む)場合、sdkを更新してもAというファイルは残り続けます。 古いファイルが残っていると、大体コンパイルエラーで動かなくなります。

なので、sdkを更新する前に、古いsdkのファイル郡を一旦削除する、という手順を踏む事になりますが、そもそもどれかunitypackageから展開されたものなのか、という関連性はどこにも残っていません。 バージョン管理しているのであればその履歴から、ディレクトリにまとまっているものであればディレクトリ単位で削除、といった手段が考えられますが、これも問題があります。

削除してくれるAssetもあったようですが、今見たら入手不可能になっていました、、

baba-s.hatenablog.com

中にはお作法が悪くて、ディレクトリがまとまってないものが存在したり、インポートした後に、手動でマージ(AndroidManifest等)を強制されるライブラリもあったりするので、試行錯誤して消すしかありません。 AndroidManifestといえば、一生懸命書いた既存のAndroidManifestを無慈悲に上書きしようとしてくるやつもいるので注意が必要です。

また、native系のファイル(jarとか)も同じようなもので、昔のやつだとplaysotre系のjarとかaarが直接unitypackageに含まれていて、それが別のライブラリに含まれているバージョンと競合したりします。

unitypackageとのひもづけをproject上に残しておいて、一括で削除する機能、公式でください、、、

Android64k問題

trouble writing output: Too many field references to fit in one dex file: 92846; max is 65536.

qiita.com

sdkを更新したらなぜか死ぬほど増えた。

MultiDexビルドも頑張ってやったけどアプリが安定せず、困ったな〜と思ってたら、5.6で追加されたgradleでのビルドにしたらあっさり通った。

docs.unity3d.com

特に Unity では、DEX (Dalvik Executable 形式) ファイルのメソッド参照数が減少します。つまり、DEX 制限問題に遭遇する可能性は低くなります。

特にカスタムすることなく、デフォルト設定であっけなく動いた、、、

UnityでAndroid64k問題にぶちあたった場合は、是非試してみてください。

感想

iPhoneX対応うんぬんより、unitypackageの更新しんどい問題が一番やばかった、、、

UnityでAndroid O向けに通知をする

概要

Android O では通知にChannel(チャンネル)という概念が導入されています。

Android O というのはAndroid8系の事で、APIバージョン26でAndroidManifestで言う所のtargetSdkVersion=26の事です。

で、Channelというのは通知をグルーピングして設定を変えたりできる類のものなのですが、Android O ではこの新機能のChannelを使う事が必須になっています。

使わない結果は↓の通りです。 チャンネルが無いよ(No Channel found)ってエラーが出ます。

07-08 13:28:25.682 1152-2944/? E/NotificationService: No Channel found for pkg=com.XXXXX.XXXXXXX, channelId=null, id=560, tag=null, opPkg=com.XXXXXX.XXXXXX, callingUid=10219, userId=0, incomingUserId=0, notificationUid=10219, notification=Notification(channel=null pri=0 contentView=null vibrate=[250,500,250,500] sound=android.resource://com.XXXXXX.XXXXXX/2131034112 defaults=0x4 flags=0x11 color=0x00000000 vis=PRIVATE)

当然Unityでも通知はAndroidの機能を使っていますので影響がありますので、既存アプリで通知機能があるアプリは更新が必要です。

対応案

案1:targetSdkVersionを25以下にする

急場はしのげるかもしれませんが、2018年の後半にはtargetSdkVersion=26以上がアプリの更新に必要となりますので、おすすめできません。 www.telemarks.co.jp

案2:自前で実装する

Androidのネイティブ処理詳しい方はどうぞ。 公式にサンプルコードがあります。

Notifications Overview  |  Android Developers

案3:Assetを使う

AssetStoreで通知(Notification)で検索すると、Assetがけっこうな数ヒットします。 Unity Asset Store - The Best Assets for Game Making

ここで気をつけなければいけないのが、「Android Oに対応してる」「Channelに対応している」と明記されているかどうかです。

f:id:moyashidaisuke:20180713013615p:plain

こんな感じで書いてあれば多分大丈夫。更新が2017年の8月より昔のもの(まだAndroid Oが出ていない)や、明記されてないものは動かない可能性が高いです。

今回はこれを使ってみましたが、どれもそんなに変わらないと思います。

Android Local Notification Plugin - Asset Store

実装例

初期処理

private const string ANDROID_CHANNEL_ID = "channel1";

void Start(){
       #if UNITY_EDITOR
        // nothing
       #elif UNITY_IOS

       #elif UNITY_ANDROID
        LocalNotificationUnity.CreateChannel(ANDROID_CHANNEL_ID, Define.APP_TITLE, Define.APP_TITLE, NotificationImportance.HIGH, true, true, "soundName", NotificationSoundContentType.UNKNOWN);
       #endif
    }

割と適当ですが、こんな感じで最初に起動する処理のStart() あたりでChannelを作ってあげましょう。 Channelを複数作って〜という事であればもっと複雑になりますが、とりあえず通知したいだけならこれで十分。 通知の時の音とかもこのタイミングで指定するようです。

通知処理

public static void SetAndroidLocalNotification(int id, int sec, string body){
       #if UNITY_EDITOR
        Debug.Log("localnotify " + body);
       #elif UNITY_ANDROID

        DateTime now = DateTime.Now;
        TimeSpan secTS = new TimeSpan(0, 0, sec);
        LocalNotificationUnity.SendNotification(ANDROID_CHANNEL_ID, Define.APP_TITLE, body, now.Add(secTS), id);

       #endif
    }

このAssetはDatetimeを引数に取るタイプだったので、使いやすいようにラップする関数を適当に作ります。 通知するChanelも一緒に指定しますが、今回は1Channelしかないので固定値でOK。

つぶやき

  • iOSはUnityの組み込み処理で通知ができるのになぜAndroidは無いのか
  • このAssetは全部キャンセル処理がなぜか無かったです、、、
  • Channel必須にしなくてもいいのになぁ、、、

アプリのiPhoneX対応の必須化は更新も対象になったよ、という話

以前似たような記事を書いた時は必須じゃなかったのが必須になりました。

↓以前の記事 moyashidaisuke.hatenablog.com

オリジナルのソース

developer.apple.com

 Starting July 2018, all iOS app updates submitted to the App Store must be built with the iOS 11 SDK and must support the Super Retina display of iPhone X.

2018年7月から、全てのiOSアプリの更新で、iOS11SDKとSupreRetinaディスプレイの対応が必須になる、との事です。 なので、この記事を書いている今は既に必須になっています。

思ったより早かったですね、、、

時系列でまとめると、

  • 2018/2 「2018/4」から新規の時にiPhoneX対応が必須になるよアナウンス
  • 2018/4 新規の時にiPhoneX対応が必須になる
  • 2018/5 「2018/7」から更新も含めてiPhoneX対応が必須になるよアナウンス
  • 2018/7 更新の時にもiPhoneX対応が必須になる

Apple厳しいな〜と思っていたら、Androidでも同じような話があるようなので、こちらも注意が必要そうです。

qiita.com

近況報告と振り返り

1ヶ月くらいブログの更新が滞ってたので近況報告と、自分向けの振り返りを兼ねて。

最近どうしてたの

忙しかったです。連絡が滞っててしまい、関連各所の皆様については申し訳なかったです。

  • 仕事でメインでやってる複数プロジェクトのリリース時期が同じくらいになってしまう
  • 知り合いのお手伝い案件のリリース時期も同じくらいになってしまう
  • 急遽AWS Summitでちょっと話す事になった

というわけで、ずっと仕事してた気がする、、、 倒れるほど働くとかブラックな感じではないですが、めっちゃ集中して作業して疲れ果てて余裕なくなってました。

ギターも弾かず、旅行にも行かず。

お仕事

みんれびというエンディング(葬儀関連)業界のITスタートアップに転職して、1年ちょっと経ちました。

moyashidaisuke.hatenablog.com

1年間振り返り

次の4年半でやりたい事と転職理由
できなかった事の裏返しになってしまうですが、ゲームじゃないサービスにじっくり取り組んで見たかったのが一番大きいです。
あと、もっと組織に食い込んで影響範囲広げつつ、社外でももっと活動したいと思っています。

元々考えてた目的はけっこう叶えられているので、転職して良かったな〜と思います。

  • ゲームじゃないサービス
    • やってます
    • 運用も新規も両方
  • 組織に食い込んで
    • マネージャーという肩書をいただいて、採用活動からやっています
  • 社外でももっと活動
    • (最近行けてないですが)勉強会行ってLTしたり
    • AWS Summitでも話しました

できるようになった事、チャレンジした事 [技術面]

  • インフラ周り
    • AWSと周辺サービスがっつり使って設計、構築
    • 結局全部作り変えた
    • 最近はコンテナ
      • 2018/7に東京リージョンで使えるようになるFargate待ち遠しい
    • サーバレスもいいよね
  • 手法とか
    • TDD始めました
      • テスト書きながら作った方が総合的には早いくらいまでは慣れてきた
    • DDD始めました
      • ある程度うまく行った事例を作れた
  • 言語、FWとか
    • Laravelがっつり
      • 前職で最後の方だけ使ってたけど、リリースされたサービスで使ったのは現職から
      • webにおいて必要な機能は大体網羅されてて、特別な要件が無い場合に潰しがきくFW
      • 制約のきつさが個人的にちょうど良い(きつすぎでもなく緩すぎでもなく。使い方で調整できる
      • DDDと相性良い
    • Go始めました
      • 過去のしがらみ(闇)が少ない新しい言語ってのは良いですね
      • 良くも悪くも枯れてないのでライブラリの選定(そもそも使わないという選択肢も)が大変
    • vue.js始めました
      • 社内ツールは冒険できるので使い始めた
      • 完全新規だとNuxt.jsが素晴らしい
        • そもそもSPAはアーキテクチャとしてクライアントとサーバサイドが分離されて綺麗(HTMLをレンダリングする処理がPHPとjs混在してぐちゃらない)
        • そもそもSPAはユーザー体感的に速い
        • Nuxtも良くできていて、少しだけルール覚えれば簡単に作れる
        • SSRも勝手にやってくれる
        • コンポーネントっていいよね(htmlとjsとcssがセットで管理できる、、、)
        • cssのscopedいいよね
        • 早く本サービスで使いたい
    • GitHub始めました
      • あこがれのPRで開発

振り返ってみるとけっこう色々やりましたね、、、 SPAはユーザー体験が変わるので、本格的にチャレンジしたいです。他のも大事ですが、エンジニア以外には価値を説明しにくいやつですね、、、

  • スピード感もって
    • できるだけサービスに注力
      • それ以外はできるだけ楽する
  • でも負債はできるだけ抑えて
    • 過去の負債とは戦いつつ
  • 世の中のデフェクトには置いてかれないように
  • しかも限られた工数で

というそれぞれ相反するもののバランスを取りながらやらなきゃいけないのがスタートアップですが、まあまあ良くやれたんじゃないでしょうか。

クライアントはNuxtで作って、サーバ側はインフラとか面倒なのでサーバレスでやりたいですが、サーバレスは設計を大きく変えないといけなくて(RDBとは相性悪いとか)使い所を気をつけないと行けないのがネックですね。

できるようになった事、チャレンジした事 [技術以外]

技術ほどたくさんは無いですが

  • 採用に携わるようになった
  • 純粋なWEBサービスの運用感覚が少しわかった
    • SEOとか意識できるようになった
    • ゲームに比べると考える事が多くて大変
  • チームマネジメント
    • ちょっとだけ

しばらく一人マネージャー+業務委託の方だったので、マネージャーとしての管理業務はほとんどやっていないのですが、開発ルール決めたり担当決めたりくらいはしていました。

あと、ゲームの場合は面白いゲームを作ってたくさんの人に遊んでもらって、あわよくば課金してもらって〜という課金モデルが確立されていますが、 今はそもそもどういうサービスを提供するかだったり、購入していただいた後の社内業務だったり、その後のお金の流れだったり、ビジネスは考える事が多いな〜と実感しています。

観点が多い分一人だけでは絶対無理で、他の役割を持った方々との協業を前に比べてすごく意識するようになりました。

前職は特にエンジニアが多い会社で、エンジニア同士だったらある程度つーかーで伝わるのが、すごい特殊な環境だったのだと思います。

社名変わりました

corp.yoriso.com

サービス名と同じ名前の「株式会社よりそう」になりました。 サービスの方のよりそうは、企画の段階から携わって作ったものなので、それと同じ名前になるというのは感慨深いです。サービスはまだまだやりたい事だらけなので、 早くもっと良いものにしたいな〜

というわけでエンジニアは随時募集中です。募集要項だと書いてないですが、とりあえず話聞きたいとかだけでも全然OKですよ。 corp.yoriso.com

あと、社名変更に伴って名刺も新しくなりました。 新しい名刺では念願のテックリードこと、TechnicalLeadを名乗れるようになりました。 f:id:moyashidaisuke:20180621210614j:plain

今までの肩書が「マネージャー」だけで、外から見て何する人なのかイマイチ伝わらなかったのが少しわかりやすくなったのと、技術面を引き続きコアにしていくぞ〜という決意の現れです。

というわけで、みなさま引き続きよろしくお願いいたします。

仕事でのコミットで個人GitHubアカウントに草を生やす

TL;DR

  • 会社のGithubアカウントと個人のGithubアカウントを統合する
  • Githubの設定をちょっと変える
  • 仕事してるだけで個人アカウントの草が生えて気持ち良い😄

f:id:moyashidaisuke:20180504192123p:plain

きっかけ

findy-code.io

ランキングにのっている企業さんや、著名な企業アカウントをいくつか拝見したところ、以下の事がわかりました。

企業別GitHubアカウントと個人アカウントのひもづけ

そもそも、企業別GitHubアカウントに個人をひもづけている(Peopleタブでアカウントが出て来る)企業と、ひもづけていない企業があります。

きっかけとなったfindyさんのランキングに出ている企業はひもづいています。 一方で、けっこう有名な会社でOSSを出してるような企業でも、ひもづいていない企業さんもあります。

ぱっと思いついたところではDeNAさん。 github.com

なんでランキングに入っていないんだろう?と疑問に思ったら、そもそも0人扱いになっていました。 後述しますが、セキュリティ的なルールとかあるのかもしれませんね。

ひもづいている個人のActivity

Peopleタブからひもづいている個人ページの情報を確認できますが、以下の2パターンいる事がわかりました。

  1. 単純にoss活動しているアカウントがひもづいているだけ
  2. oss活動と会社での活動がまざっているアカウント

a. 単純にoss活動しているアカウントがひもづいているだけ

activity(草とか、その下に表示されてる。草についてはこちらに、publicなリポジトリの情報のみが載ってる人。

b. oss活動と会社での活動がまざっているアカウント

activityに、「10 contributions in private repositories」とか載ってる人。 もしかしたら、個人のprivate活動的なリポジトリの可能性もありますが、平日にがつがつコミットしている場合は、仕事をしているのでは?と推測。

で、「あ、GitHubの個人アカウント、そのまま仕事に使ってる人ってまあまあいるんだ!」という事に気が付きました。(メールアドレスとかと一緒で、企業に属していて、個人のものを流用するという発想自体なかった)

というわけで検討してみました。

仕事アカウントと個人アカウントを統合のメリット・デメリット

enterpriseは使った事無いので、全体的に考慮されていないです。

メリット

  • 毎日OSS活動をしなくても、仕事でがつがつコード書いていればアカウントに草が生えるので、気持ち良い😄
  • アカウント切り替えなくて良い
    • dotfilesとか
    • qiitaとかcompassとか、SNSログイン系
  • 社外での活動で通っている名前がある場合、社内でも同じ名前で活動できる
  • 仕事でばりばりコード書いていますよ!という証跡に多少はなる

デメリット

  • セキュリティ的には微妙
    • まあ普通わけますよね
    • enterpriseとか使っててIP制限かけてる場合とかどうなるんでしたっけ

その他気になるとこ

  • 課金周り
    • orgnizationの課金は、orgnaizationにひもづけるアカウントの数に対する課金なので、ひもづくアカウントの状態は関係ない
    • 同じく個人アカウントが課金しててもしてなくても、orgnizationにどうひもづいているかは関係ない
  • 企業別Githubアカウントの見えちゃいけないやつが見えちゃったりしない?
    • リポジトリがprivateにさえなっていれば大丈夫
    • リポジトリがprivateじゃないと、個人アカウントがどうとか関係なくダメ

というわけで、会社的なセキュリティルールさえ乗り越えられれば問題なさそうです。

やってみた

github.com

アカウント統合

なんと先人がいらっしゃいます。

ryoichi0102.hatenablog.com

私の個人アカウントはほとんど動いていない状態なので、会社アカウントに統合する事にしました。

qiitaのアカウントはGithubアカウント以外でログインして、設定画面からひもづけを削除->追加 したらひもづけが変更できました。

問題無い範囲でprivateリポジトリ系の情報を公開する

qiita.com

企業別アカウントとのひもづけを公開

orgnizationページ -> people から切り替えられます。(権限が必要かもしれません) f:id:moyashidaisuke:20180504191834p:plain

まとめ

OSS活動をしているメンバーがいる会社は、これをやるだけで無料でwebで宣伝してもらえたり、こういう人が所属していますよ!というアピールになるので、基本やった方が良いと思います。 そうじゃない場合も、草がはえるのは単純に気持ちが良いのでおすすめです。

【書評】「ソフトウェアデザイン 2018年4月号」を読んだ

ソフトウェアデザイン 2018年4月号

ソフトウェアデザイン 2018年4月号

機械学習特集

webエンジニアの自分でもある程度理解できる内容だった。 細かいロジックは専門家じゃないとわからないけど、それを支える周辺環境系(webサービスとか)だったり、webAPIを読んで利用するパターンとか、色々整ってきている感。 エンジニアでも(機械学習のじゃない)今時これくらい知ってた方が良いよ、という思いを感じる、、

機械学習に必要なのは

  • 数学系のスキル
  • エンジニア系のスキル
  • 機械学習の流儀

pythonのツール特集

必要性がよくわからなかった、、、(それshで十分では、、、) 対象としている読者が不明。 書籍も出てるのを見たことがあるけど、対象の層がよくわからない

色々自動化して楽しようね、という思想はよくあるやつ。 エンジニアにとって、怠慢は美徳だから悪いこと言ってるわけじゃないんだけど、なんかもやもやする。

その他

  • 及川さんと曽根さんの連載は最終回との事で残念。書籍化希望。
  • 社会インフラのLinux
    • 数十年使うシステムの保守を考えるとかすごすぎる