u_tisのブックマーク (388)

  • Playwrightでライブプレビューツールを実装する - ベースマキナ エンジニアブログ

    こんにちは、yebis0942です。 先日、@basemachina/bm-view-previewというツールをnpmで公開しました。ベースマキナのビュー機能のソースコードをローカル環境で編集しながら、Next.jsのnpm run devのようにライブプレビューで動作を確認できるツールです。 ライブプレビューはPlaywrightによってコントロールされたChromiumで表示しています。PlaywrightをE2Eテストや自動化以外の用途で使うのは珍しい事例かと思いますので、その背景と実装の裏側についてご紹介します。 ビュー機能とは ローカル環境で開発したい bm-view-previewの内部構成 ライブラリとしてのPlaywright ブラウザを人の手で操作できるようにする ウィンドウを表示する ウィンドウのリサイズに対応する ダイアログを自動で閉じない できなかったこと アプリ

    Playwrightでライブプレビューツールを実装する - ベースマキナ エンジニアブログ
  • TypeScript/JavaScriptの不要なコードを削除するツール「Knip」の紹介 - ベースマキナ エンジニアブログ

    こんにちは、taroです! 今回は、ベースマキナのTypeScriptプロジェクトで不要なコードの検知・削除で使用しているKnipについて紹介します。 Knip とは Knipは、TypeScript/JavaScriptのコードベースの不要なコードを検出するCLIツールです。 以下が検出できる不要なコードの例です。 package.jsonのdependencies/devDependenciesの中で使われていないpackage exportされているがどこからもimportされていない変数、関数、型など 使用していないファイル その他、検出できる内容の一覧はこちらで確認できます。 またExperimentalな機能(2024年7月現在)として不要なコードの自動削除も可能です。 ちなみにTypeScript/JavaScriptの不要なコードの検出するツールではts-pruneも知ら

    TypeScript/JavaScriptの不要なコードを削除するツール「Knip」の紹介 - ベースマキナ エンジニアブログ
  • Goで0秒待つとどうなるか - ベースマキナ エンジニアブログ

    こんにちは。yebis0942です。GoTypeScriptを書いています。夏祭りのおみくじで「待ち人来る」を引いたので、最近のちょっとした待ち事例についてご紹介します。 Goでタイムアウト時間を指定する関数を呼び出したとき、待機時間を0秒にすると何が起きるのか?という点が社内のレビューで少し話題になりました。 気になって調べてみたところ、同じ0秒のタイムアウト処理でも、内部の実装によって振る舞いが異なるケースがあることが分かりました。 よく見るタイムアウト処理 Go言語では、一定時間だけあるchannelを待つというタイムアウト処理は以下のように time.After() を使って書くことができます。 func timeAfter(c chan int, duration time.Duration) { select { case <-time.After(duration): //

    Goで0秒待つとどうなるか - ベースマキナ エンジニアブログ
  • go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ

    はじめにTIG真野です。 バックエンドのアプリケーションの上で、メール送信するコードがある場合の単体テストをどう実現するか悩みました。 メールには、タイトル・文・From・TO・CC・BCCなど複数の設定値がありますし、SMTPサーバの接続情報もあります。これらを表現する構造体のモデルだけに絞った検証に留めることは、気が進みませんでした。時代はインフラレベルでダミーサーバを動かしモックする方向で動いています。SMTPでメール送信し、その送信結果をテストコード上で取得&検証する一連の流れを行って動作を確かめたいと思いました。 方法として、澁川さんのMailSlurperを使って6桁のコードの送信コードのテストをするで紹介されたMailSlurperを使うか迷いましたが、以下の点で牛刀だなと感じました。 メール送信するのはごく一部の機能(私の場合は1機能。今後増える見込みは現時点で見えなかっ

    go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ
    u_tis
    u_tis 2024/07/11
    おおー、メール送信のテストはMailHogとかでテスト用のサーバーを立ててテスト回したりしたことしか無いけど、これライトで良さそう。冒頭の過剰さを感じるポイントも共感。
  • ベースマキナのエンジニアブログを始めます - ベースマキナ エンジニアブログ

    こんにちは、syumaiです! このたびベースマキナのエンジニアブログを始めることになりました! 記事では、エンジニアブログを始めることになった経緯や、これからどういった内容について書いていくのかなどについて簡単に紹介します! ベースマキナとは 今回は、一目の記事ということで、簡単にサービスの紹介もさせてください! ベースマキナは、一言で言うと管理画面のSaaSです。特に社内向けの管理画面をメインの用途としたプロダクトです。 社内向けの管理画面は専任のチームが存在しないことも多く、 ライブラリの更新、新機能追加のメンテナンスが滞る 権限管理の実装を十分に行えない といった課題を抱えている場合があります。 ベースマキナでは、任意のデータベースやAPI (REST API / gRPCなど) への接続を行ったうえで、 処理実行用のフォームの生成 入力値へのバリデーション 権限管理、承認フロ

    ベースマキナのエンジニアブログを始めます - ベースマキナ エンジニアブログ
    u_tis
    u_tis 2024/07/09
  • 「みんなで金塊堀太郎」という施策で億単位のコスト削減を達成 & 表彰されました | CyberAgent Developers Blog

    CTO統括室の黒崎(@kuro_m88)です。サイバーエージェントエンジニアを中心に直近の半年で「みんなで金塊堀太郎」という施策を行い半年で億単位のコスト削減を実現できたので、どんなことをしたのか紹介します。また、社内の半期に一度の全社表彰で表彰されたので、サイバーエージェントの表彰の文化についても触れたいと思います。 「みんなで金塊掘太郎」とは? メディア事業管轄で「金塊堀太郎」という施策を過去実施しており、それを全社に展開したのが「『みんなで』金塊堀太郎」という施策です。具体的には、社内のエンジニアが主体となって主にシステムコスト削減のアイデアを出し合い、それを実行するものです。 「金塊堀太郎」という名前の由来は把握していませんが、社内Slack絵文字があり一定の知名度があったと思われるため、全社展開においてもこの名前が採用されました。 社内の偉い人たちが真顔で「金塊堀太郎が〜」と

    「みんなで金塊堀太郎」という施策で億単位のコスト削減を達成 & 表彰されました | CyberAgent Developers Blog
    u_tis
    u_tis 2024/04/11
    バグをドラゴンと呼ぶ運用と同様、頭に残る命名ができると取り組みが認知されて大変良さそう。
  • 権限管理は大事で、難しい。特に、管理画面においては。|Seiji Takahashi@ベースマキナ

    ありがたいことに継続的にご利用者様の数・ご活用頂く業務の幅が増え、積み上がるご要望に日々追いつくべく開発に邁進しております。 今回は先日ベースマキナがリリースした「ロール機能」に付随するお話です。 ベースマキナでは、以前から管理画面上で呼び出す処理ごとに、ユーザーやユーザーのグループ単位で実行を許可する機能があるなど、ガバナンス要求に答える機能を揃えてきました。 今回修正が行われたのはそれとは別のレイヤーで、ベースマキナ上の管理者向けの設定(接続先のデータベースやAPIの情報や、処理の登録、ユーザー追加など)を行う権限を細分化 & グルーピング設定を紐づけられるようにした、というものです。 この機能は成果物で見るとシンプルなのですが、権限管理にまつわる設計・開発はいつも魔物に立ち向かうようなもので、混迷を極めます。 そして、こと管理画面開発となるとその難易度は他の開発よりも高い、というのが

    権限管理は大事で、難しい。特に、管理画面においては。|Seiji Takahashi@ベースマキナ
  • マッハバイトのメインDBをAmazon Auroraに移行しました - LIVESENSE ENGINEER BLOG

    こんにちは、かたいなかです。 2024年2月に長年の悲願だったマッハバイトのメインDBAuroraへの移行を完遂しました!!! この記事では、どのようにマッハバイトのAurora移行を進めていったかを記事として残します。 なお、この記事の中では結構レガシーな部分の対応に苦しんだところも出てくるのですが、DB移行が終わったあとで、弊社内でこのレベルのレガシー対応を行う必要があることはほぼないと考えているので、リブセンスに興味を持っている方も安心して読んでいただければと思います。 やったこと プロジェクトの流れ テックリードから聞く初耳の単語: 『Mroonga』 状況をざっくりと調査 このコード使われてるの?使われてないの? DMSの検証格化 移行準備期 ついに、番移行 Auroraに移行してよかったこと パフォーマンス改善 Performance Insightsが便利!!! DB

    マッハバイトのメインDBをAmazon Auroraに移行しました - LIVESENSE ENGINEER BLOG
    u_tis
    u_tis 2024/03/13
    修羅の道を乗り切った方の記事だ...DB移行は一番ヘビーな仕事なのに、第三者からするとその大変さが見えにくい仕事なので...お疲れ様でした。
  • プロダクト開発を行いながらOSS活動も緩くやる - ANDPAD Tech Blog

    ANDPADボード プロダクトテックリードの土屋(tomtwinkle)です 先日CHIYODA Tech #3 にLT枠で参加してきました! CHIYODA Techとは、千代田区にオフィスを構える企業が運営・登壇するLTイベントです。 今回は弊社9Fのイベントスペースで開催させていただきました! アンドパッド以外にKINTOテクノロジーズさん、日経済新聞社さん、スタディストさんがLTで参加されていました。 他社さんのLTも拝見させてもらって皆さんそれぞれOSSに対する様々な想いや課題を感じているんだなと勉強になりました。 LT後みんなでスナックミーさんから提供頂いたスナックをつまみに飲みながらテーブル毎に思い思いに喋るアンカンファレンスも非常に楽しかったです。 LT内容について 今回私が発表させてもらったLTについて少しだけ解説させていただきます。 speakerdeck.com ア

    プロダクト開発を行いながらOSS活動も緩くやる - ANDPAD Tech Blog
    u_tis
    u_tis 2024/03/12
    業務中「これOSS作れる/コミットできるのでは?」という瞬間があったらそれを見逃さず気楽にOSSを作った方がいいのはほんとそう...仕事ついでに気持ちが上がる実績を積み上げた方が楽しいですしね。
  • 小ネタ: DevToolsのネットワークタブでCache-ControlやX-Cacheレスポンスヘッダの値を一覧表示できるようにしてCDN関連の調査を快適にする - polamjaggy

    タイトルと ↓ のスクショで出落ちという感じ……。 https://aws.amazon.com を開いたときの様子 CDNだったり、Varnishのようなキャッシュ系のミドルウェアの調査やデバッグをしているときは、ブラウザのDevToolsを使って、Cache-Control レスポンスヘッダだったり X-Cache レスポンスヘッダのようなレスポンスヘッダの様子をめちゃくちゃ睨みつけることになると思う。こういう仕事をしているときには、リロードしては新しいリクエストを選択し直して睨みつける、というような操作を繰り返すことになりがち。 ところが、ネットワークタブのリクエスト一覧表示の表みたいなやつには任意のレスポンスヘッダを表示することができるので、こうすると1クリックの手間が省けて嬉しいねという話。 やり方はこれだけ! ネットワークタブのリクエスト一覧表のヘッダー部分を右クリックし、コン

    小ネタ: DevToolsのネットワークタブでCache-ControlやX-Cacheレスポンスヘッダの値を一覧表示できるようにしてCDN関連の調査を快適にする - polamjaggy
    u_tis
    u_tis 2024/03/07
    えwナイスな小ネタすぎる
  • 構造化ログのフォーマット logfmt vs JSON lines - methaneのブログ

    構造化ログのプラクティスをあちこちで調べていたら、logfmtを推奨する記事を見つけたので調べてみました。 先に結論を言うと、JSON linesを使っておくのが良さそうです。 logfmt について logfmtとはスペース区切りで key=value を並べたフォーマットです。文字列にはクォートとエスケープによってスペースや改行を含められます。 at=info method=GET path=/ host=mutelight.org fwd="124.133.52.161" dyno=web.2 connect=4ms service=8ms status=200 bytes=1653 (logfmt から引用) あちこちで logfmt のリファレンスとして紹介されているのはこの記事です。 https://brandur.org/logfmt 発明されたのはどこか分かりませんが、流行

    構造化ログのフォーマット logfmt vs JSON lines - methaneのブログ
    u_tis
    u_tis 2024/03/05
    ltsv...?
  • 「世の中に一言言ってやりたい」病 - kmizuの日記

    おはようございます。これまでの自分を振り返って、あるいはネット言説を見て、ふと思ったのですよ。なんか、ネットに流れる記事に即レスで「一言言ってやりたい」人が多すぎませんか?と。これは思いっきり私自身を刺す言葉でもあります。たぶんTwitterや雑誌記事のコメント欄をはじめとして短文で気軽に意見を言えるようになった副作用だと思うのですが、以前のブログ主流(あるいはWeb日記主流)時代だと、思考をきちんとまとめる必要があるので「世の中に一言言う」にももうちょっと考えをまとめるのが普通だったと思うのです(これは過去を美化しているかも)。 政治に対して、Twitter上に飛び交う言説に対して、その他色々についてひとこと言いたい。あるいは、愚かしい(と主観的に判断した)言説にため息をつきたくなる気持ちも、行政の不甲斐ない対応に憤る気持ちも、腐ったシステムへの苦情も。今の自分にもそういう気持ちがあるか

    「世の中に一言言ってやりたい」病 - kmizuの日記
    u_tis
    u_tis 2024/01/23
    しずかなインターネットがうまく回ってそうなのはこの病の処方薬として機能してるからだと思ってますね。
  • DB に JSON を保存したいときに Protobuf を使うと便利 #LayerXテックアドカレ - LayerX エンジニアブログ

    こんにちは。バクラク事業部 Enabling チームの @izumin5210 です。最近「HUNTER×HUNTER」の既刊を全部読みました。 この記事はLayerXテックアドカレ2023の9日目の記事です。 前回「1人目データアナリストとしてデータチームに異動しました 」 次回「Slack × Zapier × MiroでKPTでの振り返りをラクにする」 RDB や KVS などのデータ保存先において、データを正規化せずにそのまま保存したいと思うことはありませんか? 8月にリリースされた「バクラク請求書発行」というプロダクトには「柔軟なレイアウトカスタマイズ」機能が搭載されています。リンク先の画面操作イメージを見ていただくと、この機能の雰囲気を理解していただけると思います。この機能が扱うレイアウトデータはまさに「関係の正規化をせずに保存したいデータ」でした。 bakuraku.jp こ

    DB に JSON を保存したいときに Protobuf を使うと便利 #LayerXテックアドカレ - LayerX エンジニアブログ
    u_tis
    u_tis 2023/11/16
    なるほどーシンプルだけど賢い考え方だ...勉強になる... > 「DB としてはスキーマレスだとしても、データとしてはスキーマ(構造の定義)が存在することも多いはずで、そういうところでも Protobuf は活躍してくれます。」
  • OSSコントリビューションへの一歩に悩んでいる方向けにちょっとした事例を紹介 - stefafafan の fa は3つです

    OSSへのちょっとしたコントリビューションに成功したので、どういう流れでコントリビュートしたのかブログに簡単に流れをまとめてみようと思います。OSS活動してみたいけどどういう流れでやれるのか気になっている方の参考になれば幸いです。なお今回の修正Pull Requestはこちらです。 github.com 経緯 GitHub App の権限で Songmu/tagpr を利用する - stefafafan の fa は3つです とかにも書いたのですが、個人的に作ったライブラリにこちらの Songmu/tagpr を導入したら便利になったので、そのままはてなで運用している以下のリポジトリとかでも使ってみてはどうかとブログチームの方に紹介しました(自分はブログチームではないのですが、Slackの雑談チャンネルでおもむろに紹介しました)。 github.com このあと軽くウォッチしていたら、なぜ

    OSSコントリビューションへの一歩に悩んでいる方向けにちょっとした事例を紹介 - stefafafan の fa は3つです
    u_tis
    u_tis 2023/11/06
    丁寧な仕事だ
  • Re: OSSで世界と戦うために - k0kubun's blog

    yusukebe さんの OSSで世界と戦うために を読んで感銘を受けた。 hono の快進撃もさることながら、OSSで日のコミュニティの外にリーチしたり、 GitHubスター数を伸ばしたりみたいな話は、 自分も10年くらい挑戦し続けているけどあんまり表に出てこない気がするネタなので興奮した。 僕はいくつかの点で上記の記事とは違う方法でOSSで世界と戦っているのだが、 その中でうまく行っているものや、良くないと思っているものなどについて紹介したい。 GitHubのスター数 OSSを始めたばかりの学生時代、GitHubのスターへの執着がもはや煩悩の域であり、 集めたスターの数を合計するCLIツールを作ったり、 同じ計算方法でランキングを作るWebサイトを作ったりした。 このサイトによると、僕の今のスター数は9000を超えている。 自作したOSSの中では、スター数が1600くらいのものが2つ

    Re: OSSで世界と戦うために - k0kubun's blog
    u_tis
    u_tis 2023/11/02
  • Goのテーブル駆動テストではテストケースの定義位置を知りたいのでライブラリを書いた - 詩と創作・思索のひろば

    Go言語でテストを書く際のベストプラクティスとして、テーブル駆動テスト(Table dirven tests) というのが推奨されている。ようはデータとふるまいを分離しましょうという話で、正直わざわざ名前をつけるようなものでもなかろうという気持ちもないではないが、まあ話がはやくていいね。 けどみんなほんとにこれで満足してるの? と疑問に思うところはある。テストが落ちたときに表示される行番号がテストケースによらず一定で、どのテストが落ちたのかを探すのに一手間かかってしまう。 たとえば以下のコードをテストする際、 package eg import "testing" func TestExample(t *testing.T) { testcases := []struct { name string a, b int sum int }{ {"1+1", 1, 1, 99}, {"2+2"

    Goのテーブル駆動テストではテストケースの定義位置を知りたいのでライブラリを書いた - 詩と創作・思索のひろば
    u_tis
    u_tis 2023/10/12
    ッッホェー便利だ!!
  • 銀行情報APIをリリースしました - ケンオールブログ

    ECサイトなど、振込先の銀行口座を登録する際、銀行情報を入力しやすくするための銀行情報APIをリリースしました。 スタンダードプラン以上で利用可能なため、すでに郵便番号API等をご利用のお客様は追加料金なしでご利用いただけます。 kenall.jp 銀行一覧APIと銀行支店一覧APIがあり、全銀コードや銀行名、支店名などの情報を以下のようなJSONで取得できます。 { "version": "2023-07-27", "data": { "bank": { "code": "0001", "name": "みずほ", "katakana": "ミズホ", "hiragana": "みずほ", "romaji": "mizuho" }, "branches": { "186": { "code": "186", "name": "品川駅前", "katakana": "シナガワエキマエ",

    銀行情報APIをリリースしました - ケンオールブログ
    u_tis
    u_tis 2023/10/11
  • プログラマブルな基盤を売るということ ~100年企業を目指して~|Seiji Takahashi@ベースマキナ

    ポエムです! 長いのでまとめローコード・ノーコードという言葉の括りは大きな意味をもたず、「プログラマブル」という表現が妥当 プログラマブルな基盤を作って売ることは、課題解決の幅を最大化する。複利でのアセット積み上げが可能で、ひいてはコンパウンド・スタートアップの地盤を作りやすい利点がある この基盤は最初から覚悟を決めて作らないと、後追いで構築するのが難しいため商材としての希少性が高い プログラマブルな基盤は、売り手に高い課題探索・抽象化能力と海外サービスへの強い関心が求められる こうした基盤を事業として成長させることは、将来「Sell work, not software」の時代が来たとしても生き残る手立てを作る最良の手段になりうる まとめても長いですね… はじめに皆さまこんにちは、株式会社ベースマキナの代表取締役社長を務めております高橋と申します。 現在弊社では、ソフトウェアエンジニア

    プログラマブルな基盤を売るということ ~100年企業を目指して~|Seiji Takahashi@ベースマキナ
  • コード不要論からコード表現への回帰 - デベロッパーツールの現在|Seiji Takahashi@ベースマキナ

    皆様、ChatGPTでCode Interpreterの機能がリリースされましたがお使いになりましたか? 僕は大変有りがたーく日常使いさせて頂いており、活用方法について各方面のご意見を伺いたいですが、その話はさておき… こうした劇的な開発体験の変化が予感されると、度々繰り返される議題の1つが「エンジニアやコードの不要論」かと思います。 私自身がローコードツールを提供している会社の経営者なのですが(ヒューマンエラーを減らせる管理画面構築SaaS「ベースマキナ」をよろしくお願いします!)、この類の議論の盛り上がりと日頃情報を追っている最新のツール群との間を照らすと、ギャップを感じます。 端的に言うと、少なくともここ1年くらいで新しく登場するデベロッパー向けのツールを見ていると、コードが不要になる場面が増えると思いきや、逆にコードをしっかり書くツールが増えてきたな、という印象を持っています。 D

    コード不要論からコード表現への回帰 - デベロッパーツールの現在|Seiji Takahashi@ベースマキナ
  • OSSをベースにしたサービス提供の難しさ - knqyf263's blog

    背景 難しさ 利益相反になりがち 競合OSSの存在 コミュニティからのPull Request 競合サービスによる利用 レベニューシェアにならない 利用統計が取れない やっておくべきこと お金を払いたい機能を見極める 境界線を決める ライセンスについて考える 利用統計の取得方法について考える OSSから有償版へのスムーズな移行を考える まとめ 背景 弊社(Aqua Security)ではOSS開発をしており、そのOSSを組み込んだ有償サービスを売ることで利益を上げています。 自分はその中のOSS開発をフルタイムで担当しています。 会社は何を目的としてOSS開発をしているのか、というのは以前発表しました。 speakerdeck.com フルタイムOSS開発者をやってみての感想なども昔書いています。 knqyf263.hatenablog.com 今回はOSSをベースにしたサービス提供の難し

    OSSをベースにしたサービス提供の難しさ - knqyf263's blog
    u_tis
    u_tis 2023/06/07
    Trivyにお世話になっている身であり彼を尊敬しているため、なんとか明るい未来を願っておりますが、僕の発想力ではこの記事にある難しさを打開する案が全く浮かばずしょんぼりしてしまった。