go の検索結果:
…す。FlutterはGoogleが開発しているクロスプラットフォーム向けのフレームワークで、近年ではAndroid, iOSアプリが1つのソースコードで素早く簡単に作れる点等が評価されて広く使われるようになってきました。 ご存知の通りマテリアルデザインもGoogleが開発していて、Flutterはそれよりも後に開発されているため、基本設計がマテリアルデザインの思想で作られており、デザイン思想を合わせると開発スピードが大幅に向上します。そのため、後から思想を合わせているAndr…
…とがあります。実際にGoogleで検索すると正規表現を使ったマークダウンパーサの実装が結構な数出てきます。しかし、マークダウンは思ったよりも複雑なのです。以下に例を示します。 3.1 複数行に渡る要素、要素のネスト |col1|col2|col3| |:-|:-:|-:| |**bold**|[link with ~~si~~](https://example.com)|__italic**bold**__| |left|center|right| 上のマークダウンはテーブル…
エムスリーエンジニアリンググループ AI・機械学習チームでソフトウェアエンジニアをしている中村(@po3rin) です。最近、AI・機械学習チーム配下の検索基盤チームでElasticsearchのAnalyzerをKuromojiからSudachiに移行しました。今回はSudachi移行の背景と、Sudachiの概要、実際に移行するにあたってのプロセスや注意事項をお話しします。
…これらの詳しい解説やGoによる簡易的な実装を試したブログを公開しているのでもしよろしければご覧ください。 po3rin.com Luceneの事前知識 LuceneのIndex処理の全体像は下図になります。 LuceneのIndex処理の全体像 まずはメモリ上で転置インデックスを構築し、定期的、もしくはRAM使用量が閾値を超えるとセグメント化と呼ばれる永続化処理が走ります。今回はMemory Bufferでの転置インデックス構造を追っていきます。 LuceneではIndexW…
…り、秘密情報の保存はGoogle Cloud Storage(GCS)またはSecret Manager storageを使用しています。 鍵の作成には以下のコマンドで作成できます。 // Secret Manager storage berglas create sm://${PROJECT_ID}/foo my-secret-data // gcs berglas create ${BUCKET_NAME}/foo my-secret-data また、以下のコマンドでアク…
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。 Overview 最近、社内で情報検索論文輪読会を立ち上げました。 情報検索論文読み会のスケジュール そこでNGT-ONNGについての論文*1を紹介したところ1時間の予定のところを盛り上がりすぎて2時間超えてしまいました。 大盛り上がりのついでに、今回は情報検索論文輪読会で紹介した近似最近傍探索ライブラリNGTを内部で利用するValdを使って、類似文書検索がどのように出来るのか、現状の問題を解決できるのかを試し…
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。 Overview 医師に質問ができるサービスであるAskDoctorsではユーザーが質問を検索できる機能があり、今回は検索改善タスクのために検索ログデータ分析基盤を構築したお話をします。これにより改善サイクルを回せるようになったり、検索ログを使った各種アルゴリズムが利用可能になりました。 データ基盤構築では他チームとの連携が必要不可欠であり、コミュニケーションで工夫した点などもお話できればと思います。 Over…
…つもググっちゃうのでGoogle検索からの流入が多く、長期に渡ってPVを稼げます。 しかもいつもググっちゃうので、そのたびに「またこのエムスリーの記事だ」と思ってもらえるので 広報効果も高いと思います。 ぼくがかんがえたさいきょうのやり方 変化が激しいため、何がベストプラクティスか、が常に変わってしまう、 一定に決まらないような話題に対して、現時点でこれがベストと考える例をまとめて提示する記事です。 「自分で考えるベスト」という点においてマサカリが飛んでくる恐さもありますが、…
…uirement: go version >= 1.16.0, Redash version >= 7.0.0 go install github.com/snowhork/rdiam@latest rdiam add 対象のUserを対象のGroupに追加することができます。複数のUserを複数のGroupに1コマンドで追加できます。これにより、上で述べた(1)の問題を解決します。 # example usage rdiam add -u user1@email.com,u…
…Sのうちの1つであるgokartのversion 1.0.0をリリースする運びとなりました。 本記事は、これまでのgokartの軌跡と成果を紹介しつつ、内情を含めながら、gokart 1.0.0に込めた想いを綴るものです。 はじめに gokartとは gokart 1.0.0 ドキュメントの拡充とロゴの追加 gokart.build gokartメジャーバージョンリリースに寄せて おわりに gokartとは gokartは、元チームリーダーであった西場さん@m_nishiba…
…onal from google.cloud.container_v1 import ClusterManagerClient from google.cloud.container_v1.types.cluster_service import Cluster from google.oauth2.service_account import Credentials import kubernetes.client from kubernetes.client.models…
こんにちは、エムスリーエンジニアリングGの佐々木です。 BIRというチームでアンケートシステム周りの開発を担当しています。 BIRでは新規のアンケートシステムを作ったりする傍、昔から稼働しているオンプレ上のアンケートシステムのクラウド移行を進めています。 今日は、昔に作られたレガシーなアンケートシステムをオンプレからクラウド移行する際に少し工夫をしたことで安全にリリースできた話をしたいと思います。
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。 Overview 最近の仕事で医師に質問ができるサービスで「Elasticsearchを使ってなるべく低コストで関連キーワード機能を実装する」という案件に携わっていました。本記事では関連キーワード機能を低コストで実装するための技術調査の結果と、実際に採用した方法をご紹介します。 今回紹介する方法は機械学習などは使わず、なるべく低コストである程度の品質を目指すものです。この記事を読むことで検索アプリケーションにサ…
エムスリー エンジニアの岩本です。 4月から小学生1年生になる子供を育てています。 最近子供と図鑑を見ていました。そのとき目次をから目的のページが250ページにあるということがわかったようです。 しかし、一度開いた150ページあたりから250に向かうのではなく、100ページの方に戻っていってしまいました。 それを見て「あれ?もしかして数字の概念が全くわかってない?」と心配になってしまいました。 とはいえ、数字は1〜100まで数えられるし、一桁の足し算引き算は指などを使ってでき…
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。最近、ユーザーの検索体験の向上のために、以下の検索評価に関する本を読んでいました。 情報アクセス評価方法論作者:酒井 哲也発売日: 2015/05/19メディア: 単行本 そこで今回は検索評価指標の1つであるsDCG (session-based Discounted Cumulative Gain)を使ってエムスリーの検索ログから体験の悪かった検索を抽出してみたのでその方法を紹介します。 現状の検索監視 現状の…
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。 最近「医療言語処理」という本を読んで、医療用語の表記ゆれ吸収や意味構造検索などについて学びました。 医療言語処理 (自然言語処理シリーズ)作者:荒牧 英治発売日: 2017/08/01メディア: 単行本 そこで今回はElasticsearchと患者表現辞書を使った意味構造検索がどのくらい実戦投入できるかを簡単に試したので、概要と実装方法を簡単にご紹介します。 患者テキストの表記ゆれ 患者テキストの表記ゆれとは …
…います。 docs.google.com この雑談夕会*1は、過去テックブログでA/Bテスト効果検証の記事などを書いている金山さんがテーマを決めてそれについて話すという形式だったのですが、流石に違ったテーマを用意するの大変になりチームメンバーのコメントも定形化している時期がありました。 そういった実態もあって、このスプレッドシートは生み出されました。 スプレッドシート作成当時のSlackの様子 A列には誰でも追加可能なテーマの一覧、B列C列には、「1度やったかどうか」「(もし…
…タパイプライン構築にgokartというツールを使用しています。今回はこのgokartで発生していたキャッシュ競合を解消した話について紹介します。 gokart gokartとは gokartというのはAIチームが中心に開発しているデータパイプライン構築のためのツールで、Spotify社の開発するパイプラインツールluigiのwrapperです。S3やGCSといったクラウドストレージとのデータ入出力をサポートしたり、中間ファイルをキャッシュとして保存することで実験を再現をしやす…
…少しでもご興味あればぜひお気軽にご応募ください!! open.talentio.com open.talentio.com jobs.m3.com *1:https://www.m3tech.blog/entry/2021/01/12/113000 *2:https://www.m3tech.blog/entry/2018/how-sre-team-started *3:https://sre.google/sre-book/service-level-objectives/
…今回はその仕組みを Golang から TypeScript に移植*2して、さらに Public に公開したのでその紹介をしたいと思います。 github.com ググれば似たような事例は鬼のように出てくるんですけど、タイムゾーンが考慮されていなかったり、EC2 にしか対応していなかったりと、痒いところに手が届かない例が多かったため、自前で開発しました。 また、Cosmos-Monkey では最重要コンセプトとして「対応リソースを追加しやすく」ということを掲げていて*3、オ…
…Terraform Google ProviderのCloud Schedulerが毎回replaceされてしまう問題を解決した話をご紹介します。 Terraformロゴ Cloud Schedulerがreplaceされてしまう問題 Terrafromの構成 Cloud Schedulerの更新をサポートする まとめ We're hiring Cloud Schedulerがreplaceされてしまう問題 Cloud Schedulerは一言で言うとGCPが提供するcron…
…加したOSSである、Gokartを利用しています。 github.com Gokartでは、処理をTaskという単位に分け、Taskごとに、その処理結果をGCSなどのオブジェクトストレージに出力しています。 こうすることで、リカバリなどの際にワークフローの途中からジョブを再開できたり、debug時の調査などでタスクの出力を確認できるメリットがあります。 一方で、この記事 などで述べられているように、途中結果のデータが嵩張る問題が出てきています。 実際、Gokartキャッシュを…
…urce_name.go になっていて一目瞭然でした)。 https://github.com/hashicorp/terraform-provider-aws/blob/v2.70.0/aws/resource_aws_acm_certificate.go func resourceAwsAcmCertificate() *schema.Resource { return &schema.Resource{ Create: resourceAwsAcmCertificate…
…s://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables?hl=ja *2:https://cloud.google.com/bigquery/docs/managing-partitioned-tables?hl=ja#deleting_partitions_in_partitioned_tables *3:https://cloud.google.com/bigquery/quotas?hl=…
…た (同時に、念願のgoldメダル取得でKaggle Competitions Masterになりました e-mon | Kaggle )。 Private LBの結果 そこで今回は、参加記録をかねて、Code Competitionの取り組み方について紹介させていただきたいと思います。 本記事では主に、CodeComptitionとはなにか、どのように今回取り組んだのかについて紹介するため、 解法の詳細や、コード等は以下の記事をご覧ください。 4th Place Solut…
…ば、AWSなんとか、Googleなんとかといった技術に囲まれます。 一方で、SREというものは「サービスの最後までそれを見守る」という使命を課されており、採用技術が雑多になってくると、すべてを把握する必要が出てきてしまい、疲弊します。 ロン!クラウド無双! 麻雀でいうところの多種の牌を持ち手とすることを強いられたSREからは死者が出かねません。すべてのクラウドのすべての技術に詳しいわけではないのですから。 二種の潮流 既に書いたように「技術には二種類の潮流がある」のではないか…
…では多くのシステムをGoで実装しています。 業務で1年利用してだいぶ慣れてきましたが、 先日思わぬ時刻のオフセットの問題に引っかかったので紹介します。 最終的には言語関係ない問題だったので、もしかすると他の言語でも似たような問題があるのかもしれません。 IsZero()が正常に判定されない 0001-01-01T09:18:59 とは? なぜIsZero判定できなくなったか? この問題を回避するには 1. UTCで運用 2. Asia/Tokyoのオフセットを+09:00に固…
…Resources google_container_cluster google_container_node_pool Data Sources google_container_cluster google_container_engine_versions つまり、terraformからみるとGKEはあまりできることがないということがわかります。多くの部分をkubernetesネイティブなyamlで構築する必要があります。 API(k8sのyamlあり) さて、1つt…
…です。 好きな言語はGo。仕事では主に検索周りを担当しています。今回はGoでfuzzy-findingツールを作ったのでその方法と、Chromeブックマークのような無限ネストJSONを Visitor Pattern でスライスにパースする方法を紹介します。 fuzzy-findingとは bmfzf なぜAlfredじゃないのか fuzzy-finding 複数type無限ネストJSONのパース まとめ We're hiring !!! 参考 fuzzy-findingとは…
エムスリー エンジニアリングGの岩本です。 これは エムスリー Advent Calendar 2020 の21日目の記事です。 幼児向けのお勉強は子供にとって大変なことですが、親もなかなかに大変ですよね。 子供のやる気を削がないように、気を使いながら楽しく勉強することが必要です。 そして、同じ問題を解かせていると答えを覚えてしまうので、ちょっと問題を変える必要もあります。 算数のような問題であればかんたんに親が作れますが、図解が必要なものは作るのがなかなか難しい。 前回は迷…