サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2025年ランキング
engineering.nifty.co.jp
この記事は ニフティグループ Advent Calendar 2025 および Rust Advent Calendar 2025 シリーズ 1 の 9 日目の記事です。 忙しい方向け Rust でファミコンの ROM を作ろうとしたら想定外に大変だったけど楽しかった、というお話です。 mrustc + cc65 という組み合わせで Rust コードをファミコン用にコンパイルしたかった mrustc が生成した C コードを cc65 でコンパイルするためにひたすら魔改造 本物の libcore も改造しつつコンパイルが通るところまでいって感動 しかし出来上がったバイナリは 32KB の枠に対して 347KB オーバーという衝撃の結果に… リンカ (ld65) を魔改造して不要なシンボルを削ろうとしたが、低レイヤーが分からず撤退 最終的には最小限の libcore を実装し、とりあえず動か
はじめに こんにちは。ニフティ株式会社の島田です。 今回はGitHub ActionsステータスのかっこいいバッジをREADMEに出す方法について紹介します。 ※こちらの記事は社内のレポートDBから転載した記事です これは何? READMEにこういうかっこいいステータスバッジをつけられるようになります。 GitHub Actionsのステータスを表示する 実はこれ、とても簡単です。 GitHub Actionsのワークフロー設定画面から、「Create status badge」を押せばリンクが取れますので、それをREADME.mdに貼るだけです。 こんな風にするとバッジをクリックした際のリンク先が、画像ではなくワークフローの詳細ページになって嬉しいです。 [ 開発環境の豊富なDebianイメージでビルドしてAlpineイメージにコピーすると動作しない場合がある バイナリのビルドに失敗する glibcに依存するソースのビルドに失敗する Python
TypeScriptが大好きなエンジニア。基幹システムグループのキムです。 担当するプロジェクトの中で、最近はGitHubで進めるプロジェクトが多くなりました。 以前はECSをAWS CodePipelineを利用してビルドとデプロイを行っていましたが、 GitHubで進めるプロジェクトはAWS CodePipelineより、GitHub Actionsが管理も楽だし値段も安いなと思ったため、CodePipelineからGitHub Actionsへ移行することを決めました。 AWS CodePipeline vs GitHub Actions CodePipelineとGitHub Actionsの特徴の比較は以下になります。
はじめに こんにちは、会員システムグループの渡邊です。 社内にNotionが導入されて2年以上立ちました。 最近は何でもNotionで管理すればいいじゃんという気持ちになってきていて、試しにDB設計をNotionで行ってみたのでその感想を書いていきます。 範囲 今回はDB設計におけるエンティティ抽出とデータモデリング、ER図作成までをNotionだけで行います。 エンティティ抽出とモデリング NotionはMermaid記法が使えるため、こちらを使ってエンティティ抽出を行うことが可能です。 しかし、いきなりコードベースで図を作成するのは難易度が高いため、今回はdraw.ioを使ってエンティティ抽出とデータモデリングを行っていきます。 draw.io for Notionという拡張機能を使うことで、SVGファイルをNotionに貼り付けるだけで直接draw.ioの操作を行うことができます。
はじめに こんにちは。宮永です。 最近X(Twitter)やYouTubeで「公衆電話でダイヤルアップしてみた」のような投稿をよく見かけます。令和の時代になぜかブームが来ているようです。そこでダイヤルアップ接続ブーム(?)に乗って、「PPPサーバを立てて公衆電話から自宅にダイヤルアップ接続してみた」ブログを投稿します。 今回はUbuntuサーバと入手が容易なアナログモデムを用いてダイヤルアップサーバを構築し、実際に公衆電話から接続してみるところまでやります。 ちなみに、本来ダイヤルアップの接続先は契約したISPです。ニフティは2024年1月現在もダイヤルアップ接続サービスを提供しているため、多くの「ダイヤルアップ接続してみた」投稿では接続先として使われていることが多いようです。 開発環境 作業は以下の環境で行いました。汎用的な作業しか行っていないので、異なっていても問題ないことが多いと思い
この記事は、ニフティグループ Advent Calendar 2023 1日目の記事です。 前段の話 私が所属するプロジェクトでは、Design Docsでソフトウェアの設計や、目的、背景などを記述しており、継続的に更新しています。 Design Docsには、細かな設計方針や、その意図は明確に記述されていますが、読みやすさの観点から結論や重要なポイントのみを載せるようにしています。なので、粒度の細かい情報が失われてしまうということが起こってしまいます。 これでは新規参入者になぜ他の選択肢を選ばなかったか、なぜこの選択肢を選んだのかについて伝授されません。 未来の運用者は数ある選択肢からの導入理由や、決定の過程や議論した内容がわからないまま機能の追加や改修を行わなければなりません。 これが積み重なっていくと日々の運用のコストが膨らんでいき、運用したくないシステムになってしまい、技術的負債と
N1!のPorductivity Engineerとして生産性向上に関わる活動をしている石川です。 ニフティでは2023年6月からPoCとしてGitHub Copilot for Businessを限定的に導入していましたが、2023年9月に正式導入することになりました。現在では希望する方は誰でも利用することができます。 本日はGitHub Copilotの利用状況と効果について話したいと思います。 GitHub Copilotの利用状況 Acceptance Rates 20人ほどでPoCを行っていたときのCopilotの提案採用率となります。 導入初期は好奇心からか採用率は50%を超えてましたが時間が経って30%前後に集約しました。Copilot利用者の提案採用率は約30%なので近い値にはなっていますね。 利用者がまだ少ないのと人や言語差の影響が大きく採用率が乱高下してますが、利用者が
この記事は、ニフティグループ Advent Calendar 2022 18日目の記事です。 はじめに 基幹システムグループ サービスインフラチームの南川です。 普段はユーザーサインアップやシングルサインオン、顧客管理システム等の開発や運用を担当しています。 今回は、 Amazon CloudWatch Logs に出力するログの形式について説明します。 Amazon CloudWatch Logs Amazon CloudWatch Logs は、 AWS リソースや AWS 上で実行するアプリケーションからのログファイルをモニタリング、保存、アクセスできるサービスです。 CloudWatch Logs に出力するログ形式 結論から言うと JSON 形式にしておくと、検索や分析する際に楽です。 今回はチャットツールのログを例として、ログが JSON 形式でない場合と JSON 形式である
はじめに こんにちは。いかりがわです。 普段はニフティトップページの開発運用を行っています。 このプロダクトの裏側ではGoで記述されたLambda関数がいくつか動いています。 公式からLambda関数についてメールが届きました。どうやらLambda関数のGoランタイムサポートが2023/12/31にサポート終了するらしいです。
はじめに こんにちは、ニフティ株式会社 基幹システムグループの小倉です。今回は、業務で扱うことの多いPython開発環境に対して、個人的に快適でモダンな開発環境を考えてみたので、共有しようと思います。 使用するツールについて
こんにちは!ニフティ株式会社の上原です。 個人的にRustという言語にハマっており、社内でもRustを学ぶ勉強会を主催しています。 プログラミング言語を学習する際にはまずは書籍を買って勉強される方も多いと思うのですが、お金がかかってしまいます。 Rustは入門者向けのWeb上の資料が充実しているため、書籍を買わずとも学習することができます。 ここでは無料で見られる教材についていくつかご紹介します。 教材 Tour of Rust Rustで出てくる概念の説明とソースコードが例示され、実際にコードを手元で実行することができる教材です。 私はいきなりThe Rust Programming Language(後述)から始めてしまったのですが、まずはここから始める方が良かったかなぁと思いました。 ローカルにRustの開発環境を整えることなく、ブラウザ一つあれば気軽に学習を進めることができることか
N1! Machine Learning Product Engineerの中村です。 最近は自然言語処理がかなりのブームになっており、弊社でもNotion AIなどでブログ記事を書かせるような不届者が多数出ているとの噂です。自分も最近はOpenAIのAPIなどを検証しているのですが、大規模言語モデルは手元で動かせないモデルが多く存在します。(大量のGPUが必要など) しかし、最近登場したFlexGenを使うことで、1GPUで大規模言語モデルを動かせるとの噂です。 今回はこのFlexGenを使ってMeta社のOPTという大規模言語モデルを動かしてみます。 https://github.com/FMInference/FlexGen https://arxiv.org/abs/2205.01068 FlexGenとは FlexGenは、大規模言語モデル(Large Language Mode
この記事は、ニフティグループ Advent Calendar 2022 8日目の記事です。 はじめに こんにちは!会員システムグループの渡邊です。普段はニフティトップページの開発運用を担当しています。 今回はニフティトップページでも採用しているNext.jsを使ったサイトの表示速度を改善する方法について紹介します。 実行環境 MacBook Pro(M1、2021) macOS v12.6.1 Next.js v13.0.6 next/image 画像ファイルはウェブページ全体のバイト数の半分を占めると言われるほど、ページを読み込むときに負荷がかかる部分です。 こういった問題を解決するために画像サイズを縮小させるTinyPNGなどのサイトを使ったり、軽量な画像フォーマットに変換するという作業を行うことがあると思います。 Next.jsでは、next/imageと呼ばれるコンポーネントを呼び
この記事は、ニフティグループ Advent Calendar 2022 10日目の記事です。 はじめに こんにちは!インフラシステムグループの仲上と申します。 今回は、Slackでインタラクティブなリマインダーアプリを作成したので、紹介したいと思います。 背景 突然ですが、皆さんはSlackを使っていますか?Slackには優秀なリマインダー機能があり、繰り返し設定や日付時間指定、リマインド相手など細かいところまで設定することができます。 しかし、こちらの機能はコマンドの構文を覚えるのが大変です。特に繰り返し系のコマンドは少し複雑なので、覚えるまで苦労します。(英語ができれば自然と書けると思いますが、筆者は英語が全くできません!) また、忙しいタスクの中で、コマンドを打ってリマインダーをセットするのは大変ですよね。 そこで、Slackのショートカットから呼び出せるインタラクティブなアプリを作
2022年11月2日に スクラムマスターが「チームのお母さん」にならないための方法 というタイトルで women developers summit に登壇させていただきました。 外部イベントでは初めての登壇だったのですが「わかりやすかった」「スクラムをやっていなくても参考になった」という意見もいただけて、登壇してよかったです。 この記事では、登壇で話した内容と、その補足をしていきたいと思います。 スクラムマスターが「チームのお母さん」にならないための方法 自己紹介 ニフティでスクラムエバンジェリストに任命されている西野香織と申します。 このN1! の中で使える費用で、アドバンスド認定スクラムマスターも取得させてもらっています。 写真で掲げている本「ニフティのスクラム」PDF版が以下から無料DLできます! ニフティのスクラム:ニフティ – 技術書典マーケット 登壇を希望した背景 今回公募枠
はじめに こんにちは。ニフティ株式会社に入社して新卒四年目の佐々木です。 今回は、業務で触れる機会のあった「NextAuth.js」について紹介したいと思います。 この記事の内容 NextAuth.jsの特徴 NextAuth.jsの実装方法 NextAuth.jsとは NextAuth.jsとは、Next.jsで認証機能を実装するためのライブラリです。 特徴 NextAuth.jsの特徴としては以下になります。 セッションデータの保存をデータベースなしでも使用できる サーバーレス環境向けに設計されている(それ以外の環境でも利用はできる) デフォルトの設定でセキュアになるように設計されている ログインのセッションについては、データベースを使用せずにJWTで管理することができます。 例えばユーザー情報をアプリケーション側に保持しなくても良い場合は、「ログイン機能のためにデータベースを用意する
2018年5月に中途でニフティに入社し、以来 @niftyメール の開発、運用を担当しております。具体的には、メールデータを保存するオンプレの分散オブジェクトストレージシステムの運用から、Webアプリケーションの開発〜運用まで幅広い業務に従事しています。 よく鍛えられた Mr.Children のファンでもあり、2022年5月10日はお休みをいただいて彼らのデビュー30周年をお祝いしに 30th Anivversary Tour が催される東京ドームへ赴いておりました。 (しかしながら厳選なる抽選の結果、チケットはご用意していただけず…。) さて、今回は直近の @niftyメール関連のサービス開発で利用した技術スタックの一部である、pydantic ついてお話したいと思います。 pydanticとは Python 製ライブラリで、Python の型アノテーションを用いてデータのバリデーショ
最近カービィシリーズの動きが活発で嬉しい 会員システムグループでエンジニアしている石川です。 弊社にはDWHのBIツールとして5年ほど前から使っているRedashがあります。 公式のAMIから作ったEC2単体構成で立ち上げてから、v1からv7までアップグレードしたりスケールアップで負荷に対応してきました。 v8からDocker必須となり移行が手間でアップグレードを見送っていたのですが、利用者も増えてきたのでちゃんとしようと思い 今回ECS Fargate構成にしてv10までのアップグレードを行いました。 構成図 可用性はそこまで高くする必要はないので、拡張性は担保しつつもシングルAZ構成。 安く組みたいのでAuroraではなくRDSを利用しています。 Fargate化とアップグレード手順 Redashの移行に関してDBデータ移すだけでいいため、まずFargate化から行いました。 Farg
はじめに N1! Machine Learning Product Engineerの中村です。 普段はニュースサイトやアプリのバックエンド開発を担当し、その他機械学習をプロダクトに実装することを目的としたスペシャリスト(ニフティにはN1!というスペシャリスト制度があります)としても活動しています。 https://recruit.nifty.co.jp/interview/nakamura.htm 本記事では、現在検証中である自然言語処理のためのHuggingFaceモデルをSageMakerにデプロイする手順を説明します。 SageMakerを使用することで、インスタンスタイプ変更やスケーリング、Lambdaなどと組み合わせたWebAPI化も可能なため、機械学習プロダクトの開発が楽に行えます。 注意 この記事ではSageMakerへのデプロイを目的としているため、自然言語処理モデルの具
WEBサービス開発グループ2年目の松居と、同グループ1年目の久保田です。2人共@nifty不動産の開発を担当しています。 本記事は2人の共同執筆です。 以前、社内コードレビュー実施についての記事(ニフティでもコードレビュー会をやっています)を公開しました。 今回は、実際にどのようなコードレビューが行われているか、iOSアプリ開発での例を紹介していこうと思います! 長文にはなりますが、お付き合いいただけますと幸いです! ①コミットメッセージは「なにをどのように変更したのか」を書こう 初歩的なことですが、非常に重要なことだと思います。が、1年目の私はそれすらも意識せずに雑なコミットメッセージを書いていました。 こちらです。 ひどいですね。 このコミットでは何を修正したんでしょうか? これに対していただいたレビューがこちら。 「打ち消すことを考えた粒度」で、「伝わるコミットメッセージ」をしっかり
WEBサービス開発グループの堀です。 前回から随分と間が空いてしまいましたが、今回はYocto Projectのカスタマイズ方法についての紹介です。 カスタマイズ用にレシピ(メタデータ)を作成する方法もありますが、手軽にできるビルド用ディレクトリ配下にある「bblayers.conf」「local.conf」に追加したいパッケージなどを記述する方法でwifiやbluetoothが使用できるRaspberry Pi Zero W用のカスタムイメージを作成してみます。 ビルド環境を準備する 前回と同じ内容になりますが、Yocto本体とmeta-raspberrypiをgitで取ってきてビルド環境を準備します。10/26に新バージョンrocko(2.4)がリリースされていますが、引き続きpyroを使用します。(まだビルドがいくつか通らないところがあって様子を見ています)
こんにちは。WEBサービス開発グループの中野です。 Elasticsearchでは、今後のバージョンアップで typeの段階的な廃止 が予定されていますが、従来 joinクエリ(has_child や has_parent)は複数のtypeを利用する前提の機能となっていました。 今回は、このtypeの仕様変更後にjoinクエリを利用する方法を確認したいと思います。 typeの段階的な廃止 ドキュメントでアナウンスされている内容を確認すると、今後の変更は次のような流れで進められていくようです。
こんにちは。引き続きOJT中の増田(ますた)です。 今回は、Ansibleでhttp経由のgit cloneをさせて各サーバに資産配布をする方法を紹介します。 Ansibleとは、chefなどと同じOSSの構成管理ツールです。設定ファイルはYAMLで書きますし、プラグインも豊富なので誰でも簡単にサーバの構築を自動化することが可能です。資産の配布の方法は様々あると思いますが、今回はgitから資産配布をする方法を書いていきます。 普通gitをhttp,httpsで経由する場合、ユーザ名とパスワードを毎回聞かれます。ですので、Ansibleでそのまま実行をしようとするとエラーが発生します。それを回避するための方法を書いていきます。 今回やりたいことのイメージ図 実際にやってみた 方法としてはgit-credentialやnetrcを利用する方法もありますが、これらをAnsibleで使用するなら、
こんにちは。WEBサービス開発グループの中野です。 業務ではWEBサービスの検索基盤を担当しています。 ニフティのWEBサービスでは、一部サービスのサイト内検索やログ可視化などで Elasticsearch を利用しています。 Elasticsearch は Elastic社の提供する分散型の検索エンジンで、検索・集計・分析はもちろん、可視化の Kibana を初めとした強力な周辺ツールが魅力的です。 また、Apache Solr などと同じく Apache Lucene をベースとしています。 今回は、Elasticsearch 5.3 から追加された Field Collapsing 機能を使ってみたいと思います。 Field Collapsing はその名のとおり検索結果を「折りたたんで」くれる機能で、検索結果をグルーピングして SQL の GROUP BY のような操作をすることが
11/13 【日経×ニフティ×アンドパッド】モバイルアプリでつなぐ現場と暮らし〜情報が“届く”を再設計する〜 に当社エンジニアが登壇いたします 【11/11 (火曜日) 12:00~13:00 オンライン開催】Maker Faire Tokyo 2025 After NIFTY Tech Talk #25を開催します!
このページを最初にブックマークしてみませんか?
『NIFTY engineering - ニフティ株式会社のエンジニアたちのいまを伝えます』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く