Help us understand the problem. What is going on with this article?

e-Gov API に対応した gem 「kiji」を公開しました

More than 3 years have passed since last update.

公開しました!

logo_kiji.png

なにそれ

e-Gov という総務省の運営する電子申請の窓口がある。
社会保険や労働保険関連の手続きを Web 上から簡単に行うための窓口だ。
これまでは役所に行って、用紙を貰って、書いて、印鑑押して、また役所に持ってく、というアナログかつ面倒だった手続きを Web 上から行うことができる。

一見便利そうなのだけれども、Windows + IE のみ対応だったり、Java プラグインのインストールが必要だったりで、結局あまり使われていなかったりする。

そこで昨年、e-Gov は API 仕様を公開し、ソフトウェアベンダ各社のクライアントから直接この手続を行えるようにした。実運用はまさにこれから。

外部連携API仕様公開(ソフトウェア開発事業者の方へ)|電子政府の総合窓口e-Gov イーガブ

kiji 公開の意図と経緯

e-Gov 外部連携 API の仕様自体は去年秋ごろに公開されていたのだけれども、

  • API の存在自体があまり知られていない
  • 個人でこの API 使う開発者は(たぶん)いない
  • 企業の開発者は情報出しにくい
  • そもそもこの API 使う企業が少ない

という状況で、開発者発信の情報が見つからず、なんとかしたかった。

API 仕様が公開されたことは素晴らしい。けれども中身は大量の PDF と Excel だ。
リクエストには署名付き XML が利用される。レスポンスも JSON ではなく XML だ。

こんなのや
SS 2015-05-11 11.02.05.png

こんなの
SS 2015-05-11 11.02.33.png

よく訓練された元 SIer(私だ)は既視感とともに軽いノスタルジーを覚えた。

経緯

e-Gov API を知る

疎通できた

愚痴る

開き直る

日本のどこかにいる同じような境遇のエンジニアと知見の共有ができると嬉しい。

kiji の使い方

利用者 ID 登録

p12 = OpenSSL::PKCS12.new(p12_file, P12_PIN)

client = Kiji::Client.new do |c|
  c.software_id   = ENV['EGOV_SOFTWARE_ID']
  c.api_end_point = ENV['EGOV_API_END_POINT']

  # 証明書 & 秘密鍵の attach
  c.cert = p12.certificate
  c.private_key = p12.key
end

response = client.register("NEW_USER_ID") # => Faraday::Response
xml = Nokogiri::XML(response.body) # => Nokogiri::XML::Document
xml.at_xpath('//Code').text # => 0(正常終了)

利用者認証

p12 = OpenSSL::PKCS12.new(p12_file, P12_PIN)

client = Kiji::Client.new do |c|
  c.software_id   = ENV['EGOV_SOFTWARE_ID']
  c.api_end_point = ENV['EGOV_API_END_POINT']

  # 証明書 & 秘密鍵の attach
  c.cert = p12.certificate
  c.private_key = p12.key
end

# 利用者認証(Access Key の取得 & 設定)
response = client.login("REGISTERED_USER_ID")
xml = Nokogiri::XML(response.body)
client.access_key = xml.at_xpath('//AccessKey').text

一括申請

p12 = OpenSSL::PKCS12.new(p12_file, P12_PIN)

client = Kiji::Client.new do |c|
  c.software_id   = ENV['EGOV_SOFTWARE_ID']
  c.api_end_point = ENV['EGOV_API_END_POINT']

  # 証明書 & 秘密鍵の attach
  c.cert = p12.certificate
  c.private_key = p12.key
end

# 利用者認証(Access Key の取得 & 設定)
response = client.login("REGISTERED_USER_ID")
xml = Nokogiri::XML(response.body)
client.access_key = xml.at_xpath('//AccessKey').text

# 一括申請
file_name = 'apply.zip'
encoded_data = Base64.encode64(File.new("data/#{file_name}").read)
client.apply(file_name, encoded_data)
kakipo
コンピューターサイエンス、IT コンサルティング、SI をバックグラウンドとし、 アプリケーション開発を強みとしています。
https://twitter.com/kakipo
smarthr
社会の非合理を、ハックする。
https://smarthr.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした