Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

My Contribution to Go (Golang)

Hi, my name is Masanori Ikeda.
Here, I’d like to introduce my contribution to Golang (hereinafter referred to as the “Go”).

Developed Salesforce API Client in Go


pkg.go.dev

I developed a Salesforce API Client in Go.
This library includes all basic features like creating, updating, and deleting records in Salesforce.
I believe this is one of the most modern Salesforce API Clients in the world.
Let me explain why later.

Why I developed Salesforce API Client in Go

I work in the Data Hub group at Sansan.

*If you are interested in the Data Hub, please check this blog.

Before explaining the reason for creating this library, I want to share some news.
Recently, we made a big decision: we are rebuilding the Data Hub.
The current system was built 6 years ago using Azure with C#.
Then, we decided to move it to Google Cloud with Go.

The current system has many problems:

  • The learning cost is high because the code structure is complex
  • It is hard to investigate the impact when adding a new feature to the complex system.
  • Updating the C# version has a big impact, etc...

Go was designed with simplicity in mind.
One big change in our new system is using Go as the main language.
I believe this change will help solve many problems.
(Of course, there are many things to do besides just changing the language.)
Since our product will use Go, I decided to learn it and contribute to the Go ecosystem.

The reason for creating a new Salesforce API Client in Go instead of creating pull requests to existing ones

Actually, a Salesforce package my team is building won the Salesforce Japan Partner Award 2025.
One of my strengths is Salesforce development, so I wanted to contribute a Go library for Salesforce.
When I looked at existing Salesforce API Clients, they felt outdated.
For example, they didn’t support modern authentication or asynchronous processing.
Also, the Go community still seems young. In March 2025, the most popular Salesforce API Client in Node.js had 1,400 stars, but the top one in Go had only about 100.
The existing libraries looked old and not popular...
So I simply thought, “Okay, I’ll build a better one from scratch.”

Why I can say this is one of the modern Salesforce API Client in the world

I believe this library is one of the most feature-rich among Salesforce API client libraries.
Here, I’d like to explain two important features that only this library has.
(I didn’t check all libraries, but the top-starred one didn't have them at that time.)

The first feature is client credentials authentication.
Most libraries only support the password flow, which is an old method.
Salesforce says it is not recommended to use anymore (reference).
So, I implemented Client Credentials authentication.
With it, systems can authenticate in a more secure way (sample code).

The second feature is an asynchronous process to retrieve large amounts of data.
In Salesforce, it's common to have over 1 million records in some objects.
A single REST API query can return only up to 2,000 records per response (reference).
So, I implemented an async process.
With this, you can retrieve many records using simple code (sample code).


We are The Tech Company!

A surprising thing happened—the day after I shared this library with the Data Hub group, our CTO, Sasakawa-san, made a pull request to my personal project right away.
Also, King-san and Haga-san made one too.
I think this shows that everyone loves and has passion for technology.
By the way, I also organized a workshop to learn our new main language, Go, using my library.

At Last

In Data Hub, we still have many things to do.
To move forward, we need great engineers who have the passion like us.
If you’re interested, please apply for the positions!

media.sansan-engineering.com

www.corp-sansan.com

Oh, one more thing—
Don’t forget to star my library!

github.com


Byebye.

© Sansan, Inc.