タグ

ブックマーク / zenn.dev (804)

  • Vim での一括置換を楽に行う裏技

    この記事は Vim 駅伝 の 06/30 の記事です。 前回の記事は ryoppippi さんによる、 06/28 の「とあるコーディングチョットワカル勢のエディタ遍歴」という記事でした。 次回は 07/03 に投稿される予定です。 はじめに ファイル内の特定の文字列を一括置換する場面はよくあります。そんなとき Vim では :substitute コマンド(短縮形: :s)を用いて というコマンドを叩くのがセオリーです (cf. :h :s)。 しかしこれ、まあまあ面倒くさくありませんか? 冒頭に % を書かないといけない 冒頭の % は置換範囲を表し、ファイル全体を置換する、という意味を持ちます (cf. :h :%)。 % を書かない場合、カーソルのある行だけが置換対象となります。 でも、カーソル行だけを置換対象としたいことって…ファイル全体を置換するケースに比べればそこまで多く

    Vim での一括置換を楽に行う裏技
    yk5656
    yk5656 2023/07/01
  • 自立したエンジニアとはなにか

    自立したエンジニアとは 仕事で、自立とか自走とかいうキーワードが飛び交っていた。冷静に考えるとどういう意味なのかあまり言語化できていなかった。 自立しているエンジニアってなんだろう、ということを考えているうちにこの文書が生まれたのでここに公開する。なお、以下では「エンジニア」と「ソフトウェアエンジニア」を特に区別せずに使う。 なんでも自分でできると思っていた 題に入る前に、少し昔話をしたい[1]。 僕は仕事でコードを書くようになった。2017年くらいのことになる。 学生時代にある程度プログラミングをやっていた僕ではあったが、仕事はコードを書けるだけではできないことがたくさんあることがわかった。 作って欲しいと言われたものを作ることはできた。とにかく仕事を前に進めるためのことを色々とやっていた。 でもセキュリティのこととかよくわからなかった。他にも、Linuxサーバーの操作はできて設定ファ

    自立したエンジニアとはなにか
  • Figma for VS Codeで変わるデザインと開発のコミュニケーションと効率

    2023年6月にFigma Config 2023という、Figmaのカンファレンスが開かれました。そこでFigma上で開発をサポートするような機能が多数発表されました。 デザイナーとエンジニアの効率を上げるDev Modeなどの発表があり、エンジニアにとっても知っておきたい内容があります。 今回は発表にあった中でも特に開発に直結するFigma for VS Codeを紹介します。 Figma for VS Codeとは? VS Code上でFigmaを使用したさまざまなことができる拡張になります。 ただVS Code上でFigma上のデザインを確認するだけではなく、Figmaと連携した開発速度を上げる機能やコミュニケーションをサポートする機能があります。 Figmaにコメントを送り、コメントの通知を受け取れる VS Code上からFigmaのコメント機能を使用して、UIの質問をすることが

    Figma for VS Codeで変わるデザインと開発のコミュニケーションと効率
    yk5656
    yk5656 2023/06/24
  • node_modulesの問題点とその歴史 npm, yarnとpnpm

    皆さんnpmパッケージのバージョンを上げるときにハマって依存地獄から抜けられなかったことはありませんか? 私はあります。 複雑怪奇な依存関係を調べてみようとnode_modulesを覗いてみて、そのカオスっぷりに臭いものに蓋をしたことはありませんか? 私はあります。 そこでnode_modules以下について調べてみたのですが、node_modulesにどんな問題点があって、npmやyarn, pnpmは何を目指していたのか時系列順に紐解いた方がわかりやすいことに気づきました。 ここでは初期のnpmが抱えていた問題から今に至るまでを順を追って説明します。 するとnode_modulesの仕組みの他に、各パッケージマネージャの方針の違いが見えてくるはずです。 初期の頃のnpm (~2015年以前) この頃はシンプルで、依存関係はそのままnode_modulesのディレクトリ構造に反映されてい

    node_modulesの問題点とその歴史 npm, yarnとpnpm
  • 自動車のスマホ化 - Android Automotive OS完全入門!

    はじめに Turing株式会社のUX Engineeringチームでエンジニアをしています佐々木です。Turingは「We Overtake Tesla」をミッションに完全自動運転EVの開発をしています。UX Engineeringチームは、車載インフォテインメント (IVI : In-Vehicle Infotainment) システムの開発を担当しており、Android Open Source Project (AOSP) をベースに車載OSを開発しています。 記事では、AOSPの枠組みに含まれるAndroid Automotive OS (AAOS)を概説し、また、実機でAAOSを体験するためにRaspberryPi 4BでAAOS13.0を実行する方法を紹介します。 Android Automotive OSの概要 Android Automotive OS (AAOS) は自動

    自動車のスマホ化 - Android Automotive OS完全入門!
  • TypeScript 本体のコードを読んでみよう

    みんなお世話になっている TypeScript のコードを読みたいと思ったことはないだろうか。読んだ。 一週間ぐらいかかった。完全に読み切ったとは言えないが、概要は掴んだ。 なかなかに複雑でドメイン知識を得るのが難しかったので、これから読む人向けに、登場人物や概念を整理して紹介したい。 読んだのは 2023/6/8 時点で git clone したコード。 最初に: 自分のゴール設定 複数ファイルにまたがった参照を、 TypeScript の Language Service が提供する findReferences() や findRenameLocations(), goToDefinitions() を使って、インクリメンタルに書き換えたかった。 Terser を使うと、今触ってるオブジェクトが何で、何のメンバを書き換えたかの情報が残らない。これを TypeScript のレイヤーで

    TypeScript 本体のコードを読んでみよう
  • 複数の環境でDockerfileを共通化するために使えるtips

    前提 コンテナを用いてアプリケーションのワークロードを構築することにはいくつかの利点があります。 なかでも、下記に上げられるポータビリティと環境の再現性は非常に強力です。 ポータビリティ コンテナは、アプリケーションとその依存関係をコンテナ内にパッケージ化します。 これにより、開発環境で構築したコンテナを番環境にデプロイする際にも、一貫した動作が期待できます。 異なる環境間でアプリケーションを移行する際に、互換性の問題や依存関係の不一致が生じるリスクが低減され、ポータビリティが高まります。 環境の再現性 コンテナは環境に依存しないため、開発者が特定の環境でアプリケーションを構築した場合でも、他の開発者や運用チームが同じ環境を再現することが容易です。 コンテナイメージにはアプリケーションのコードとその実行環境が含まれており、イメージを共有することで他の人が同じ環境でアプリケーションを実行で

    複数の環境でDockerfileを共通化するために使えるtips
  • AppleシリコンのMacでのDocker開発環境のパフォーマンス改善

    プロダクト開発部バックエンド開発グループでエンジニアをしています、おかだです。 ココナラには開発環境改善委員会があり、開発スピードの維持・改善に取り組んでいます。 日は、取り組みの一環としてAppleシリコンのMacでのDocker開発環境のパフォーマンスを5-10倍程度改善したお話をしたいと思います。 はじめに AppleシリコンのMacが発表されてから数年が経ちました。ココナラでも昨年から導入が進んでおります。新しく入社したメンバへはM1 MacBook Pro(最近だとM2)が標準で支給されるようになっており、現在はIntel MacとM1 Macが混在して利用されている状況です。 バックエンドの開発では、ローカルでの動作確認や単体テストはコンテナ内で実行できるようになっています。 Dockerパフォーマンス問題 M1 Macを導入したメンバから 単体テストが遅い 静的解析が遅い

    AppleシリコンのMacでのDocker開発環境のパフォーマンス改善
  • VSCodeが物足りない人へ AstroNvimの紹介

    はじめに みなさんはエディタに何を使っていますか? 筆者は最近、VSCodeからNeoVimに乗り換えました。 NeoVimは自分好みにカスタマイズしていくエディタです。 この記事ではVSCodeに飽きちゃった人やNeoVimを使ってみたいけど難しそうだなと思っている人に向けてAstroNvim を紹介します。 AstroNvimとはオールインワンのNeovim環境です。 カスタマイズも簡単にできるため、NeoVim初心者にはとてもおすすめです。 筆者もAstroNvimからNeoVimに入門しており、いまも使い続けています。 AstroNvim のインストール Macの場合はbrewを使って簡単に導入できます。 brew install neovim git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/

    VSCodeが物足りない人へ AstroNvimの紹介
    yk5656
    yk5656 2023/06/07
  • コンポーネントベースで開発する時の CSS の書き方とコンポーネントの分類 (自己流)

    ReactSvelte でコンポーネントベースで開発するとき特有の CSS ノウハウってあんまり効かない気がする Twitter に書いたら反響があったので、自己流だけどまとめておく React Component の管理単位と、CSS としてのレイアウトの管理ポリシーは違うよね、みたいな話をマークアップエンジニアに時折されるが、そんな話は無視して完全一致させる。そういう星のもとで開発している コンポーネントの分類 ロジックコンポーネント レイアウトコンポーネント ブロックコンポーネント インラインコンポーネント 定義 ロジックコンポーネント Provider や hooks などのデータ処理だけを扱い、子に渡すコンポーネント 一切の CSS や DOM 実体を持たない レイアウトコンポーネント レイアウトコンポーネントは複数の子ブロックコンポーネント(または slot)を持ち、子ブ

    コンポーネントベースで開発する時の CSS の書き方とコンポーネントの分類 (自己流)
    yk5656
    yk5656 2023/06/03
  • 「スクラムで生産性は上がらないしリリーススケジュールが狂いまくりなんですよ」とか言うお前らに告ぐ

    前提 この記事は内製開発をしているSaaSの中の人であるエンジニアが、SaaSの内製ソフトウェア開発をする上での話として書いています。 前ふり 「スクラムで生産性は上がらないしリリーススケジュールが狂いまくりなんですよ」 「何が原因なんですか?どうすればいいんですか?」 という相談を受けました。 NDAを書いてから、どれどれとチームの状況を見てみました。 該当チームのスプリントゴール 該当チームのスプリントゴールはこんな感じでした。 QAフェーズのプロジェクトAを、QA作業を完了してリリースできる状態まで進める 実装フェーズのプロジェクトBを、フィーチャーの実装率を50%まで進める 設計フェーズのプロジェクトCを、要確認な点を除いて実装レディーな状態まで進める スプリントゴールが3つありますね。とても面白いですね。 思わずボンドルド卿みたいな反応をしたくなりますがここは先に進みましょう。

    「スクラムで生産性は上がらないしリリーススケジュールが狂いまくりなんですよ」とか言うお前らに告ぐ
  • コーヒードリップのためのアプリを作った

    はじめに コーヒーコーヒー粉にお湯を注ぐなどして得られる抽出液である。抽出の方法の1つに粕谷 哲さんが発明した“4 : 6メソッド”という手法があり、これは要約すると下記のようになる。 コーヒー抽出の工程を注ぐお湯の量で前半4割と後半6割に分割する 前半4割の抽出においては、2回または1回お湯を注ぐがこのときの割合をコントロールする 後半6割はお湯を分割する回数をコントロールする このような調整を行うことによって、コーヒーの甘さ・酸味、濃さをある程度の再現性をもって調整できるという方法である。この手法は大変よいものであると思いつつも、次のような問題があると感じていた。 コーヒー豆の質量比でお湯の量を決定するが、豆 : 水 = 1 : 15以外の比率を用いると計算が複雑になる 前半4割の抽出では、1 : 1以外の比率を用いると計算が複雑になる 後半6割の抽出では抽出回数によっては1回あたり

    コーヒードリップのためのアプリを作った
    yk5656
    yk5656 2023/05/29
  • 高速で持続可能な開発のためのソフトウェア工学と機械学習への適用

    こんにちは、Wantedlyで推薦システムを開発している樋口です。Kaggleや実務での機械学習の開発にて、過去に下記のような失敗がありました。 精度改善のために実験を繰り返し追加したら、PRが巨大になり、レビューに時間がかかった 学習結果を確認したら、パラメータを一部だけ間違えていて、再度長い実験をやり直した このような悩みを解決するために、書籍や経験で学んだプラクティスを取り組んできました。例をあげると以下のようなのものがあります。 小さい単位でPRを作成する パラメータを設定ファイルに切り出して、ヌケモレを減らす 学習データをサンプリングして、実行時間を短縮して結果を素早く確認する これらのプラクティスに取り組む中で、もっと "高速で正確な開発を行うための知見や方法が体系化されているのではないか" という疑問が湧きました。 この疑問を解決するべく"継続的デリバリーのためのソフトウェア

    高速で持続可能な開発のためのソフトウェア工学と機械学習への適用
  • [MySQL]AUTO_INCREMENTのidが戻る

    こんにちは、M-Yamashitaです。 今回の記事は、MySQLのAUTO_INCREMENTのidが戻ってしまう話です。 以前、RailsMySQLを使うサービスにて、Mysql2::Error: Duplicate entry 'xxx' for keyが発生しました。このエラーの原因を調べたところ、テーブルでAUTO_INCREMENTとなっているカラムのidが戻って採番されており、その影響でエラーが発生していることがわかりました。当時の私の認識では、AUTO_INCREMENTとなっているidは、戻って採番されることはないと思っていたので非常に驚きました。 そのため、このidが戻る現象について調べて記事にしたいと思い、執筆しました。 なお、この記事ではMySQL 5.7を使用しています。 この記事で伝えたいこと MySQL再起動によりAUTO_INCREMENTのidが戻って採

    [MySQL]AUTO_INCREMENTのidが戻る
    yk5656
    yk5656 2023/05/22
  • スクラムやる意味ある?を乗り越えるために

    大体2、3ヶ月くらいで次のステージに進んでいることがわかります。また、気持ちい良くらいタックマンモデルに沿ってチームの状態も変わっていることもわかります。 形成期 ここからは、それぞれの段階でチームの状態の詳細、僕の心境と取り組んだことについて紹介します。まずは形成期から。昨年の6月、スクラム開発を採用してチーム開発が始まりました。開発を始める前、僕を含めたチームのメンバーからの声は「スクラムってどうやるんやろう?」とか「初めてやからワクワクするわ」みたいな感じで期待と不安が半々でした。そんな時、ひょんなことからリーダーが僕に「スクラムマスターやってみーひん?」って提案を受け、「やったことないけど挑戦してみよう」と思い、スクラムマスターに挑戦することになりました。 僕の心境は「何したら良いかわからんけどとりあえずスクラムガイドに沿って進めてみたらいいんかな?」でした。ふざけんなって声も上が

    スクラムやる意味ある?を乗り越えるために
  • Reactを使うならReact Developer Toolsの再レンダリング時ハイライトくらい設定してくれ

    モダンフロントエンドについて初めて書きます。お手柔らかに。 最近 ReactNext.js に入門したのですが、入門時点で一番最初に知っておきたかったことについて書きました。 「React 初心者が useState とかを学習する前にまず一番にやることはこれ」っていう内容です。。 タイトルは自分への戒めです。 TL;DR この記事を読むと React Developer Tools の簡単な使い方を知り、useState の再レンダリングについて動きがイメージできるようになると思います React Developer Tools これのこと。React を使った開発をするのであれば、必ず導入しないといけないレベルのもの。 再レンダリング時ハイライトの設定 React Developer Tools をインストールした後、F12 を押下して Component を選択この歯車を押下す

    Reactを使うならReact Developer Toolsの再レンダリング時ハイライトくらい設定してくれ
    yk5656
    yk5656 2023/05/22
  • 今からDockerを始める人へ!Docker Initがアツい!

    package main import ( "net/http" "github.com/labstack/echo/v4" ) func main() { e := echo.New() e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }) e.Logger.Fatal(e.Start(":1323")) } # syntax=docker/dockerfile:1 # Comments are provided throughout this file to help you get started. # If you need more help, visit the Dockerfile reference guide at # https://docs.

    今からDockerを始める人へ!Docker Initがアツい!
  • Goとエラーハンドリング慣習について

    エラー返値が無用な条件 関数ないしメソッドの実装がオンメモリ操作のみで完結 将来も(メモリ以外の)I/O操作は追加されることがない 逆にいうと上記の条件のいずれかが達成できない可能性がある関数やメソッドはエラー返値を付与すべき。 返値エラー型はerrorで統一する 返すエラーがerrorインターフェース型でなければそのエラーは正常にハンドリングできません。またerrorインターフェースを満たす別の返値型で返してerrorインターフェース型で受け取るのも後述のトラブルの元です。 Goの実装方針に「インターフェースで利用するものもコンストラクター相当では構造体ポインタで返す」というものがありますがコンストラクタを呼ぶ側は元型にアクセスすることが多いのでこういう方針になっています。が、エラー値に関しては元型を意識せずに利用可能にするという役割があって、この実装方針は当てはまりません。 エラーチェ

    Goとエラーハンドリング慣習について
    yk5656
    yk5656 2023/05/21
  • オープンなLLMをDockerで動かす

    次々と発表されるオープンな日語大規模モデル どうなっているの??という感じですよね。 我らがnpakaさんは、さっそくGoogle Colabで動かしていらっしゃいます。 ただ、Google Colabだと毎回モデルのダウンロードが大変なので、ローカルでDocker使って手軽に動かせるといいな、ということでやってみました。 以下GitHubのリポジトリにDockerfileとサンプルプログラムをおいています。チャットっぽいことをできるようにしています。 上記で、サイバーエージェントとリンナのLLMが両方動きます。 使用環境 前提となる環境です。使用しているPCのスペックは以下です。 項目 内容

    オープンなLLMをDockerで動かす
  • オープンソースはオープンな開発を意味しない

    「あるソフトウェアがオープンソースである、OSSである」とみなせる条件は、そのソフトウェアがOpen Source Initiative(OSI)が定義するオープンソースなライセンスの下に頒布されていることです。それ以外の条件はありません。この「それ以外の条件はありません」のところが誤解されやすいので、どのように誤解されるのか、および、実際のところどうなのかということについて書きます。 OSSの代表格といえば、サーバ、スーパーコンピュータ、組み込み機器など様々な用途で世界中で使われているOSカーネルであるLinuxでしょう。Linuxには以下のような特徴があります。 a. オープンソースライセンスであるGPL v2の下に頒布されている b. 世界中の技術者たちが誰でもオープンに開発されていて、その開発過程もメーリングリストなどによってオープンになっている これは事実なのですが、aに加えてb

    オープンソースはオープンな開発を意味しない
    yk5656
    yk5656 2023/05/15