サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
tech.itandi.co.jp
はじめに はじめましてイタンジ株式会社の藤井と申します、更新退去くんという管理会社向けのSaaSを開発しています。 先日開催されたトレジャーデータさま主催のテックトーク非常に楽しく拝見させていただきました。CDPというアプリケーションがどのように構築されているのか、非常に興味深かったです。 speakerdeck.com 上記セッションの場でdigdagでerbやhttp_callオペレーターを用いた動的ワークフローを扱う手法の紹介がありましたが、私も過去Rubyのlanguage APIを用いた別の手段で動的ワークフローを利用したことがあるので、この場を借りて紹介させていただきます。 digdag × Rubyによる動的ワークフロー まずdigdagとRubyの接着面のコードを読んでみましょう、#add_subtask というメソッドに着目してみてください。 digdag/runner.
イタンジ株式会社で物件連動基盤の開発をしている山﨑です。 弊社の多くのエンジニアがMac上のコンテナで開発をしており、そのためのツールとしてDocker Desktopを利用してます。今まではとりあえずでDocker Desktopを利用していましたが、特にこだわりもないのでRancher Desktopに移行してみることにしました。なお、私が利用しているPCがIntelチップなのでM1/M2チップの環境で再現できるかは未検証になります。 手順 Docker Desctopを念の為に終了しておく Rancher Desktopをインストール rancherdesktop.io Apple Siliconも選択できます 設定しているエイリアスそのままで使いたいのでdockerdを選択 権限周りやPATHの設定について選択して完了 動作確認 以下のコマンドは特に問題なく動きました! docke
イタンジ株式会社 野澤です。 普段Railsを使って開発をしています。 この記事では、Railsで扱っているカラムを削除する方法について紹介します。 なぜ書くか ・Railsからカラムを削除する機会があったため ・カラムを削除することがそうそうあるものではなく、いざやろうと思った時にどういう手順で何に注意してやれば良いか思い出せない やり方 1. 削除予定のカラムをRailsから参照しないようにする 2. カラムを削除 3. ignore_colmunsの記述を削除する ※ 各手順ごとにリリース 1. 削除対象のカラムをRailsから参照しないようにする 削除予定のカラムの記述をソースコードから全て削除します。 加えて削除対象のカラムをignored_columnsに指定します。 class Hoge < ApplicationRecord self.ignored_columns = %
どうも、プログラマとして入社したのになぜか最近コードあまり書いてないぽんこつです。ここ数ヶ月で既存プロジェクトを頑張ってdocker化してECSにデプロイしたのでまとめます。 ただ社内でもあまりノウハウが蓄積されているわけではなく、試行錯誤の連続で、一旦公開することにしましたが、今後も随時変更されていくと思いますし、是非「弊社はこうしたぜ〜」とかあれば参考にしたいので、教えていただけると幸いです。 設計 今回Docker化したプロジェクトは、unicornとsidekiqを使ったサービスで、静的ファイルはnginxが管理しているようなサービスです。一般的なよくあるRailsの構成だとおもいます。 これをdocker化してECSのサービスとして載せるにあたり、ECSのサービスとしてはweb-appとsidekiqの2つ、web-appは内部でnginxとunicornのコンテナをそれぞれ持つ
はじめに イタンジのエンジニアリングマネージャーの田渕です。 イタンジで採用を検討しているDebeziumという技術では、(使い方によっては)MySQLのSystem Databaseの一つであるmysql.hostテーブルというテーブルにアクセスする必要があります。 先日、その検証をAmazon Aurora MySQLのとあるインスタンス上で行っていたところ、そのインスタンスのmysql.hostテーブルが破損していることが判明しました。 いろいろ試しましたが、自力では復旧することが不可能であり、最終的にはサポートの方に直していただきました。 めったに無いことかとは思いますが、同様の現象に陥った方の助けになればと思い、詳細を書いていきます。 現象 SHOW TABLESをした結果には、mysql.hostテーブルが存在しますが、SHOW CREATE TABLEをすると、テーブルが見つ
はじめに イタンジのエンジニアリングマネージャの田渕です。 昨年末にリリースされたRuby3では、静的型検査の機能が追加されました。 早速、実際の新規Railsプロダクトの開発に活用してみたところ、多くの利点を感じました。 現場で使われている例はまだ多くないと思うので、実際の設定ファイル等と知見を共有します! 言語・ライブラリのバージョン等 ruby 3.0.1 rails 6.1.3.1 rbs 1.1.1 steep 0.43.1 yard 0.9.26 sord 3.0.1 gem_rbs_collection 3c17afb4b536757d04b33f8715072a5f5cfb0f53(バージョンがないのでコミットハッシュを書いています) 方針 もともと型検査とは関係なく、yardを用いて型を含めてドキュメントを書くようにしていました。 そこで注釈した型を最大限活かせるように、
はじめに イタンジSREチームの田渕です! イタンジではクラウド管理のIaCツールとしてterraformを使っています。 terraformとクラウドの状態の差分を定期的に監視する仕組みを作ったところ、うまくワークし、かなり運用負荷が下がったため、皆様にも紹介します! 導入の背景 terraformを理想的に運用できていれば、常にtfstateの状態とクラウドの状態が一致しているはずですが、現実はいくつかの理由で差分ができてしまうことがあります。 代表的なものは以下の3つでしょうか。 applyする際に不適切な書き方をした場合に、applyは想定通りに成功するがplanをした際に差分が出てしまう。 awsやterraform provider等の仕様変更により、今までは差分がなかった部分で差分が出てしまう。 稀に何らかの事情で手作業を行ってしまい、terraformへの反映も漏れてしまい
はじめに OHEYAGOの開発をしている田渕です! OHEYAGOはtoCサイトなので、UI・UXを重要視しており、チームとしてデザイナーを2人抱えております。 デザイナーは他業務との兼任ですが、それに対してエンジニアは3人なので、デザイナーの割合がとても多いチームです。 エンジニアとデザイナーで共通認識を持ち、開発効率を向上させるために、デザインシステムとしてAtomic Designを採用していました。 しかし、運用がうまく行かず、ある問題が露わになってきたため、Atomic Designをやめようとしている最中です。 そこで、上手く行かなかった知見の共有として、どういった問題が出てきて、どのようなデザインシステムに舵を切ろうとしているのかを紹介します! 最初にAtomic Designを採用した理由 当時のチームには、Reactでの開発経験が多い人がおらず、コンポーネント設計も手探り
はじめに あけましておめでとうございます! OHEYAGOの開発の田渕です。 OHEYAGOではTypeScriptを導入し、少しでもバグが発生しにくい状態を心がけています。 しかし、リリース直後(昨年9月末)にはTypeScriptの良さを活かしきれていない状態でした。具体的には、 型を明示していない箇所が多かった any型が横行していた という状態でした。 そこで、リリース後に追加開発をこなしながら、コツコツTypeScriptの型システムの恩恵を受けやすいようリファクタリングを進めたので、その記録を書き留めておきます。 実際にTypeScriptを使っているけれどあまり秩序が保てていない、という方や、これからTypeScriptのプロジェクトを始めるけれど、eslintの設定をどうしようと思っている方などの参考になれば嬉しいです。 方針 typescript-eslintを活用して、
はじめに OHEYAGOの開発をしている田渕です! Railsのテンプレートエンジンには、デフォルトのerbや、代替のslimやhamlなどがあります。 OHEYAGOではslimを採用していましたが、先日、テンプレートエンジンをslimからデフォルトのerbに変更しました。 細かい理由は後述しますが、OHEYAGOチーム内ではslimが技術的負債になっているという結論が出たからです。 また、自分が以前開発していた別のシステムでも、テンプレートエンジンをhamlからerbに変更したことがあります。 こちらも同様にhamlを負債だと考えたからです。 slimやhamlで開発しにくいという話はたまに聞きますが、実際にslimやhamlを削除するという話はネット上の記事でも殆ど見たことがないため、修正した方法を紹介します! 技術選定の理由 slimやhamlのメリットとデメリットを考えます。まず
はじめに イタンジの福崎です。 弊社で運用しているサービスで現在年間約1000万通ほどのメッセージを送受信しています。 チャットなども含みますがメールが大半を占めており、メール送受信周りでは障害含め色々ありました。 今回はメール送受信系に限って運用で得た失敗や経験を元に、気をつけることを自分用のメモも兼ねて残します。 前提 aws sesを利用 メールループ ①メール送る→②自動で返信が来る→③受信する→④自動で返信する→②に戻る 初歩的ですがやってしまうと大きな障害になる可能性があります。 メッセージをDBに保存したりしていると、処理能力によっては一瞬でdisk fullになり最悪の場合サービスを停止することになります。 一回処理が外に出ることもあり、ソースコードレベルではループにならないので見落としがちですが、レビューワー含め以下の点に問題がないことを確認する必要があります。 メールの
こんにちは、イタンジの福崎です。 Docker for Macですがプロジェクトが大きくなるのに比例して重くなっていき、我慢できなくなりました。 docker syncを試したりもしたんですが安定しないので、もうMacからLinuxに変更しようかと思ったりもしましたがVagrant使うことで解決しました。 以下はその内容の共有です。 やりたいこと MacにVagrant入れる MacとVagrant間でフォルダを共有 コーディングは今まで通りMacで行い、Dockerの実行はVagrantで行う 環境構築手順 Virtual Boxのインストール Downloads – Oracle VM VirtualBox Vagrantのインストール Download - Vagrant by HashiCorp 適当なところにvagrantフォルダを作成してinit $ mkdir vagrant
こんにちは福崎です! S3にバックアップ的にロストしたくない情報を保存しており、障害発生時とかたまに検索するんですが、aws console上ではprefixでしか絞れないので、最終更新日で絞ったりソートするのどうやるんだってメモ。 日付で絞る LastModifiedの範囲を指定。 aws s3api list-objects --bucket my_bucket --prefix my_prefix --query 'Contents[?LastModified >= `2019-01-07` && LastModified <= `2019-01-08`]' 日時で絞る UTCでの絞り込みになるので注意。 aws s3api list-objects --bucket my_bucket --prefix my_prefix --query 'Contents[?LastModifi
前2つの記事がアクセスをいっぱい稼いだせいでハードルが上がり、震えながら執筆している名ばかり編集長の永嶋です、どうもこんにちは。 今回は、先日こちらのイベントでLT登壇してきたので、そのレポートを書こうと思います。 findy.connpass.com Engineer Next Labは、 エンジニアがサービス開発を超えた新しい可能性を広げるために開催するエンジニア向けのイベントです。 ということでエンジニア転職のFindyさんが運営されています。 今回は「CTOが予測する次に来る業界とは!?」というタイトルで、ラクスルさんのオフィスにて開催されました。 ラクスルさんのオフィス、オシャレすぎて羨ましい。 パネルディスカッション パネルディスカッションは、ラクスル CTO泉さん、Ubie 共同代表取締役久保さん、元イタンジCTO 横澤さんという3名での対談。 印刷・物流、医療、不動産、それ
はじめまして、1発目の記事を書くことになりました永嶋です。 11月1日の入社早々、テックブログやりましょう!と言ったら、じゃあ編集長よろしくという流れで編集長をやることになりました。 そんな流れで開設したテックブログですが、GA technologiesのプロダクトチームのこと、社内で使っている技術、イベントレポートなどテックに関わるあれやこれやを発信する場にしていけたらなあと思っています。よろしくお願いします! さて、初回ということで特段これといってネタがないので「Tech Blogスタート記念社内LT会」 を開催してそれを記事にすることにしました。ネタがないなら作りにいくスタイルですね。 今回はいつも営業チームが使っているセミナールームを貸してもらって開催しました。突然の開催にも関わらず40人以上の社員が参加してくれました。みんな優しい。 LT会というとお酒を飲みながらのイメージですが
今回は弊社のAIチャットについて説明します。機械学習と自然言語処理を知ってる人向けに書いていますが、コードは使わずに全体の流れをざっくりとお話しします。 弊社サービスのノマドではユーザーとのやり取りを主にチャットを使って行います。ユーザーはお部屋に関する質問から契約の手続きに至るまで、様々な用途でチャットを利用されます。中には簡単に答えられる質問があるので、それを人間が毎回答えるのは煩わしいですよね。そこで一部の質問を人口知能(AI)を使って自動で返信しています。
こんにちは、エンジニアのケントです。 2017年のフロントエンドの開発において、Webpackが大人気です。 イタンジのプロダクトはRailsで開発することが多いのですが、WebpackをRailsに導入することを考える場合、大きく分けて二つの選択肢が考えられます。 rubygemのWebpackerを使う WebpackとRailsを独立して使う 直近で二つのイタンジのRailsプロダクトにWebpackを組み込むお仕事をし、上記の両方を試してみたので、それぞれの導入方法と雑感、pros and consをまとめてみようと思います。 rubygem webpackerを使う 導入方法 webpackerは、Rails5.1から標準で導入されるwebpackのラッパーです。 導入方法は webpackerのreadmeにだいたい載ってる ので、詳細はそちらにお任せしますが、結論だけ説明す
こんにちは、エンジニアの建三です。 Deep Learningのライブラリと言えばTensorflowが有名ですよね。1年半前にリリースされて以来、一瞬にして知名度を手にしました。僕はその頃Deep Learningを勉強していたので、Hacker NewsでTensorflowがバズってるのを見て何となく僕も興奮していたのを覚えています。しかし早速使ってみようと思いチュートリアルを進めたものの、LSTMやCNNの作り方が分からず断念しました。 僕は Stanfordのコース でDeep Learningを勉強したんですが(無料でクオリティ超高いです)インストラクターのAndrej KarpathyはTensorflowよりもTorchを勧めていました。ホームワークはnumpyを使うんですが、アーキテクチャが正にTorchのPython版という感じで、すごくしっくりくるんですよね。それまで
こんにちは、エンジニアの建三です。 クローラーを作る際に必要なものは大きく分けて3つあります。 1. URLを取得するスパイダー – 不動産の例で言うと、サイトに掲載されている全物件の詳細ページのURLを取得するスパイダーが必要です。 2. XPath(あるいはCSS Selector)の特定 – 物件名や家賃などの物件情報を取得する為のXPathが必要です。 3. テキストの整形 – XPathで得られるのはあるDOMのテキストなので、更にそのテキストから求めてる情報を取得する必要があります。 これ以外の機能(定期的にクローリングする、エラーの対処など)は、サイトに関わらず共通するものですので、サイト毎に必要なのは上記の3つになります。 アプローチ 汎用的なクローラーには主に2つのアプローチがあります。 GUIでXpathを特定する方法 1つ目は Portia のように、GUIで取得した
これは 日本情報クリエイト Engineers Advent Calendar 2016 の24日目の記事です。 元日本情報クリエイトのエンジニアなのでOB枠として参加させてもらいます! 日本情報クリエイトは宮崎で不動産系の自社プロダクトを開発し、日本全国に販売している会社です。 九州にUターンを考えている方、九州の南のほうにお住まいのエンジニアの方、転職先としておすすめです。 はじめに 皆さんクローラー作ってますか? 以前 こちら にも書きましたがscrapy + scrapy cloudを使うと簡単に安定稼働するクローラーを構築できます。 今日はscrapy cloudを提供しているscraping hubが展開しているもう一つのサービスcrawleraをご紹介します crawleraとは 英語ですがここのページに記載されています。 https://crawlera.com/
こんにちは、エンジニアの建三です。 Reactと一緒に使うRouterと言えばReact Routerですよね。しかし僕のReact+ReduxアプリにReact Routerを導入してみると、どうも思うようにいきませんでした。 Reduxは”Single Source of Truth”をモットーにしており、Reduxのstoreがアプリのstateを全て管理しています。しかしReact Routerを使うと、React Routerがrouteを管理しReduxがそれ以外を管理するというぎこちない感じになります。 React Routerの代わりを探す旅に出た そんなぎこちなさをGoogleにぶつけてみると、同じような考えを持ってる人が沢山いました。 React Router v4が出た時のHacker News ではReact Routerの批判のコメントが多く見られ、代替案が多数提
こんにちは、エンジニアの建三です。今までは機械学習に関する記事ばかり書いていましたが、実はフロントエンドも大好きです。 僕がWeb開発を始めた3年前はJS Framework全盛期だったので、JQueryをすっとばしてAngularから入りました。その後数々のLibraryやFramework(Ember, Backbone, Meteor, etc…)を試したのですが、どれも常に何かしらの不満を抱えていました。 2年前からReactの話を聞き始め、ちょくちょく触ってはいたのですが、どうもよく理解出来ず毛嫌いしていたんですね。 しかし最近個人プロジェクトを始めたのを機に、初めて本気でReactを勉強しました。そしたらなんと!やっと理解出来ました! Reactは理解出来ると面白いです。 正しい学び方をすればReactは理解出来ます。なので今回はReact歴3ヶ月の僕なりにReactを学ぶ
横澤です、平素よりお世話になっております。 昨今は機械学習とか人工知能というワードがバズっている影響もあり、ビッグデータとかDWH(データウェアハウス)というワードも関連して話題に上がりますね。 ビッグデータと一口にいってもその形態やフェーズは様々で、いきなり機械学習アルゴリズムを使って分析出来る綺麗なデータもあれば、フランケンシュタインの如く継ぎ接ぎをして何とか使えるレベルのデータになるかな・・というとっちらかったデータまで様々です。そして大体の場合はビッグデータと言っても後者の場合が多く、本日はそういうお話です。(機械学習とか分析の話は出てきません) イタンジではtoC向けサービスの ノマド や VALUE を始め、toB向けにも ぶっかくん や ノマドクラウド と様々なサービスを展開しております。そして、開発効率を高めるために基本的にはサービス間を疎結合にするべくデータベースも分断
横澤です、いつもお世話になっております。 皆様ダッシュボード使ってますか?車の助手席にある引き出しではなく、サービスのKPI等を良い感じのグラフにした方のダッシュボードです。 こういう感じのヤツですね。 画像出典 イタンジのダッシュボードは色々と試行錯誤しながらお手製で作っていたのですが、サービスを運営していると場面やフェーズによって見たい数字は頻繁に変わりますし、インテグレーションすべき数字は増え続けますし、レポーティング作業そのものはダイレクトに価値を産む業務ではないし・・・という事でダッシュボードツールの導入を検討しました。 社内の非エンジニアメンバーに簡単なSQLを教えて、後は手元のエクセルなりで頑張ってもらう作戦も試していたのですが・・・少ないメンバーで1サービスの場面ならば現実的に機能するのですが、ちょっと規模が大きくなってくると結構キツくなってしまいました。 ボヤキ的な内
不動産テック勉強会#2でLTしてきました 先日 不動産テック勉強会#2 でLTしてきました。 登壇者の皆様お疲れ様でした。 また参加者の皆様足を運んで頂いてありがとうございました。 折角なのでその際話した内容を少しリライトしてUPしておきたいと思います。 基本Qiitaのスライド用に書いた記事をそのままコピペしてるので少し読みづらいかもしれませんが 読めないことはないはず。。 クローラーは結構簡単に作れる 今年の春先にクローラー作ってたんですが思っていた以上に簡単に出来た 出来上がったものは弊社で今も運用されていて毎日数十万件のページをクローリングしている そのクローラーがどんな構成になっているのかと作る過程を発表したいと思います クローラー何に使うの イタンジは不動産系スタートアップ 不動産取引には物件データが不可欠 物件データ含め関係する大量のデータをWeb上から収集したい 出
こんにちは、エンジニアの建三です。僕は大学時代に人工知能に興味を持ち、卒業後も機械学習を勉強していました。ただイタンジに入って業務で機械学習を使ってみて思うのは、勉強でやる機械学習と実務でやる機械学習にギャップがあるなということです。 機械学習を普通どうやって勉強するかというと、まず機械学習の基礎を学び、その後色んなアルゴリズムを勉強します。その際、どのデータを使って何がゴールかというのは与えれていて、アルゴリズムの仕組みを勉強することに大半の時間を費やします。 しかし俗に言われるデータサイエンスの業務をやるとなると、他に必要なことがあります。僕の中でデータサイエンスの業務はざっくりと4ステップに分かれます。 問題定義 データの選択、収集 モデルの構築、学習 結果のアウトプット 機械学習を勉強する時は、大抵3と4だけをやることになります。しかし1と2が結構重要なので、それぞれについて触れた
こんにちは!エンジニアのナガシマです。 先日、お部屋探しBOTヘヤジイをリリースしたのですが。 お部屋探しBOTヘヤジイ|Facebookメッセンジャーのチャットで賃貸物件を探します。 「お部屋探しBOTヘヤジイ」は、条件をしゃべりかけるとお部屋を紹介してくれて見学の予約までできるチャットBotです。日経新聞でもちょろっと取り上げていただいたので、既に数百人の方にご利用いただいていて、見学予約もチラホラ入ってきています。ありがたや。 というわけで、Botをリリースして1週間運用して、感じたことや考えたことをまとめてました。 チャットインターフェースはありか チャットインターフェースはITツールを使うのが得意ではない人たちにとっては嬉しいインターフェースなのではないかと思います。 Bot、つまりユーザのテキスト入力に対して自動で何かを返信する、という概念自体は大昔からあるものですし、技術的に
こんにちは、エンジニアの高橋です。イタンジに入社して3週間ほど経ちますが、主に機械学習を業務で使っています。 弊社のネット不動産 ノマド では、様々な条件を入力することにより理想のお部屋を探すことが出来ます。その条件の一つが最寄り駅です。 でも、どの駅に住みたいかはっきり決まってる人はそういません。ユーザーが選択した駅だけでなく、その駅に似た駅の近くにあるお部屋も紹介出来れば、より選択肢が広まりますよね! では「似た駅」というのは一体どういうことでしょう?同じ路線上にある駅は当然似ていますが、それだったらユーザーが自分で選択すれば良いですよね。ユーザーが思ってもいなかったような駅をお勧めするにはどうしたら良いでしょうか? 使用するデータ 機械学習をする上で必要不可欠なものはデータですが、駅のレコメンデーションを作る上で僕が着目したデータはノマドの「見たいリスト」です。見たいリストはユーザー
こんにちは、エンジニア永嶋です。 先日、「 LINE BOT APIを使って翻訳BOTを作ってみたよ!! 」という記事でLINE BOTについて書きましたが今回はFacebookのBOT APIであるところのFacebook Messenger Platformを使って画像検索BOTを作ってみたのでまとめました! アプリの登録 Facebookのアプリ登録画面 にいってアプリを登録します。アプリが登録できたら左側のメニューの「Messenger」を開きます。 今回は個人で運営しているサイトの Service Safari のページに組み込みました。 Webhookの設定 メッセージが来たときにキックされるエンドポイントを設定します。 「Subscription Fields」はとりあえず「messages」だけで大丈夫です。設定を保存しようするとFB側から確認のためのメッセージが飛んできま
次のページ
このページを最初にブックマークしてみませんか?
『ITANDI Engineer Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く