shibuso.net

プログラミングとかゲームとか

最近の私のWindowsでのWeb(Rails)開発環境

2019年01月01日 | タグ: 開発 , Web

明けましておめでとうございます。本年もよろしくお願いいたします。早いもので前回投稿してから丸一年放置してしまいました(苦笑) ありがたいことにまだ検索で訪れてくれる方がいるみたいですし、今年は更新していきたいと思います。

Web開発界隈は私の観測範囲では結構Mac派の方が多いですが、最近Windowsを使い始めたという記事を続けて見かけたので、ずっとWindows環境で開発を続けてきたWindows派の私の環境についてもちょっと書いてみたいと思います。ちなみに今の職場は周りは全員Macです。

以前win-sshfsの記事を書いたりしましたが、最近は使わなくなっています。最近はDockerを使うことが多いですが、この方法はDockerでも単純な仮想環境でもどちらでも対応可能です。加えて言うと、別にWindowsじゃなくてMacでも可能です(笑) ただしIntelliJ IDEAかあるいはRubyMine等のJetBrains製のIDEにあるdeployment機能ありきのものです。類似の機能があれば他のIDEでも対応可能かと思いますが、ご了承くださいm(_ _)m

ちなみに私の現在の開発環境はホストはWindows 10 Proで、ゲストとして仮想環境(VirtualBox)にUbuntu18.04を使っています。更にその上にDockerを動かしていて、そこでRailsを走らせています。

何故マウントしないのか

上でも触れましたが、私は過去にsshfsや、更に前はsambaや仮想環境独自のマウント機能を使ってマウントしたりしてきました。ただそれぞれ問題がありました。共通しているのはディスクアクセスが遅くなることです。それがホスト側で問題になること、ゲスト側で問題になること、両方ありました。

色々悩んだ結果、ソースコードはそれぞれの環境で別々に持った方が速度的に問題なくなるということになったのですが、それはそれで今度はソースコードの不整合が発生することになります。

それを対処するためにrsyncみたいなsync機能があればいいなと考えていたのですが、IntelliJ IDEAが便利なdeployment機能を搭載していてくれたおかげで簡単に実現できました。今回紹介する方法はその機能を使った方法ですが、これも上で書いたとおり類似した機能があれば何でも実現可能です。

現在の大まかな構成

構成

ホスト上とゲスト上両方にソースコードを置くことになるのがこの構成の特徴です。Dockerを使う場合は仮想環境上で動かし、仮想環境上のソースコードを置いたディレクトリをDockerにマウントすることで対応します。Dockerが仮想環境上のファイルを見る分には特にディスクアクセスの速度に問題は起こっていません。コマンドラインから立ち上げる時は-vオプション、docker-compose.ymlで設定する場合はvolumesで設定する感じですね。

まずホストからゲストと繋げるためにSSHが繋げるようにしておきます。これは個人的にSSHを導入するのが一番楽だったり、その他開発する上で便利かと思って使っていますが、FTPを使っても対応可能です。

続いてホストとゲストそれぞれの環境でgit cloneしておきます。その方が改行コードの問題とか起こりづらいです、多分。

その後IntelliJ IDEAのdeployment機能を使います。「Tools > Deployment > Configuration」から設定します。ホスト環境とゲスト環境のそれぞれのコードの置き場を設定すれば、初期設定は完了です。ついでにExcluded Pathsタブでホスト環境の.ideaディレクトリと、ゲスト環境のtmpディレクトリ、logディレクトリを指定しておけば大まかに大丈夫かと思います。

ここまで設定すれば実際deploymentツールを実行することが出来るはずです。実行して問題が無ければ設定成功です。最後に「Tools > Deployment > Automatic Upload (always)」を選択すれば、上書き保存する度に勝手にアップロードされます。多分これだけで設定完了です。便利!簡単!

注意点

上記までで一通り使えるようになったかと思いますが、少し注意点があります。

まず気をつけれなければいけないことは、deployment機能は万能ではないということです。上書き保存時にアップロードしてくれますが、ゲスト側で新規にファイルを作ってもホスト環境にダウンロードしてくれません。rails g等でゲスト側でファイルを作成した後には手動で同期を行う必要があります。私はSettingsのKeymapで「Sync with Deployed to...」を設定して、すぐにdeployメニューを呼び出せるようにしています。

それからホスト側の文字コードや改行コードにも、特にWindowsでは気をつける必要があります。Windows上でテキストファイルを新規作成すると改行コードはCRLFになってしまいます。IDEの設定でLFに設定しておくのが無難で、且つファイル作成はIDEから行うように徹底しておいた方が良いと思います。

あとファイル権限周りは同期に失敗する原因になります。特にDockerを使っていると仮想環境とDockerでユーザが違ったりして、ファイルを新規作成する時に毎回設定する必要があったりします。まぁそこら辺は慣れれば毎回意識して設定出来るかと。ちなみに私は常にホスト側でgit commit, pushするようにしています。

まとめ

私のWindowsと仮想環境を使った開発環境の構成を紹介しましたが、完全に我流の構成です。Windowsと仮想環境を使ってどうやってWeb(Rails)開発が楽に出来るかとあれこれ試行錯誤した結果ではあるものの、これよりも便利に開発できる方法があるかもしれないので、これがベストだと主張するつもりもありません。

Macでもまったく同じことが出来るので、個人の趣味嗜好で環境を選択できれば良いんじゃないかなと思います。アプリと違ってWeb開発はあまりOSに縛られないのが楽なところかと思います。私は以前Macを買って使ってみたものの肌に合わなかったので、今後もしばらくはWindows環境でやっていけたらと思います。

布団乾燥機のホースを修理していました

2017年12月31日 | タグ: 雑記

大分更新をサボってました、久しぶりの投稿です。この季節布団が冷たくて、寝る前に布団乾燥機を使って温めるようにしていたのですが、去年買った日立のHFK-VH770のホースが1年ちょいで破れてしまったので、それを自力で修復したのをまとめてみました。まずは破れた状況の写真から。

壊れたホース

こんな感じに、ほぼ千切れるぐらいのレベルで破けました。前日まで普通に使えてたはずなのですが、もしかしたらある程度亀裂が合ったのかもしれません。写真にも写っていますが、近くにもいくつか亀裂がありました。

ホースの交換が可能かどうか調べてみましたが、公式ページにはパーツとしては特に紹介されていませんでした。一応公式の商品を扱っていると思われるECサイトは発見しましたが(HFK-VH770 ホースで検索すると見つかると思います)、本当に使えるのかわからなかったのと、年末だったので届くまで時間がかかりそうだったのでもっと違う方法を考えてみた結果、ジャバラホースを修復するテープが売られているのを知り、試してみました。こちらの商品です(私は地元のお店で売ってたのでそっちで買いました)。

正直ホースが太いので本当にどうにか出来るのか不安だったのですが、灰色のテープで何度か挑戦した結果何とかなりました(^^;

修理その1

これがまず下地で、続いて黒いテープで巻きます。これは多分ゴムテープと呼ばれるものだと思います。結構太いのですが長さは短いので、もし足りなかった場合は別に買い足して巻けば良いと思います。自分の場合はギリギリ足りた程度でした、ホースが太いからかなり使ったのとあまり引き伸ばさなかったのが原因かと思います。

修理その2

一通り黒いテープで巻いたあとは、灰色のテープをその上から改めて巻きます。

修理その3

これで完成です。見た目はそれなりに上手く行きました(個人的感想です)。使ってみたところ、特に問題なく使うことが出来ました。唯一問題点があったのが、収縮することが出来なくなってしまったので、ホースを本体に収納することが出来なくなってしまったことです…。

これでまた壊れたりしたら、ホースを購入するかもう別の布団乾燥機を買おうかと思います。そもそも1年ちょいで壊れるホースって、耐久性に難ありですよね。1年超えてしまって保証が使えなかったのが痛かったです、これ1年中使ってたらもっと早くに駄目になってたんじゃないかと思うんですよね。ひとまずこれで今季は大丈夫だと思うので、しばらく様子見です。

Webエンジニアが4Kディスプレイを1年半使ってみた感想

2017年09月07日 | タグ: 感想

過去に4KテレビをPCディスプレイ目的で購入した記事を書きましたが、あれから早くも1年半も経過しました。その次に書いたSurface Bookで4Kを出力する記事は、嬉しいことに今でもちょくちょく検索にヒットするようでアクセスがあります。ということで、今更ですが43インチの4Kディスプレイ(REGZA 43G20X)を使ってみた感想を書いてみます。

まず使い方としてはSurface Bookのメインディスプレイとして利用しています。本体のディスプレイとの大きさが違いすぎるので、本体の方では出力していません。それでも十分作業スペースは確保できます。画面表示の倍率は125%で使っています、100%はちょっと文字が小さすぎましたね。決して読めないぐらい小さいわけではないのですが、使ってて辛くなったので125%にしました。

良かった点としては、やはりとにかく作業スペースが広い。全て横並びに置くというのはさすがに厳しいですが、一部重ねるぐらいならばIDEとブラウザとコンソールを配置しても余裕があります。そして1枚のディスプレイで表示しているわけだから、色味の違いで違和感を覚えたりすることが無いというのも利点でしょうか。

PCと繋げるコネクタも1本で済みます、ノートPCの場合は持ち運ぶ度に抜き差しが必要となるのでこういうのも便利と感じます。Surface Bookの場合はドックを買えば良いんですけど、あれだけで2万円かかりますからね…。

さて、ここから微妙な点を書いていきます(苦笑)。まずディスプレイが大きいことは良いんですが、横だけじゃなくて縦にも大きいというのは考えものでした。視線を上に向けるのって面倒です、目が疲れます。となると必然的に画面の下の方にあれやこれや物が集中することになり、あまりフルに活用できていないように感じます。

それからディスプレイのサイズについてですが、先に書いたとおり43インチでも4Kを100%で表示するのはきついなと感じました。これが49インチとか55インチとか更に大きなディスプレイなら可能なのかもしれませんが、そうなると更に横にも縦にも大きくなるので、それがPCディスプレイとして実用的なのかどうかについてはよく分かりません。

余談ですが、32インチでの4Kディスプレイとかありますが、あれは150%や200%で表示しないと使えないんじゃないですかね? そうなると、4Kである意味というのをどう見い出せば良いのか、使ったことがないのもありますが分かりません。特にWindowsの場合、アプリケーションによっては倍率にちゃんと対応できてないものがあったりするので(古くからあるフリーソフトとか)、表示が大変かと思います。

感想としてはこんな感じでしょうかね。個人的には、エンジニアがディスプレイとして使うのに一番適しているのは27,8インチぐらいのWQHDじゃないかなと思っています。それを出来れば2枚並べて、あるいはノートPCの場合は本体のディスプレイと合わせて使うとか。43インチ4Kはテレビとしては文句ないんですけどね、ゲームも快適です。

Xperia XZ Premiumを買ってみました

2017年08月20日 | タグ: ガジェット , 感想

Xperia Z1(以下Z1)をかれこれ3年半以上使ってきたのですが、そろそろ買い替えたいなと思っていたのでXperia XZ Premium(以下XZP)にMNPで機種変してみました。使ってみた感想とか軽く書いてみます。他のAndroidやiPhoneの機種との比較は無いです。

XZPを選んだ理由としては、現時点のハイエンド機であり、また2年ぐらい同じ端末を使い続けても不便が無いと良いなという願望からです。当初はXperia XZsでも十分かと思っていたのですが、ドコモにMNPすると端末購入サポートとして8万円弱も割り引いてくれて、XZPとXZsで端末代金に差が無かったので、それじゃハイスペックのXZPが良いなと(笑)

それまでmineoを使ってましたが、おサイフケータイ機能を使いたいがために白ロムのXZPを探してました。ただ白ロムだともしかしたら使えなくなる可能性があったのでそこが怖いところですよね、お店が保証してくれるところで買えば良いのかもしれないですが。そんな時にドコモの端末購入サポートだと本体代金が激安になると知って、計算してみたところ私の使い方(カケホーダイライトプラン+データSパック)だと1年使った後に解約違約金を払っても、白ロムで買った本体(8万円程度を想定)+mineo(デュアルタイプ3GB)と比べると安いんですよ。

そんな皮算用をして機種変をしましたが、ドコモ回線についてはまず基本的に不満は無し。そりゃこれまで使ってたのがMVNOですからね、完全に上位互換ですから(笑) 端末についてですが、巷で話題になってる写真の歪みに関してはそもそも写真をあまり撮らないのと、Z1でも既にあったのでそんなに気になりません。「Zシリーズは大丈夫だったのに」みたいな書き込みを見かけましたが、端末によって差があったんでしょうかね? 私のZ1は同じように歪みがありましたが(苦笑)

感動したのはやっぱりCPUスペックが向上したおかげでアプリがサクサク動くことですね。特にポケモンGOとか、リリース直後にZ1でやってましたが端末が熱くなりすぎてすぐ諦めました。それに比べてXZPはそんなに熱くなりません(多少は熱くなりますが)。電池のもちも大分良くなってるように感じます。ポケモンGOをやってるとさすがに消費が激しいですが、それでも少しの外出時の使用という私の使い方なら1日もちます。それと最近はスタンダードなのかもしれないですが、電源ボタンの指紋認証でのロック解除は便利ですね。指紋認証を利用したのはThinkpad X61以来です(古い)。

地味に便利だったのはデフォルトでライト機能が付いていたことですね。今までアプリを入れて対応してきたんですけど、最初から入っていると導入の手間が省けたり、広告が出ないで済むので良いですね。

一番不満な点は、通知のランプが気づきにくいというところです。Z1はバーのような広範囲が光ってくれたのでパッと見ただけで気づけたんですけど、XZPでは小さい丸い点のようになっていて本当に気づきにくい。そんなにスマホを確認する癖とか用事が無いので、もうちょっと気づけるように光ってほしいんですけどね…。それからWi-Fiがたまに切断されて4G回線になっちゃってるときがありますが、これは海外サイトによるとファームウェアで改善されたとか? まだ日本には来てないみたいですね、期待したいです。

全体的には満足して使っています。Androidのバージョンも7.1.1なので、検証端末としても役立ってくれそうです。今のところ私の仕事はWebがメインなのでアプリほどバージョンには依存しませんが。

フリーランスになりました

2017年08月06日 | タグ: お知らせ

既に1ヶ月以上経っていて今更ですが、退職してフリーランスになりました。なりましたと言っても今現在何か仕事をしているわけではなく、ちょっと早めで長めの夏休みを取っていました(笑)

自分の長所と短所、今持っているスキルと今後伸ばしたいスキル、現在の年齢と今後の生き方を考えた結果、ここは試しに独立してみようという判断に至りました。最初からネガティブじゃあれですが、失敗しても全然やり直しがきく範囲ですし。

この1ヶ月、基本は遊んでばかり(ウィッチャー3のDLCやHorizon Zero Dawnを遊び終わった)でしたがプログラミングで新しいことにも取り組んでみました。フリーランスとして"NocTech"という屋号を名乗ることにしましたが、これのためにホームページを作成しました。ほぼペライチなホームページで無駄ですが、Rails5.1でpumaで動かしてます。Railsは問題なかったですが、初pumaとnginxの設定はちょっと苦労しましたね…。それとデザインもちょっと悩みました。

こんな感じでまだ働いてないですが、もし何かお仕事のご依頼がありましたらこちらのページからお問い合わせください。

今後はこのブログの更新頻度を上げられるようにもうちょっと頑張りたいところですが、こちらは相変わらず趣味の話も詰め込んでいこうと思うのでより混沌とするかもです(苦笑) もうちょっとタグとか見やすくて使いやすいように改善しなきゃな…。

WindowsでVirtualBoxのVMが起動できなくなった

2017年07月09日 | タグ: 開発

他に書きたい事があるけれど、直近で不具合に遭遇したのと解決出来たのでまとめてみます。

Windows10にVirtualBoxを入れて使用していたのですが、何かの拍子でVirtualBox自体が起動できなくなりました。恐らくですがWindows10 Creators Updateが怪しいんじゃないかと思っています。アップデート後にすぐに使っていなかったので確信はないのですが。

そこでひとまずVirtualBoxを最新のもの(5.1.22)に更新してみました。するとVirtualBoxは起動できるようになったのですが、今度は肝心の仮想環境が立ち上がりません。エラーメッセージには「NtCreateFile(\Device\VBoxDrvStub) failed: Unknown Status -626」という表示が。なんのこっちゃって感じです。

検索してみたら2年前のQAがヒットしたりしてたのでWindowsの更新が原因じゃないのか?と悩んだりしましたが、回答としては最新の物で更新したりWindowsを以前のバージョンに戻したり、test buildsというbeta版のようなものを使ってみるというものがありました。そこで5.1.23を入れてみたところ、ちゃんと動いてくれるようになりましたヽ(´ー`)ノ

ちなみに何か変な設定が残るとまずいかなと思ってVirtualBoxは毎回アンインストールしてからインストールし直してました。それと仮想イメージには一切手を触れなかったのでデータとしては何も問題なく使えました。

一時はどうなることかと思いましたが、無事使えたのでホッとしてます。しかしこの症状の原因がWindows10 Creators Updateが原因だとしたら、リリースされてから時間が経ってると思うのでもっと色々被害があってもおかしくないと思うのですが、何か別の原因なのかあるいは環境によるんでしょうかね? 結局問題の原因がわからなかったのが、今後また再発しないかが気になる点です。

2017/07/20 追記
5.1.24がリリースされていたので導入してみたところ、こちらでも問題なく動作しました。

Angular2を利用していると思ったら…

2017年06月15日 | タグ: 開発 , Web

去年の後半に、リリースされたばかりのAngular2を使用してチャット機能を作っていました。チュートリアルとかを一通りこなして実装しましたが、Railsに組み込む部分で四苦八苦したのが印象深いです。

そんなシステムが今朝クラッシュしていました。なんでだろうと思ったらzone.jsが何かコケていると。でも昨日まで動いていて特に手を触れていないのになぜ急に壊れるのか。DBには特に問題はなかったのでこれはもう完全にJS側の問題だろうと思って調べていたところ、RxJSが原因でした。

CDNから読み込んでくる時にバージョン指定していなくて、昨日次期メジャーバージョンアップのalpha版が出されたことでコケたみたいですorz

完全にケアレスミスですね。チュートリアルからコピーしてきた部分でしたが、バージョン指定をしているライブラリもあったので、まぁ気づけよと。RxJSの5系を指定したらまた問題なく動いてくれました。

やれやれこれで一件落着かと思っていたのですが、引き続きsystemjs.config.jsを眺めていたらどうもangular coreの方にもバージョン指定がされていないように見えました。何か嫌な予感が、胸騒ぎがしました…。

 あ…ありのまま 今 起こった事を話すぜ!

『おれはチュートリアルに従いAngular2を動かしていると
思ったらいつのまにかAngular4.2.2になっていた』

な… 何を言ってるのか わからねーと思うが
おれも何をされたのかわからなかった…

頭がどうにかなりそうだった…

見間違いだとか自動アップデートだとか
そんなチャチなもんじゃあ 断じてねえ

もっと恐ろしいものの片鱗を味わったぜ…

いやぁ、本当に設定がザルでした(汗) 幸いな事にAngular4.2.2の今でも(確認した範囲では)問題なく動いてくれていたので、このバージョンでロック。今後こういうことが無いように注意します…。

Let's Encryptを利用してSSLを導入してみた

2017年05月09日 | タグ: 開発

Let's Encryptが正式サービスを開始してからだいぶ経ちますが、ようやくこのブログにも導入してみました。前々から入れよう入れようと思っていたものの、基本サーバとかネットワークに疎いためどうにも億劫で先延ばしにしていました。もうあちこちに導入方法とかまとまっていますし結構簡単だったんですが、Ubuntu16.04でnginxを使っていて、それもパッケージを使って入れるという方法があまり見かけなかったので、備忘録も兼ねて書いてみます。

まず最初に参考にしたのはCertbotの公式ドキュメントです。nginxとUbuntu16.04の組合せについてはこちらのページに書かれていますが、ここでまず一つ問題が。ここに書かれているコマンドは私が見ている現時点では

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot

となっていますが、ここのadd-apt-repositoryがPythonの環境が入っていないと実行できませんでした。そのため先に

$ sudo apt-get install software-properties-common python-software-properties

を実行しました。余談ですが、私は基本aptitudeを使っています。今回はapt-getで書き換えていますが、aptitudeを使っている方は置き換えて考えてください。

さて、上記を一通り実行したらもうCertbotの導入は完了ですね。次はもう証明書の取得です。

$ sudo certbot certonly --webroot -w [ドキュメントルート] -d [ドメイン] --email [メールアドレス]

これで証明書の取得が可能です。ドキュメントルートはRailsだったらRailsルート/publicですね。一つ気をつけたいのは、パッケージで導入した時のコマンドはcertbotだということです。よくQiitaとかでcertbot-autoで書かれたりしてますが、あれは恐らくソースをDLした場合のコマンドです。今回パッケージで導入したから違うわけですね、私はちょっと戸惑いました。

ここまで来ればあとはnginxの設定と証明書の更新の設定です。nginxの設定については

server {
  listen 443 ssl;
  ssl_certificate     /etc/letsencrypt/live/www.example.com/cert.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
}

ここらへんを気をつければ大丈夫なはずです。さくらのナレッジの記事を参考にすると、80でアクセスしてきた場合のリダイレクト処理も書いてあげるとなお親切ですね。

server {
  listen       80 default_server;
  listen       [::]:80 default_server;
  server_name  www.example.com;
  return  301 https://www.example.com$request_uri;
}

そして証明書の更新についてはrootユーザのcronに

0 5 * * 0 certbot renew --post-hook "service nginx restart"

こんな感じで設定しておくと良いかと思います。上記は毎週日曜日の午前5時に証明書の更新を試みる内容になっていますが、どうもこれを実行しても証明書の有効期限が一体期間以上残っていたら更新はしないようになっているようです。

以上が私がLet's EncryptでSSLを導入するまでの大まかな手順でした。

Dockerのマウントが重すぎる件

2017年04月10日 | タグ: 開発

まず前置きとして私は使い慣れているWindows環境が好きで、Macを試してみたものの馴染めずに戻ってきました。しかしWeb開発、それも主にRubyとRailsを使って開発しているためLinux環境は欠かせません。そのため常に仮想環境が必要となりますが、エディタはやはりWindows上で、それもIntelliJ IDEAを使いたいという思いがあります。

そんな私の最近ローカル仮想環境はDockerで構築しています。ただ、Dockerを上手に使っているかと聞かれるとそんなことはなくて、普通のVMのようにSSHだのDBだのあれこれ一つのコンテナに詰め込んでしまっているので、むしろDocker使いの方からは怒られるような使い方をしてしまっている気がします(汗

ただし最近この環境の重さ・遅さに辟易としてきました。何が重いかというと、Dockerでホストのフォルダをマウントしているのですが、その読み込みがとてつもなく遅いときがあるのです。ファイル数も影響しているのか、以前は気にならなかったのですが、最近悪化している気がしていました。

これはどうもDockerというよりもそれを動かしているVirtualBoxのshared folder機能に問題があるみたいです。確かに以前VirtualBox単体で使用していた際も重いと感じたことはありました。またこれはホストOSがWindowsかMacかという点は関係なく重いそうです。それとDockerのフォーラムで結構長いやりとりがされていますが、同じVMというジャンルでもVMwareでもそういう現象が報告されています(人によって程度に違いはあるみたいですが)。

そんな重さに嫌気が差したため、Dockerのマウントを捨てて以前も使っていたSSHFSに変更してみたところ、すこぶる快適になりましたヽ(´ー`)ノ いやぁ、あんなに読み込みが遅かったのが嘘みたいにサクサク動いてくれます。

ただこのSSHFSが万能かというと、そうとは言い切れません。ソースコードはGitで管理しているのですが、ホスト側から管理できなくなりました。正確に書くと、以前はホストOSであるWindowsの環境下にSourceTreeを使って管理していたのですが、今回Docker下にファイルを置くことになったため、どうも不具合が発生して取り扱えません。

IntelliJ IDEAにもGit機能はあるのですが、これも正常に動作しません。むしろindex.lockファイルを生成したままでロックされてしまうため(SourceTreeでも同じ現象が発生しました)、使わないように設定を変更した方が無難です。というわけでソースコードの管理はDocker上でコンソールでGitコマンドを叩いて対応しています。私は以前もコンソールから叩いていたので思い出せば楽勝でした、助かった(´ー`;

という感じに完璧ではないですが、私はこの方法で最近は開発しています。ありがたい事にWindowsでDockerを使うためのwin-sshfsdokan(dokany)の開発が再開(?)されているため、Win10(64bit)環境でもきちんと動いてくれています。Dockerを使う人だけじゃなく、VirtualBoxやVMware等を使っていて、共有フォルダの挙動の重さに困っている人も試してみると良いかもしれません。

GRAPH APIのユーザIDからFacebookユーザへのリンク

2017年03月21日 | タグ: 開発

最近プログラミングに関する投稿をしてなかったので、軽めの内容ですが自分のための備忘録として。

Railsでアプリを作ってて、ログインをOmniauthを使ってFacebookと連携させるようにしていたのですが、この時受け取るユーザIDからFacebook上のユーザのページって見れないのかなって調べてみました。結論としては可能ですが、GRAPH API v2以降仕様が変わったみたいですね。

基本的にhttps://www.facebook.com/4(これはマーク・ザッカーバーグさん)のように、globalなIDが各自に振られているのですが、このユーザIDはAPIからは取得できません。以前はこの値をAPIで使用していたようですが、v2からは各アプリ毎に振られている模様です。

それじゃどうすれば良いのかと言うと、https://www.facebook.com/app_scoped_user_id/ユーザID/ の「ユーザID」の部分を置換することでユーザのページへのリンクとなります。

数ヶ月前にも一度調べたんですけど使っていなかったら忘れていて、また調べるのに時間かかったため書きました…最近こういうこと多いな…。しかしこれ、キーワードとしては何が良いのでしょうか? 国内の記事もあまり引っかからなくて(無いわけではない)。