むにえる牧場

毎日むにえるをつくっています

Google Driveで生のファイルを開く方法

Google Driveで生のファイルを開く方法

f:id:jalemy:20190930221635p:plain
Google Driveファイルプレビュー画面

  • ファイルプレビュー画面右上のハンバーガーメニューから 新しいウインドウで開く を押下する

    f:id:jalemy:20190930221649p:plain
    ハンバーガーメニュー - 新しいウインドウで開く

  • https://drive.google.com/file/d/15jL5J8UTCszvwxa-p3uGT7RY0dtZXCEn/view のようなURLで新しいウインドウが開かれる
    /d//view で囲まれている文字列をコピーして控える
    (これを便宜上 file_id とする)

  • https://drive.google.com/uc?id=file_id とURLを入力する
    (e.g. https://drive.google.com/uc?id=15jL5J8UTCszvwxa-p3uGT7RY0dtZXCEn )

  • 上記URLを開くと、リダイレクトされて生のファイルが開ける
    リダイレクトされたURLは下記の通り
    画像ファイルなのではてなブログだとそのまま画像として貼り付けることもできる

https://doc-10-48-docs.googleusercontent.com/docs/securesc/h8tchaq6q4v0hc8aae42dejcgbb2bd6c/hs7outhmeia20hubmggj1ifm2etg8dh5/1569844800000/04222892440491808371/04222892440491808371/15jL5J8UTCszvwxa-p3uGT7RY0dtZXCEn?nonce=lb8q6tfp0cbds&user=04222892440491808371&hash=s72jht8e9bvapu3ps8nd25a34o3cu77n

https://doc-10-48-docs.googleusercontent.com/docs/securesc/h8tchaq6q4v0hc8aae42dejcgbb2bd6c/hs7outhmeia20hubmggj1ifm2etg8dh5/1569844800000/04222892440491808371/04222892440491808371/15jL5J8UTCszvwxa-p3uGT7RY0dtZXCEn?nonce=lb8q6tfp0cbds&user=04222892440491808371&hash=s72jht8e9bvapu3ps8nd25a34o3cu77n

※写真はα6400で撮影した線香花火の様子

注意点

  • ファイルの閲覧権限はGoogle Driveでつけている権限に基づいて処理される
    • 他人が見れないように権限を振っていると403が返ってくる

ジテツウ備忘録

はじめに

転々々職をしてから、ほぼほぼ毎日自転車通勤をしています。
全然技術っぽいことではないですが、ジテツウ仲間に広まったらいいなという気持ちで備忘録エントリです。

ちなみに、タイトルのジテツウは自転車通勤の略称です。
ジテツウ専門ブログみたいなものも存在するので、結構バリューは高いらしい。

ジテツウ情報

距離とか時間とか

  • 距離 約4km
  • 所要時間 10分強~15分

です。
電車にして1駅2駅くらいの距離なのでさほど距離はありません。

自転車

TREK FX3 disc に乗っています。(2018年モデル)

www.trekbikes.com

今のところカスタマイズなしのバニラ状態で乗っていますが、乗り心地はかなり良いです。
一点、油圧ブレーキのためブレーキ周りのメンテナンスが難しいというデメリットがあります……
ブレーキの油圧周りが壊れてしまうと修理に1,2万かかるとかなんとか

タイヤがバニラ状態だと32cで結構太いので、そろそろ28cか25cあたりに付け替えようかと思っています。

鞄はこれを使ってます。

  • Macbook Pro 1台
  • ノート1冊
  • 財布とか折りたたみ傘とかメガネケースとか
  • APS-C サイズのカメラ

あたりを入れてますが、肩に負担少なく走れます。おすすめ。

健康情報

ジテツウすると痩せるとか健康になれるとか、そんなようなことをよく聞くので4か月くらいジテツウした結果を記録。
まず、体重ですがまったく減っていません。それどころか増えました。(たぶん4kgくらい増えてるはず)
これは職場が変わってしっかり3食食べるようになったからとか、そういう点もあります。
が、適度に運動することによって食べられる量が増えたみたいな側面もありそうな……

体力については、多少ついたかな……?といった程度です。
約4km程度の走行だと体力をつける目的には全然足りない様子。
10kmくらい走ればかわるでしょうか。

ジテツウしてよかったこと

なんといっても 通勤電車に乗らなくて良いこと です。
一時期電車通勤に2時間弱時間を費やしていたので、電車通勤のストレスが半端なかったのですが、それから解放されるだけでメリット増し増しです。
付随して、 電車の時刻に悩まされなくなる という点もあります。

走行状況にもよりますが、私の場合は電車通勤するよりもかかる時間が少なくて済みます。
朝から電車の喧騒に揉まれることなく通勤できるのは控えめに言って最高です。

会社で1on1を4半期ほど続けてみた感想

はじめに

現在Webエンジニアをしていますが、月1で社長と1on1をする機会が設けられています。
世間的(?)に1on1が重要視されている雰囲気を感じているのですが、4半期くらい1on1をやってみて感じることがあったのでブログにしてみました。

1on1とは

「1on1」とは、上司と部下が1対1で定期的に行うミーティングのこと。 米国シリコンバレーでも“1on1 meeting”は文化として根付いており、人材育成の手法として今、世界的に注目を集めています。 部下は上司に仕事で経験したことや悩みなどを伝えて内省し、上司は部下が成長するようにアドバイスを与え、気づきを促します。 会議や査定といったかしこまった場とは異なり、お互いに自然体で話す場を定期的に設けることで、部下の内省による成長や、社内のコミュニケーション活性化が期待されています。

1on1ミーティングとは何? Weblio辞書

weblio辞書から引用させていただきました。
つまるところ定期的に上司と部下で重苦しい場ではなく、カジュアルに話す機会を設けようということ。

私の観測範囲では、いきなり1on1と称してとくに上司とか、友達とか、特別な関係でない人に1on1の相手をしてもらうなんて活動をしている人も見かけます。
Discordを利用してオンラインで1on1をやっている人もちらほら。

総じて満足度高めな意見を見かけるのは、聞き手が上手なのかそれとも声が大きい案件なのか、その点の真偽はいまいちわかりません。
が、ことエンジニアに関しては比較的内向的というか自分1人で悩みがちな点があると思うので、とりあえず話す相手ができるというのはとても良い機会なのかもしれないとか思ったりします。

弊社での1on1のやり方

さて、弊社での1on1のやり方ですが、ざっとまとめると以下の感じ

  • 月1で1時間程度時間を利用してやる
  • 面談シートが存在する
  • 事前に面談シートを埋めることで、その内容をもとに話を広げる
  • 面談シートは記録として残すので、見返すことが可能

面談シートの中身については守秘義務的なアレで割愛です。
ぼやーっと書くと、今月の働きごこちいかがでしたかとか、個人的に頑張ったことは何かとか、これから頑張りたいと思ってること何かとかそんな感じ。

まだ入社して半年も経ってなく日が浅いのですが、入社してすぐのときは、40時間勤務して1回、100時間勤務して1回とオンボーディングを兼ねてやっていました。
そのあとは基本的に月1というペース感

1on1を4半期やってみて

4半期という書き方をしていますが、回数的には5,6回くらいです。

ということで1on1をやり続けた感想です。

まず、最初は何話して良いのかわからないし、話すとしてもどこまで話すべきかよくわからず、正直話しづらいという感覚でした。
曲がりなりにも上司と部下という立場ですし、カジュアルに話す機会といってもわきまえるべきことはいろいろあるし難しいというお気持ちでいっぱいです。
(試用期間とかそういうのも働いて構えてしまうっていうのもあります)

しかし人間には慣れというものがあるようで、回数を重ねるたびにある程度の話しやすさというものが生まれてきました。
それを感じたのが今月の1on1でしょうか。回数的には5回目になるはず……期間的には4か月目です。
今までは1on1をやることで1か月をふりかえるという点が大きかったのですが、今回は今後の目標という点に比重があるように感じました。(主観です)

1回1回の1on1は、もしかすると大したことないなと感じたり、むしろ苦痛な時間だったりするかもしれませんが、続けることに価値があるなと感じます。(主観(ry)
このあたりはスクラムのレトロスペクティブあたりと親和性があるのかなと思ったり。

どうしても仕事をしていると仕事の細かいタスクについて目がいってしまうというか、俯瞰した視点を持ちづらいというか、内省するタイミングを失いがちだと思います。
そこを半強制的にカバーして、かつ第三者の視点が介入するというのがメリットだなーと。

おわりに

完全にふわっとした感想しか書けていなくて、なんだろうこれ意味あるのかと後悔しつつあります。 しかしノルマがあるので公開する

私は1on1で話す側の視点しかまだ持ち合わせていないので、1on1で聞く側の視点を持ったらまた少し見方が変わってくるかもしれない(?)

あ、あと話した内容を要約して記録に残す、文章化する技術も地味に大事だなと感じますね。
このあたりは人事のような職務に携わっている人は得意そうなイメージ。

総じて、継続して積み重ねていきたいと思う次第でした。

brew bundleを利用してHomebrewで管理したアプリを一括でインストールする

はじめに

Macユーザーならほぼ全員が利用していると思われるHomebrewのちょっと便利な brew bundle コマンドについて紹介します。
Macのお引越しをする際や、他人に入れているアプリを共有するときなどなど結構便利です。

Homebrew

brew.sh

すでにご存知かもしれませんが、Mac用のパッケージ管理ソフトです。
Homebrewを利用すれば、Macで利用するアプリのほぼすべてをHomebrewを介して管理できます。
install, uninstall, updateといろいろできて便利です。

個人的にはHomebrewを介さないでアプリを入れたくないほどに……

brew bundle dump

$ brew bundle dump

とterminalにてコマンドを入力すると、Homebrewで管理しているアプリを Brewfile に書き出すことができます。

brew bundle

$ brew bundle

とterminalにてコマンドを入植すれば、 Brewfile に一覧されているアプリを一括でインストールできます。

そして.dotfilesに

BrewfileGitHubなどなどで管理しておけばいつ何時Macが故障してもすぐに開発環境を構築できます。
私の Brewfile は今こんな感じ

github.com

おわりに

小ネタです……
ブログのあり方というか書き方をちょっと悩みつつあります。
とりあえず続けることが大事という意識です。

転々々職して3か月経過した

はじめに

転々々職をして3か月経過しました。
3週間、3か月、3年なんてところに壁があると聞きますが、その壁を2つ乗り越えたのでそろそろ転職記事なるものを書こうと筆をとった次第です。

who am i

そもそもお前は誰なのかということで、まずはTwitterがこちら

twitter.com

  • 93年生まれの26歳
  • 情報系大学卒
  • ゲームをするのが大好きで7,8年くらいずっとLeague of Legendsをプレイしている
  • 大雑把な言語遍歴: Java -> C# -> PHP
  • 多摩地区在住

新卒就職

日付をしっかりと覚えてないが、大学3年の秋(?)冬(?)頃にサポーターズというサービスを利用してモバイルゲーム開発/運営会社のA社に内定をいただいた。

supporterz.jp

それから大学4年の6月から早期出社という形式で週3,4日ペースでアルバイトをさせてもらった。
入社してからはUnityでのゲーム開発業務をさせてもらった。
学生時代にはUnity触ってないし、C#も書いたことないということで不安だらけだったが、C#の記法が比較的Javaと似ていたのもあってなんとかついていけた。
あと学生時代に、下記の本を利用してゲーム開発のいろはを学んで自分で開発していたのがとても役に立った。

Androidゲームプログラミング A to Z

Androidゲームプログラミング A to Z

A社では、

  • リリース済みのモバイル向けゲームの運用および新規機能開発
  • 完全新規ゲーム開発
  • 新卒採用周りの職務
  • 社内勉強会の運営

といろいろなことをさせてもらった。
アジャイル開発のいろはも学べた。所謂モダンな開発現場だった。社内Slackも盛況で部活動のようなものも盛んだったと思う。
今現在は組織が変わっていろいろと大変みたいな話を聞くが、とても良い環境だったと思う。

しかし、A社は2年半程度で辞めてしまった。
理由としては3つ程度ある。
1つ目はプライベートがいろいろ大変だったこと。
彼女と同棲していたのだが(今もしている)、あまり身体の調子がよろしくなく女性特有の病気にもなってしまっていた。
今でも病気への付き合い方は難しいなーと感じているが、当時は全然余裕がなくて仕事に行くのはギリギリもしくは遅刻してしまうし、土日はほぼ寝て過ごすという感じだった。
平日は残業から帰ってきてストレス発散にゲームをする→しかし対人オンラインゲームで上手く勝てずにストレス溜まるみたいな悪循環だった。

2つ目は通勤経路が長かったこと。
A社には中央線で通っていたのだが、中央線の端から端へ通うというような感じだった。
混雑状態もストレスになるし、仕事で疲れた後に通勤というハードルがある。
なら会社近くに引っ越せばいいのにとなるが、同棲という制約があって動きづらかった。(自業自得のような気もしている)

3つ目は技術的に追いつけてないという不安感が日に日に高まっていたということ。
A社の同期エンジニアはめちゃくちゃ優秀な人ばかりだった。ゲームジャムとか頻繁にやってるし、仕事でのコミット量も圧倒的に多いし……と当時は劣等感マシマシだったのを覚えている。
自宅で勉強して追いつこうと思っていたが、1つめ2つめの問題があって余裕がなくて全然やりたいことができなくてさらに高まる劣等感……という感じだった。
一応他の部分で成果出せればと思ってアジャイル開発のいろはを学び直したり、他の人がやりたがらないことを積極的にやったりしたが、焼け石に水という感じで自身の気持ちはあまり晴れなかった。

ということが積み重なって退職に至った。
プロジェクトが変わって環境変化があったのも原因の1つかなとは思うが、基本的には自身に問題があったのかなと思っている。

1回目の転職

A社を退職してからしばらく休んで気力が回復してから転職活動をした。
この転職活動では、マイ●ビやリク●ビのような大手サービスとハロー●ーク経由で転職活動をした。

そして自宅から近かったB社に入社した。
当時はあまり深く理解できていなかったのだが、所謂SIer下請けのSES会社だった。
N●●とかパチ●ロ基盤系のお仕事とかが多かった。

川●の客先に常駐してのお仕事だったのだが、

  • パイプ椅子
  • インターネットに繋げないどころかイントラネットすらない
  • 誰が何の仕事してるかわからないし聞いても教えてもらえない
  • バージョン管理はファイル名
  • 1個だけ存在するUSBメモリでコードがやり取りされる
  • 紙駆動手動テスト

と結構レガシーな感じだった。
プロダクトそのものはそこまでレガシーではなくて、Cordovaを利用してのタブレット型注文アプリのようなものをつくっていた。
全然触ったことなかったが、仕事そのものは比較的楽にこなせていたと思う。
現場の社員の方に「君みたいにコードばりばり書ける人は社内だと1,2人くらいしかいないよ」みたいなことを言われて、本気か……?となった。

通勤もかなり遠くて、乗り換え乗り換え乗り換えからのバスで片道1時間30分〜2時間程度だった。
1時間超えると途端にしんどさが増す。

結局こちらの会社は3か月程度で退職に至ったのだが、レガシーかつしんどい環境に嫌気がさしてしまったのともう1つ
社員の方から「この会社には成長しようという考え方の人はいないよ」というようなことを言われてしまったこと。
ただでさえ変化の激しいIT業界でレガシーなことやってて、その上成長思考がないと聞いたら不安要素がたっぷりだった。
もともと不安駆動というか、マイナス思考な部分が多いので決定的だった。

2回目の転職

B社にいながら当時流行っていたTwitter転職活動をしていた。
某ひよこアイコンの人のハッシュタグとか、Twitter転職みたいなタグを使ってやっていた。
ありがたいことに10数社の方から声をかけていただいて、いろいろな会社を訪問させていただいた。

これと同時に技術書典とか、podcastにも手を出していた。
しがないラジオが環境的に被っていたのでエピソード1から全部聞くレベルだった。
(今でも聞いています。 そのうち喋らせてください )

shiganai.org

そして都心にある規模が小さめのモバイルゲーム会社に内定をいただいて入社した。
残念ながらこちらのC社は全然続かなくて1,2か月程度で辞めてしまった。
各所に迷惑をかけてしまって反省している。

当時は焦りやら、疲れやら、なんやかんやで判断が鈍っていた……と思う。
言い訳のようになってしまうが、

  • オンボーディングのような仕組みがなかった
  • C社で利用している技術に馴染みがなかった
  • 通勤が遠かった
  • 残業マシマシだった

というような点があってダウンしてしまった。
大きめな環境変化が連続してあったのも影響して体調を崩してしまった。

そして3回目の転職

半年くらいゆっくりして、再び転職活動をした。
3度目の正直ということで、今までの失敗を生かして会社を見た。
Twitter転職とその他転職サービスを併用していた。
結果、B社にいた頃に、勉強会に参加させてもらったD社の社長からTwitterで声をかけてもらって、入社に至った。
D社はWebサービス開発をメインに行なっているWeb系の開発会社である。

技術的についていけるかという不安があったのをはっきりと伝えたところ、選考フローの中で開発課題を設けてくれた。
D社以外にも転職活動はしていたので、その活動と並行して少しずつLaravelでのブログサービス開発のようなことをしていた。
週1くらいでオフィスにお邪魔して面談のようなことをしてもらって、1月程度経ったところで課題のレビューをしてもらった。
レビューと同時に、社員全員(4,5人くらい)との面接をさせてもらって内定に至った。
選考フローとしては長めだと思うが、経歴が経歴だったので安心感に繋がった。

3ヶ月たった今

D社で元気に(?)働いている。

  • 自宅から自転車通勤で片道20分くらい
  • 自己研鑽タイムというものがあり、毎日1時間自由に使える
  • 月1で1on1面談をやってもらえる
  • 開発環境モダン

と良い感じ。
仕事としては、Laravel + Vue.jsを利用してWebサービスの開発をしている。
1か月目はWebの事まったくわからん状態だったが、2か月目突入したあたりでなんとなくいろはがわかってきた。
3か月経過した今はパフォーマンスチューニングのようなこともさせてもらっている。
社員の人数が少ないからいろいろなことをやらせてもらえる。(逆にいうとなんでもやらないといけないが、何でもできるようになりたいという思考があったので良かった)
とはいえ、いつ技術的についていけなくなるか、成果を常に出し続けないといけないみたいな焦燥感はずっと持っている。
これで潰れない限りはちょうどよいストレスになるかもしれないが、まあ怖いよね。
自己研鑽タイムという仕組みがあるおかげで日々勉強ができるのでその辺りが良い塩梅なのかもしれない。

プライベートで彼女を支えるといった点は継続中なので、その辺りの折り合いをつけつつ、勉強量活動量を増やしていきたい……というのが今現在のお気持ち表明である。

最近はなんとなーくC#を書きたい気持ちがあるので、C#のBlazorとか触ってみようかなと思っている。

dotnet.microsoft.com

さいごに

転職エントリ恒例のほしいものリスト添付です。

ほしいものリスト

【Laravel】テスト中にRoutingを追加する

はじめに

Laravelでテストコードを書く際に、テスト中に Routing を追加したい場面に出くわしました。
そんなコードの備忘録記事です。

version は Laravel 5.6 利用です。

テスト中に Routing を追加する

単刀直入に、コード上でRoutingを追加するコードはこちら

public function registerRoute($method, $route, $middleware, $closure = null)
{
    if (is_string($m)) {
        $m = [$m];
    }

    $middleware = collect(['web'])->merge($m)->toArray();

    if (isset($closure)) {
        app('router')->match($method, $route, $closure)->middleware($middleware);
    } else {
        app('router')->match($method, $route, [function () {
            return view('layouts.app');
        }])->middleware($middleware);
    }
}

Laravel Router

Laravel 5.8のコードですが、こちらにRouterクラスがあります。

framework/Router.php at 5.8 · laravel/framework · GitHub

今回利用したmatchメソッド以外にもいろいろとpublicになってるので、結構何かと弄れそうな雰囲気

テストでの利用法

テストコード側からの利用はこんな感じに

$this->registerTestRoute('GET', "/test/{test_id}", ['middleware'], function () {
    return 'test view';
});

$response = $this->get('test/1');

$response->assertStatus(200);

【NodeSource】6.xを指定しても10.xしか落ちてこなくて困った話

はじめに

CircleCIにてNode.jsの環境をつくるのにNodeSourceを利用していました。
6.xを指定していたのですが、突然10.xが落ちてくるようになり、jobが動かなくなったので解決方法をメモ書きしておきます。

問題

CircleCIのjobで

 - run:
    name: Install Nodejs
    command: |
        curl -sL https://deb.nodesource.com/setup_6.x | bash -
        apt-get install -y nodejs

としていましたが、ここでインストールされるNode.js10.15.2 になってしまってました。
npmが同梱されていなくてこの後にnpm iする時点で落ちる。
npmを解決しても、その後のjobでnode-sassを利用していてNode 10.xだと動かない。
と問題になってました。

解決方法

試行錯誤した末にたどり着いたissueがこちら

github.com

コメントを意訳すると、

「現在のworkflowだとNode.jsの新しいバージョンを取得しようとしている。特定のバージョンを取得したい場合の回避方法があるからやってね」

とのこと。
手順は、

  • 現在入っているNode.jsを削除
$ sudo apt-get purge nodejs
  • 設定ファイルを開く
$ sudo vim/etc/apt/preferences.d/nodesource
  • 設定内容を記述
Package: *
  Pin: origin deb.nodesource.com
  Pin-Priority: 600
  • 変更が適用されているか確認する
$ apt-cache policy nodesource
  • 再度Node.jsをインストールする
$ sudo apt-get install nodejs

CircleCI jobへの適用

CirCleCIではこんな設定にして解決しました。

 - run:
    name: Set Preference
    command: |
        echo "Package: *" | tee -a /etc/apt/preferences.d/nodesource
        echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodesource
        echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodesource
 - run:
    name: Install Nodejs
    command: |
        curl -sL https://deb.nodesource.com/setup_6.x | bash -
        apt-cache policy nodejs
        apt-get install -y nodejs

おわりに

今回の問題に行き当たったことで、

  • Pin-Priority : パッケージの優先度をつける
  • teeコマンド : ファイルへの出力と標準出力での出力を同時に行ってくれるコマンド

と学びがありました。
環境周りのエラーは本当に難しいので解決できて良かったです……!