production.log

スナップマート株式会社で取締役CTOをやっている星直史のブログです。

Expo SDK v36.0.0で追加されたMediaLibraryのお気に入り写真の読み込みが遅い問題と回避策

React Native 0.61からCameraRollが削除されました。 そのため、Expo SDK v36.0.0以降でExpoマネージドアプリを作成している場合は、MediaLibraryを使用して写真を読み込まなければならなくなりました。 CameraRolleでは、「お気に入り」がアルバムの一つと…

Snapmartアプリで使用しているReact Navigationをv4からv5にアップグレードした際の対応

2020年2月にReact Navigationのv5がリリースされました。Snapmartアプリでは、React Navigation v4を使用しています。 React Navigation v4では、Stack NavigatorにJavaScriptを使用していましたが、ネイティブのような感覚とパフォーマンスが低下する場合が…

SnapmartアプリのExpo SDKのバージョンをv35.0.0からv37.0.0にアップグレードで対応したこと

4月1日にExpo SDK v37.0.0がリリースされました。自分が開発に携わっているSnapmartアプリではExpo SDK v35.0.0を使用していました。 Expo SDK v36.0.0がリリースされた際は、Snapmartアプリにとって、アップグレードを行う強いモチベーションがなかったので…

React Nativeにおいて、WebViewでhtml内のリンクをブラウザアプリで処理をする方法

先日、Expoアプリで使うWebViewはreact-native-communityを使わなければ表示させることができないという記事を書きました、今回もWebViewネタ。 WebViewを使用するときは、大きく2つに分かれます。 1. URLを指定する場合2. HTMLを記述する場合 WebViewはWebV…

Expoアプリで使うWebViewはreact-native-communityを使わなければ表示させることができない

ExpoアプリでWebViewを使用する際、以下のソースコードでは、画面に文字列を出力することができません。今回はExpoアプリで使うWebViewはreact-native-communityを使わなければ表示させることができない問題の解決方法を書きます。

RailsでCSVを生成し、Excelで開く時にハマったこと

管理画面的なシステムで、RailsからCSVを出力し、それをエンドユーザーがExcelで開くようなシュチュエーションで困ったことがありました。 * セル内の日本語が文字化けしてしまう * 0埋め文字を生成しても、Excelで先頭の0が除かれてしまう それぞれ5分ほど…

Rails6で追加されたAction Mailboxをルーティングから消す方法

Rails6導入されたAction Mailboxは受信したメールをコントローラに似たメールボックスにルーティングし、Railsで処理できるようにする機能です。 非常に便利な機能ですし、Railsのプロジェクトを作り始めた直後から使い始めることが可能です。 rails new直後…

React Native Debuggerの長時間使用時のメモリリークを防ぐ方法

React Nativeを使用したアプリの開発時に必要になるものはデバッガーです。デバッガーにはいくつか種類があります。 * Chrome * VSCode * Reactotron * React Native Debugger * console.log((流石にこれだけだとキツいですが)) これらの中で、私はReact Nat…

今日最終出社日を迎えたインターン生の前で泣かずに済んだ

今日は、ピクスタの開発部サポート(開発部の総務的なチーム)のインターン生の最終出社日だった。 そのインターン生は、何の変哲もない大学生であったが、弊社に多大な貢献をし、最終出社を終えた。 今回は、そのインターン生が何故そのような成果が出せたの…

AWS EC2上でReact Native + Expo アプリを動かし、手元のスマホに配信する方法

React Native + Expoを使用すると、エミュレータだけではなく、実機でも手軽にアプリの動作を確認することができます。 ただし、制約もあります。 * 実機への配信は、同一のネットワークからでなければ配信することができない * 配信元はローカルのPCとなる…

Re:スムーズに技術書を入稿するためのチェックポイントと値付けについて

技術書典8は新型コロナウィルスにより中止になりましたが、印刷所への入稿が割引率が最も高い早割で申し込むことはできました。 技術書典の参加は今回で2回目でしたが、1回目で覚えた内容をほぼ忘れていたため、 前回メモ書き程度に残した自分のブログを頼り…

ReactNativeでカメラロールから写真を複数枚選択する処理の実装

自分が作っているプロダクトであるSnapmartは、スマホのアプリから誰でも手軽に写真を売り買いできるサービスです。 スマホアプリでは、カメラロールの中から写真をアップロードをする機能があります。 この写真をアップロードする機能ですが、カメラロール…

rake db:migrateでIndex column size too large.と言われてしまった場合の対応

development環境にMySQLを構築して一からmigrationを実行しようとした時に、Index column size too large.と言われてしまいました。 この記事ではrake db:migrationでIndex column size too large.と言われてしまった場合の対応についてメモ程度にまとめます…

ReactNative製AndroidアプリからさらにiOSアプリ実装が終わったのでKPTを行う

SnapmartのAndroidアプリはReact Nativeで実装されています。iOSアプリはSwiftで実装されているのですが、この度、React Nativeで置き換えることにしました。手順は、まずAndroidアプリを作り、それからiOSアプリを置き換えることにしました。((当初そもそも…

クリスマスパーティーでフライドチキンと間違えて唐揚げと竜田揚げを買わないように違いを調べてみた

クリスマスといえば、フライドチキン。フライドチキンといえば、揚げた鶏。揚げた鶏といえば唐揚げ。揚げた鶏といえば竜田揚げ。さて、唐揚げと竜田揚げとフライドチキンの違いがわからないことに気づいた。これは大変まずい。 もし仮に、クリスマスパーティ…

AWS S3で特定のバケット内のオブジェクトをワイルドカードを使用してい削除するコマンド

AWS S3を利用していると、ある特定のバケット内のオブジェクトをワイルドカードを使って削除したい場面があると思います。 シェルスクリプトのrmコマンドと同じノリでいけるかと思いきや、オプションを指定しなければならなかったので、そのメモを残します。

React Native + ExpoによるiOSアプリ審査申請時の広告ID(IDFA)設定

iOSアプリの審査申請時、広告ID(IDFA)を選択するように言われます。間違った選択をすると審査で落とされてしまうのですが、毎度毎度「どの設定したらいいんだっけ?」と悩まされます。今回は自分用にReact Native + ExpoによるiOSアプリ審査申請時の広告ID(I…

美味い炒飯は準備が8割

学生時代に飲食店でアルバイトをしていたのですが、メニューにない炒飯をひたすら練習していました。その飲食店は業務用の高火力コンロと鉄製の中華鍋があったので、何も考えなくても美味しい炒飯が作れたのですが、家庭だとそうはいきません。時が過ぎて201…

群馬県は草津温泉 若乃湯 草津舘に行ってきました。

草津温泉 若乃湯 草津舘は、これまで自分が行った旅館の中で、ダントツでした!若女将のホスピタリティ、料理、温泉と、どれをとっても良かったです。ロケーションも良いですね。湯畑からも近いですし、湯もみ体験所の隣なので、「草津節」も聞こえたりしま…

【第六回】群馬県は磯部温泉せせらぎの湯 桜や作右衛門で一人執筆合宿をしてきました

前回の一人開発合宿が2018年5月でした。2018年-2019前半は記憶がなくなるくらい、忙殺されていたなぁとしみじみ思います。さて、一人合宿も今回で6回目です。今回は、会社で使った技術が雑誌寄稿のネタになったので、短期連載を持つ事になりました。しかし、…

bundle install時に--path vendor/bundleを付ける

自分は、bundle installをする時に--path vendor/bundleを付けてプロジェクトごとにgemを管理しているのですが、なぜかこのオプションだけ覚えることができないので、備忘録的に書く

Apache Bench(abコマンド)をmacOSで実行した場合に出るエラー「socket: Too many open files (24)」の回避方法

AWS ELBの暖気申請(Pre-Warming)をしたかったのですが、サポートのプランがBusiness以上でなければ申請できないため、自前でPre-Warmingをする必要がありました。 AWS ELBは負荷が上がった場合に、AutoScaleするLBです。 通常、事前に大量のトラフィックが予…

AWS障害が発生した場合に確認するページやサイトまとめ

2019年8月23日 13時頃からAWS EC2の接続ができなくなる障害が発生しました。 このような大規模障害は滅多にないので、障害の情報収拾する際に「どこみりゃいいんだ?」となるので、この機会にまとめることにしました。この記事ではAWSで障害が発生した場合に…

福島県金山町は玉梨温泉に行ってきました

夏休みに実家の福島に帰ったので、前々から行きたかった金山町の温泉に行くことにしました。 福島県金山町は天然の炭酸が湧出することで有名です。 井戸から炭酸水を汲むこともできますし、温泉にも利用されています。 また、天然炭酸温泉は全体の0.6%という…

群馬県は四万温泉 中生館に行ってきました

初めてだけど、懐かしい。でおなじみの四万温泉ですが、前回の旅行から早一年。静かな温泉地が恋しくなったので、今年も四万温泉に行くことにしました。

SnapmartのブログサーバーのSSL証明書をLet's EncryptからAWS Certificate Manager (ACM)に移管しました

先日、SnapmartのブログサーバーのSSL証明書が有効期限切れになってしまい、アクセスすることができなくなってしまいました。これまでSnapmartのブログサーバーではLet's Encrypt という証明書を無料で発行しているサービスを使っていました。しかし、このLe…

山梨県は、ほったらかし温泉に行ってきました

静岡県はサウナの聖地 サウナしきじにレンタカーを借りて行ったのですが、せっかくなので、帰りは山梨を経由して帰ることにしました。 山梨は有名な温泉地が多数ありますが、中でもほったらかし温泉には以前から行きたいと思っていたので、このタイミングで…

静岡県はサウナの聖地「サウナ しきじ」に行ってきました

ピクスタの温泉番長を名乗っておきながら、サウナの聖地である「サウナ しきじ」に行ったことがないという、モグリでした。 と、いうのも「たかだかサウナでしょ?天然水使ってる銭湯でしょ?変わらないでしょ〜〜〜」と高を括っていたため、行けていません…

【React Native】Expo SDK v33.0.0 へのアップグレード手順

今年の1月にGoogleが「今後Androidアプリは64bit対応してないとダメだよ!8月1日以降32bitのアプリはリリースできないからね!」というアナウンスをしました。SnapmartアプリはReactNativeで実装しており、開発ツールとしてExpoを使っています。ExpoはSDKの…

神奈川県は湯河原温泉 元湯旅館 光陽館に行ってきました

現在ピクスタ株式会社とスナップマート株式会社の両方に携わっているのですが、6/21(金)~22(土)にスナップマートの合宿が湯河原で行われました。 湯河原は9年前に訪れた記憶があるのですが、その時は温泉にさして興味はなかったので、今回は本気で臨むことに…