Tatehitoの技術メモ

ソフトウェアエンジニアです。いろいろ書きます。

『アルセウス』まで登場する「ン」で終わるポケモンの数を数えてみた

2年以上前に「名前が「ン」で終わるポケモンの数」を数えるという記事を書きました。 blog.tatehitolog.com 当時(第7世代)の全ポケモンの種類は809種類だったのですが、第8世代や、先月発売された『Pokémon LEGENDS アルセウス』まで含めると905種類にまで…

【Expo + React Native】画像をアップロードせずにデバイス内に保存する方法

子供と一緒に遊べる『シルエットクイズ』アプリをつくっています。単純に画像を切り替えるだけのアプリですが、画像をサーバーにアップロードすることなく登録したく、その方法について調査した結果をメモしておきます。 expo version "42.0.3" react-native…

【React Native】React Navigation で戻ったときに何らかの処理を実行したい

例えば 一覧画面を表示する 一覧画面から登録画面へ遷移する 登録後一覧画面に戻る とするとき、最後に一覧画面を表示したときに登録したデータを表示させたい。 何もしないと登録したデータは表示されない。 これでできた expo version "42.0.3" react-nati…

Rails7 + React + Tailwindの環境をつくる手順

Rails7からNode.jsが要らなくなるとかそういう話はまだ理解できていないのだけど、とりあえずRails7を使いたくて Rails7 + React + Tailwind の環境を作ってみたので手順をメモしとく。手順といってもDHHの動画の通りにやってみただけ。 youtu.be tailwindと…

【Capistrano】ローカルで precompile するようにしたら assets_roles がデフォルト設定されなくなった

デプロイ負荷軽減のため、ローカルで assets:precompile するように capistrano の設定を変更したら今まで動いていたデプロイタスクが動かなくなった。 動かなくなったタスクはこうなっている。 task :hoge do on roles(fetch(:assets_roles)) do ... end en…

【Rails】gem geocoderを使って郵便番号から市区町村を取得する

環境など Rails 6.1.3 Ruby 2.7.2 geocoder 1.6.7 郵便番号から市区町村を取得する gem geocoderを使うと、郵便番号から住所や経度緯度などを取得することができる。Geocoder.searchは配列を返すので、firstでGeocoder::Result::Googleのインスタンスを取得…

左右のshiftキーで入力切替するようにした

HHKBの英字配列を使っていて、karabina-elementsで⌘キーで日本語・英語入力の切り替えを行なっていた。 英字キーボードを使う場合、おそらく⌘キーによる入力切り替えが最もポピュラーなやり方で、実際ホームポジションを崩すことなく親指で入力切り替えがで…

MacBookPro 2017 を初期化した

動作が重たすぎる chromeでタブ一個開くだけでCPU90%とかいったりする バッテリーが持たなすぎる ストレージに余裕がなさすぎる ということで初期化することにした。結果何の問題もなく初期化できたけど、一応メモとして残しとく。初期化後はブラウジング専…

【Rails】simple_formでモデルに存在しないフィールドを扱う方法

modelにattr_accessorを定義することで、モデルにフィールドとして存在しなくてもsimple_formで扱えるようになります。 Model # 'hoge'はmodelにフィールドとして存在しない attr_accessor :hoge View Viewはこちら。チェックボックスを定義する例です。 <%=…

こうしてクソコードが生まれていく

いま参画している新規開発プロジェクトのシステムには、ユーザーのロール別にパスワード変更画面が存在する。 画面は複数あるけど処理は同じ。パスワードポリシーも同じ。でも画面ごとにパスワードポリシーのチェック処理が実装されていて、これは冗長でマズ…

【Ruby】配列の奇数番目と偶数番目の要素を分ける方法

ary = ["A", "B", "C", "D", "E"] ary.each_slice(2).map { |a, b| [a, b] }.transpose # => [ [ "A", "C", "E" ], [ "B", "D", nil ] ] each_sliceとtransposeを使って、奇数番目の要素と偶数番目の要素を分ける。 ary.each_slice(2).map.to_a.transpose 本…

O/Rマッパーの採用・不採用で意見が割れている

リードエンジニアの方と別のメンバーの間でO/Rマッパーを採用するか否かで意見が割れている。正確にいうと、議論しているわけではなく各々のやり方で進めちゃってる感じ。 別のメンバーの方が採用しているO/Rマッパーは、ツールを導入しておらず独自にそれ専…

仕事と趣味の境界

世の中には「仕事と趣味を明確に分ける人」と、「趣味のように仕事をする人」がいる。僕はどちらに属するのかハッキリさせたくてちょっと考えてみたのだけど、僕はどちらにも属さないのかもしれない。 前提として、仕事は生活費や趣味のお金を稼ぐためにやる…

在宅 vs 出勤

いま携わっているプロジェクトには4月から参画しているのだけど、コロナの影響で早々にリモートワークに切り替わった。 僕は仕事スイッチの切り替えが上手くない。なのでリモートワークは向いていないと思っていたのだけど、思ったより集中できた。運動不足…

【Rails】チームメンバー管理システムをつくった

実務でゼロからDB設計をしたことがないので、「DB設計筋」をつけるためのトレーニングをしている。具体的に言うと、映画館の発券システムやラーメン屋の注文システムなど、世の中の業務をネタにDB設計を行い、Railsで実装して正しく設計できているかを検証す…

【Rails】後から外部キー制約の付いたカラム(references)を追加する方法

最初にモデルを作成するタイミングで設定しておくのがベストだけど、そうもいかないときは後から設定しなくてはならないのでその手順をメモ。 検証環境 Rails 6.0.0 Ruby 2.6.3 1.マイグレーションファイルを作成する $ rails g migration [migrationファ…

デザインツールをはじめて使ってみた感想

ワイヤーフレームをつくらずに実装に着手すると、デザインを考えながらコーディングすることになるので効率が悪く、手戻りも起こりやすい。モチベーションも萎えてくる。 ・・・ということで、最近『Figma』というデザインツールを少々触っている。その所感…

【Rails】Rails new 〜 GitHubへpush 〜 Herokuデプロイまでの手順

Herokuデプロイまでの手順をメモ。 Rails new まずRails newする。 $ rails new rails-sample-project-management-tool _6.0.0_ --skip-test 上記だと以下になる。必要に応じて変更する。 アプリの名前:appname Railsバージョン 6.0.0 Minitestなし Heroku…

【Java】Apache CommonsのFTPClientでファイルの存在確認をする

FTPClientでファイルの存在確認をする方法のメモ。 /** * ファイルの存在確認 * @param srcDirName ディレクトリ名 * @param srcFileName ファイル名 * @return true: 存在する */ public boolean exists(String srcDirName, String srcFileName) { // ファ…

メモ・Todo管理アプリの採用理由とか使い分けとか

メモやTodoを管理するアプリとして『bear』『リマインダー』『Mac/iOS純正メモ』の3つを主に使っている。 これまで『Evernote』『Inkdrop』『Todoist』など、いくつか使ってきたんだけど今はこの3つに落ち着いてる。・・・が、この手のアプリは魅力的なアプ…

【Rails】『omniauth-twitter』でログイン機能を実装する手順

いちいち思い出すのが面倒なので手順を記録しておく。なお『devise』と連携して実装する場合はこの通りでは無い。 確認環境 Rails 6.0.0 Ruby 2.6.3 omniauth 1.9.0 omniauth-twitter 1.4.0 1.TwitterAPIの登録 developer.twitter.com CallBack_URLの設定…

JavaScript実行環境『Node.js』について調べてみた

使ったことのない技術について調べてみたシリーズ、今回は『Node.js』について。 Node.jsとは? 一般的にJavaScriptというのはWebブラウザ上(フロントエンド)で動作する言語である。 フロントの実装をする上ではなくてはならない存在なわけだけど、「JavaS…

僕が思う『タスクシュート時間術』が特に威力を発揮する使い方と、その反対

taskchute.cloud 今月から『タスクシュートクラウド』をまた使い始めた。 『タスクシュート時間術』自体の活用歴は、かれこれ3年以上になり、どんな使い方をすれば威力を発揮するのか、反対にタスクシュートで解決できない問題は何か、体感として分かってき…

『ゲームソフト管理サービス』の開発振り返り。開発期間を短縮するにはどうしたら良かったか

2019年の振り返り記事でも少し紹介した、遊んだゲームを記録できる『ゲームソフト管理サービス』というアプリケーションを、細々とつくっていました(正式サービスとして公開する予定は今のところありません)。 このアプリの規模は画面数が4、テーブル数が2…

2019年を振り返る

あけましておめでとうございます。簡単ですが2019年を振り返ってみたいと思います。 本業 フリーランスになって2年目の年でした。まるまる1年フリーランスとして働いたはじめての年でもあります。2018年から参画していたプロジェクトで引き続きお手伝いさせ…

仮想化OSS『Docker』について調べてみた

知らない技術やキーワードと出会ったら、概要だけでも調べておくべきである。 ......と技術者として至極当たり前のことをふと思ったので、箇条書きレベルですが、調べた内容をブログに残しておきます。 今回の調査対象は『Docker』です。 Dockerとは? 『Doc…

【Rails】開発環境をSQLite、本番環境をPostgreSQLで構築すると後々面倒なことになるかも?

RailsのデフォルトDBはSQLiteです。一方、アプリケーションを簡単にデプロイできることで人気のPaaSであるHerokuのデフォルトDBはPostgreSQLです。 Railsでは環境ごとに異なるDBを利用している場合でも、基本的に問題なく動作します。かの有名なRailsチュー…

【Rails】migrationファイルの生成・記述方法のまとめ

Railsにおけるmigrationを使ったテーブル定義の変更方法は、Qiitaを筆頭に、ちょっとググればすぐ出てきます。大変ありがたいのですが、一向にmigrationファイルの書き方を覚えられないし、毎回ググるのも面倒になってきたので、「自分のブログを見れば全部…

「Rails6でSemanticUIのJavaScriptを読み込む方法(ドロップダウン・アコーディオン等を使いたい!)」という記事をQiitaに投稿しました

Semantic UIはシンプルで洗練されたデザインが魅力的なCSSフレームワークです。以前はBootstrapを利用していましたが、個人的にデザインが好みなのと、部品の種類が多いので、いま開発しているアプリではSemantic UIを利用しています。 さて、Railsではseman…

感想『Ruby on Rails5 アプリケーションプログラミング』

Railsアプリを個人開発するにあたり、脇に置いておいてサッと参照できるリファレンス本があったらいいなあ、と思い『Ruby on Rails5 アプリケーションプログラミング』を購入しました。 Ruby on Rails 5アプリケーションプログラミング作者:山田 祥寛技術評…