エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

小本 の検索結果:

git submodule はトモダチ!怖くないよ! (チートシート付き)

…グG・基盤開発チーム小本です。 みなさん、git submodule コマンドは好きですか?git submodule は特定の状況下では便利なコマンドです。 社内アンケートでも25%が怖いという結果に しかし、なぜか世間にはgit submodule が怖いという人が相当数いるようです。推測ですが、git submodule は動作モデルや使用手順が誤解されがちなところがあり、それで「怖い」と思われているのないでしょうか。git 本体でも昔そんなことがありましたよね。 この…

pytest ヘビー🐍ユーザーへの第一歩

…グG・基盤開発チーム小本です。 pytest は Python のユニットテストのデファクトスタンダードです。エムスリーでも顧客向けレポートや機械学習でPython&pytest をヘビー🐍1に使っています。 ですが、実は pytest は、意外と入門のハードルが高い。と言うのも、pytest の公式ドキュメント が、fixtureのような新概念も登場する上、詳細で分量が多いからです(しかも英語)。初心者にいきなり読ませると挫折する可能性大です 2。 そこで、とりあえず使い始…

とりあえず使えそうな SQLAlchemy 入門(※ ORM機能は使いません)

…グG・基盤開発チーム小本です。 SQLAlchemyはPythonのSQLライブラリのデファクトスタンダードで、エムスリーでも使っていますが、意外と導入の障壁が高い。そこで、とりあえずSQLAlchemyを使い始めるのに必要な情報を調べました。 具体的には生の(文字列の)SELECT文を組み立て、クエリする方法を説明します。 なぜこの記事を書いたか SQLAlchemy の入門記事をググると、 SQLAlchemy は ORM です DBに接続しメタデータを取得します ベース…

Pythonのパッケージ周りのベストプラクティスを理解する

…スリー基盤開発チーム小本です。 Pythonのパッケージ管理周りでは、 「setup.pyでrequirements.txtを読み込むのが普通なんですよね?」 「pipenv があれば venv はオワコンなんですね?」 「pyenvは要らないんですよね!?」 「Pythonは歴史が古い分、Rubyなどに比べてカオス」 みたいな混乱をよく目にします。 実際、複数のツールがあって(一見)複雑です。また「なぜこうした状況にあるのか」がドキュメント化されているわけでもありません。 …

Sansan× M3 Tech Night ~レガシーシステムに立ち向かえ!~ を開催しました

…エムスリー株式会社 小本健司) 属人化し、手動で行なっていたためにトラブルが絶えなかったデプロイをいかに自動化し安全にしていったかというお話です。 印象に残っているのは、「最初に不格好でも手順書する」ということでしょうか。テキストのリリース手順書というのは一見泥臭く古めかしいものではありますが、 すぐできて効果も高いものです。一旦そういう最低限のことから始めて、少しずつデプロイの自動化を進めていくという、現実主義的なアプローチが共感持てました。 詳しくは以前このブログのこちら…

業務時間内にPythonのコントリビューターになった顛末

…グG・基盤開発チーム小本です。 年末ということで、個人的に今年のうれしかったことである「Pythonのコントリビューターになったこと」について書きます。 起きた不具合 社内のバッチ処理サーバーでPythonを使うべく作業中(Python標準のコマンドである)pip や virtualenv を使うと以下のようなエラー1 が起き、異常終了してしまいました。 51_billappxz%pip list DEPRECATION: The default format will sw…

この処理Pythonでどう書く?

…グG・基盤開発チーム小本です。 WEBサイトは RailsやSpringなどの「本体部分」だけでは完結しません。レポート作成・データ更新などの細かい処理も必要です。 過去にはこうした用途にはBashがよく使われました。しかし、Bashは落とし穴が多かったり、クラスなどの抽象化機能がなかったりして、規模が大きくなると辛くなります。 そこで、Bashの代替候補に挙がるのがPythonです。エムスリーでもかつてはBashを使っていましたが、現在は新規案件にはPythonを推奨してい…

デプロイの度に障害が起きるシステムを安全にした話

SRE

…ニアとして働いている小本です。 私は基盤開発チームという、エムスリーの複数のサービスにまたがって使われるシステムを開発・運用するチームに所属しています。 基盤開発チームが担当するシステムの1つに、会員向けメルマガの配信システム「メールコンシェルジュ」があります1。 エムスリーはメールコンシェルジュで1日数十万通のメルマガを配信しており、機械学習でメルマガを最適化する施策2などもメールコンシェルジュの存在が前提になっています。 このようにエムスリーにとって重要なシステムなのです…