Tatehitoの日記

いろいろ書きます。Webエンジニアをしています。

技術

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

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のインスタンスを取得…

【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マッパーは、ツールを導入しておらず独自にそれ専…

【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) { // ファ…

【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…

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

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

仮想化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アプリケーションプログラミング作者:山田 祥寛技術評…

感想『オブジェクト指向設計実践ガイド』

既存コードを修正するのと、ゼロからコードを組み上げるのは難易度が全然違います。既存コードの修正は、既存のアーキテクチャに則ってコーディングするのが基本です。つまり「既存コードを真似して書く」ことができます。 一方、ゼロから組むとなると、自分…

【Rails】エラー画面が見やすくなるgem『better_errors』を試す

Railsのエラー画面をリッチにするgem『better_errors』を使ってみたので、導入方法を紹介します。 こんな感じでリッチになる。 使用バージョン Ruby 2.6.3 Rails 6.0.0 better_errors 2.5.1(現行の最新版) binding_of_caller 0.8.0(現行の最新版) インス…

【Rails】簡単に認証機能がつくれるgem『devise』を試す

はじめに つぎにつくる予定のWebアプリでは、認証(ログイン)機能を実装しようと思っています。そこで認証機能を実装するためのgemで有名な『devise』の最低限の動作確認をしてみました。 環境は以下の通りです Ruby 2.6.3 Rails 6.0.0 devise 4.7.1 (現時…

感想『なぜオブジェクト指向でつくるのか 第2版』

オブジェクト指向でなぜつくるのか 第2版作者:平澤 章日経BPAmazon どんな本か 初版2004年のオブジェクト指向の定番本 オブジェクト指向そのものについては、三大要素の紹介程度で、活用方法は深く掘り下げられていない そのかわり、オブジェクト指向が生ま…

【JavaScript】選択値を維持したままセレクトボックスを複製する方法

知っていればなんて事ないですが、知らないと躓くポイントになるのでメモしておきます。 cloneNodeでHTML要素(ノード)を複製できます。ですが、複製対象をセレクトボックスとした場合、考えなしに複製すると、セレクトボックスの選択値がリセットされて複…

感想『Webを支える技術』

以前、『イラスト図解式 この一冊で全部わかるWeb技術の基本』という、WEB技術に関するトピックを幅広く取り上げた、図解本を読みました。見開き1ページに解説と図解がセットになっていて頭に入りやすく、Web技術についてザックリと把握したい、という目的を…

名前が「ン」で終わるポケモンの数をRuby2.7の新機能「Enumerable#tally」を使って数えてみた

追記:最新作『アルセウス』までのポケモンで数え直してみました blog.tatehitolog.com 追記ここまで はじめに 開発・公開中の『ポケモンしりとり』は、ポケモンの名前を使ったしりとりです。ルールは通常のしりとりと同じなので、名前の語尾が「ン」で終わ…

感想『はじめて学ぶソフトウェアのテスト技法』

ソフトウェアのテストは事前に作成したテストケースに従って実施(またはテストコードを記述)するのが一般的です。(*1)つまり、「良いテスト(=ソフトウェアの品質向上に貢献するテスト)」が実施できるかはテストケースの品質に依存してきます。 これま…