Skip to content

Commit 4cb8168

Browse files
authored
Add published date (#21)
* tmp * bump theme * fetch metafield * find ID of metafield * use en handle * show published day * adjust layout of blogs
1 parent 9422fc1 commit 4cb8168

14 files changed

+364
-208
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ LINT := yarn theme-lint
55
BZL := yarn bazelisk --
66
BZL_BIN := $(shell npx bazelisk info bazel-bin)
77
VERSION := $(shell cat content/.version | tr -d '\n')
8+
ONIX_FILE := ""
89

910
.PHONY: deploy/theme,deploy/contents,watch,download/theme
1011

@@ -22,7 +23,7 @@ download/contents: $(MD_FILES)
2223
--config $(PWD)/config.yml
2324

2425
import: $(GO_FILES)
25-
$(BZL) run //onix/cmd -- --input $(PWD)/onix/20201208.onix
26+
$(BZL) run //onix/cmd -- --input $(PWD)/onix/$(ONIX_FILE)
2627

2728
watch:
2829
$(TK) watch --dir theme

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,9 @@ $ make deploy/theme
1111
```sh
1212
$ make deploy/contents
1313
```
14+
15+
## 商品情報のインポート
16+
17+
```sh
18+
$ make ONIX_FILE=20201208.onix import
19+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
この記事は [Feedforce Advent Calendar 2020](https://adventar.org/calendars/5560) の 10日目の記事です。
2+
3+
昨日はkano-eさんの「 [2020年のフィードフォース ボドゲ部について](https://ff-boardgame.hatenablog.com/entry/2020/12/09/084644)」でした。
4+
5+
kano-eさんはよくお菓子をくれます。
6+
7+
## 前置き
8+
9+
このサイトを運営している私こと小飼は、2020年末現在株式会社フィードフォースに所属しており、この記事は同社のアドベントカレンダー参加記事となっています。
10+
11+
会社関連の話と言って良いのかどうか、個人で始めた洋書の輸入販売のECショップの話をさせてもらおうと思います。
12+
13+
## なぜ
14+
15+
私は株式会社フィードフォースというWebマーケティング関連の企業でエンジニアを拝命しています。
16+
17+
最近は縁あって新規事業開拓の班に所属させてもらい、夏頃からShopifyというe-commerce SaaSで使えるアプリの開発をしております。
18+
19+
### 想像から始まる開発
20+
21+
記事執筆時点でフィードフォースが直接運営しているショップは存在しませんので、アプリのアイディアは「マーチャントはAで困っているのではないか」ということから発想しています。
22+
23+
発想したアイディアが実は全く求められていないものだった、ということが起こらないような [メソッド](https://amzn.to/2VP5YXY) は実践しているのですが、 仮想の中で考えているに過ぎないという「足りなさ」を感じることがあります。
24+
25+
この足りてなさを埋めるために自分のショップを持ってみたかった、と言うのが根底の動機です。
26+
27+
### 身銭を切ること
28+
29+
それだけなら業務としてやれば良いようなものですが(実際にそういう企画はよく立ち上がっています)、 自分で身銭を切ったショップなら業務上適切でない施策にも気軽に取り組めます。
30+
31+
(労力を割く意義の薄いアプリの開発など)
32+
33+
実際にやってみて分かったのですが、ECサイトの運営は個人開発のアイディアの元としても結構よく使えるので、個人開発で作るものが思いつかないという向きにもオススメです。
34+
35+
(ないと不便だけど公共のアプリとして一般化するのは難しいようなアイディアが必ず出てくる)
36+
37+
## なにを
38+
39+
ショップを持つと決めたら、次に考えるのは「何のショップを出すのか」です。
40+
41+
### Tシャツやマグカップ
42+
43+
身銭を切るからということもありますが、本当に売るつもりのあるものでなければショップを持つ意味がありません。
44+
45+
すぐに思いつくのはTシャツやマグカップ、アクリルスタンド、缶バッジなどのプリント商品などですが、これらは供給がコモディティ化し切っている商材だけに、プリントするものに訴求力がない限り勝負になりません。
46+
47+
### 他人より少しだけ詳しいもの
48+
49+
次に考えるのが、自分が他人より知っている商材はないのかということです。
50+
51+
私は社内の共有会などで技術書の紹介をすることが多く、特に洋書になるとほとんど紹介する人がいないことに気づきました。 つまり技術書なら多少なりとも他人より詳しい可能性があるわけです。
52+
53+
しかも本は元々好きなので、本の販売なら熱意を持って取り組める気がします。
54+
55+
## どうやって
56+
57+
テーマに出来そうな商材の候補が出てきたので、簡単に調べてみます。
58+
59+
はっきり覚えていないですが「洋書 販売 仕入れ」などで検索すると、なつかしの [教えて!goo](https://oshiete.goo.ne.jp/qa/7864509.html) に回答が付いていました。
60+
61+
> 「海外の出版社と直接取引出来ないかと思っているのですが、無理でしょうか?」これを聞くような根性では起業も開業も駄目なのですよ。
62+
63+
なかなか手厳しい回答が付いていますが、一理あります。
64+
65+
### 出版社への問い合わせ
66+
67+
早速これはと思う数社に問い合わせてみると、 [出版取次と呼ばれる業者](https://ja.wikipedia.org/wiki/%E5%87%BA%E7%89%88%E5%8F%96%E6%AC%A1 "出版取次とは") を紹介されます。 (大体どこの出版社にも、問い合わせフォームに仕入れ関連の選択肢がありました)
68+
69+
![](https://cdn.shopify.com/s/files/1/0512/0091/7703/files/Can_I_purchase_your_books_in_bulk_480x480.png?v=1607516496)
70+
71+
そう言えば和書でもトーハンや日販の名前を聞いたことがあります。
72+
73+
### 出版取次 Ingram Content Group
74+
75+
早速紹介されたIngramという会社に問い合わせてみると、アカウントを作れとのこと。なんでもtoBのECサイトのようなものがあり、個人事業主・企業を問わずそこから仕入れているそう。
76+
77+
後から知ったのですが、Ingram Content Groupというその会社は、出版関連のあらゆるサービスを取り扱っており、書店向けECサイト以外にも、出版社向けのDAM、著者向けのCMS、物流、教育などのアプリケーションを提供しているようです。
78+
79+
[サービスの紹介動画](https://www.ingramcontent.com/retailers/ordering/ipage)
80+
81+
`00:50` くらいから、そのECサイトのUIが見れます。
82+
83+
Easy To Useという主張には意義を唱えたいような気もしますが(昔のECサイトっぽい)、膨大な量の洋書を取り扱っているようで、ザッピングしているだけでもかなり楽しいです。
84+
85+
ともかく、このiPageというサービスにアカウントを作ってクレジットカードを登録すれば、洋書の仕入れが出来るようです。
86+
87+
出版社からの返事やiPageへのクレジットカードの登録後のverification(人間がやっている様子)の待ち時間にShopifyのストア構築を進めておいて、週末だけで洋書の輸入販売ショップが完成しました。
88+
89+
それがこのサイト、 [今見てもらっているこのサイト](https://k9bookshelf.com) です。
90+
91+
(このブログポストは、Shopify備え付けのブログ機能でそのショップの中のコンテンツとして書かれています)
92+
93+
> [View this post on Instagram](https://www.instagram.com/p/CIAEHTXg9hi/?utm_source=ig_embed&utm_campaign=loading)
94+
>
95+
> [A post shared by chawanmale (@iamchawan)](https://www.instagram.com/p/CIAEHTXg9hi/?utm_source=ig_embed&utm_campaign=loading)
96+
97+
最初の仕入れ品が到着して興奮する様子
98+
99+
ところで [k9bookshelf](https://k9bookshelf.com) という屋号は、犬(k9)と本棚(bookshelf)という好きな単語を組み合わせただけのものなので深い意味はないのですが、 先日仕入れの国際便が届いた時に宅配業者の方に「ケーキューブックス?」と読まれて若干赤面しました。
100+
101+
(犬のk9なので、 [ケーナイン](https://www.youtube.com/watch?v=Omz0CyPe5-8) と読んで欲しい)
102+
103+
## 開店後
104+
105+
店の中核である商材の目処が付いたので、周りも固めていきます。
106+
107+
### 商品以外に必要なもの
108+
109+
まず、ECサイトなので当然発送をしますから、発送用の梱包を手配します。
110+
111+
[Amazonで書籍を購入した時に使われているような梱包](https://amzn.to/3lUIpYg) がAmazonで買えます。 メタっぽい構造で興奮しますね。
112+
113+
書籍なので保管の上で湿気は厳禁ですから、 [保管用の箱](https://amzn.to/2IvZQkl)[脱湿剤](https://amzn.to/2VYTVaq) も手配します。 (ドロップシッピングのオプションもあったのですが、取扱量の下限が高めだったのでやりませんでした)
114+
115+
この辺、全然見当違いのものを買っているかも知れないので、若干不安です。
116+
117+
とは言え、これで一応本屋の体裁が出来てきました。
118+
119+
あとはぜひオススメしたいような書籍を見繕って並べていくだけです。
120+
121+
### ノー・ノーコード
122+
123+
仕入れた書籍の商品データをShopifyのショップにインポートするのが結構面白い開発アイディアになったので、いずれその記事も書きたいと思っています。
124+
125+
社内の日報でもよく書いていたのですが、書誌情報のフォーマットは種類が多く(10種類近いフォーマットでダウンロード出来る。。。)、中々に闇の深い領域のようです。
126+
127+
私は一番情報量が多そうなOnix for books 2.1というフォーマット(2012年!に3系への強い移行勧告が出ている)を使って商品データを作成しています。
128+
129+
XMLに書誌情報のためのタグや属性が決められているといったフォーマットで、 [インポートツール](https://github.com/kogai/k9bookshelf/tree/main/onix) を自作しています。
130+
131+
## まとめ
132+
133+
このサイトを始めたきっかけや、始めるにあたっての準備などをツラツラと書きました。
134+
135+
最後にいくつかオススメしておきたい本を並べておきます。
136+
137+
- [Introducing Python](https://k9bookshelf.com/products/introducing-python-modern-computing-in-simple-packages)
138+
- アドベントカレンダー7日目の [データ分析チーム内でPython勉強会を始めた話](https://meihong.work/computer/python/python-workshop-with-data-analysis-team/) で題材にされている教科書の最新の版です。
139+
- [Exercises for Programmers 57 Challenges to Develop Your Coding Skills](https://k9bookshelf.com/products/exercises-for-programmers57-challenges-to-develop-your-coding-skills)
140+
- 問題集的な書籍は、電子版より物理版の方が使い勝手が良さそうです。書き込めるし。
141+
- [The Maker’s Guide to the Zombie Apocalypse](https://k9bookshelf.com/products/the-makers-guide-to-the-zombie-apocalypse-defend-your-base-with-simple-circuits-arduino-and-raspberry-pi)
142+
- ゾンビアポカリプスにはArduinoやRaspberryPiで作った早期警戒システムで対抗しましょう。国際物流が生きている内に各種資材を入手しておくようにという注意書きがあります。
143+
- [Programming Webassembly with Rust](https://k9bookshelf.com/products/programming-webassembly-with-rust)
144+
- RustでWasmに入門しましょう。WASIに昇華されたブラウザ外のWasmランタイムについて紙面が割かれています。まだ和書ではあまり取り上げられていないジャンルです
145+
146+
以上です。
147+
148+
洋書で勉強会を催したいという要望には積極的にお応えしたいと思っていますので、何かあればご連絡下さい。
149+
150+
---
151+
152+
明日はsukechannnnの「今年1年の振り返り的な何かを書きたい」です。
153+
154+
お楽しみに!
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
こんにちは。
22

3-
趣味で [マーチャント](https://k9bookshelf.com) をやっているものです
3+
[趣味でマーチャントをやっている](https://k9bookshelf.com/blogs/development/how-and-why-running-bookstore) ものです
44

55
この記事は [Shopify開発を盛り上げる(Liquid, React, Node.js, Graph QL) Advent Calendar 2020](https://qiita.com/advent-calendar/2020/shopify-liquid) の11日目の記事です。
66

7-
昨日は [benzookapi](https://qiita.com/benzookapi) さんの[placeholder]でした。
7+
昨日は [benzookapi](https://qiita.com/benzookapi) さんの [Shopifyアプリ公開パーフェクトガイド:アプリエコシステムに上手に参加する方法](https://www.shopify.jp/blog/partner-app-store-publishing-guide) でした。
88

9-
12月4日にも社内ブログで書いた記事を載せて頂きましたが、枠がまだ空いているようですので、今日はプライベートで作ったShopifyアプリについてお話したいと思っています。
9+
[12月4日にも社内ブログで書いた記事を載せて頂きました](https://developer.feedforce.jp/entry/2020/12/04/100000)、枠がまだ空いているようですので、今日はプライベートで作ったShopifyアプリについてお話したいと思っています。
1010

1111
## この記事でお話するツール
1212

@@ -32,20 +32,17 @@
3232

3333
また本業のプログラマーという職業柄、文章を書くには使い慣れたテキストエディタを使いたいという気持ちもあります。
3434

35-
Shopifyではテーマ開発用ツールとして [theme-kit](https://github.com/Shopify/themekit) が提供されており、
36-
Shopifyで編集したテーマファイルをダウンロードしたり手元のエディタで編集したものをアップロードすることが出来ます。
35+
Shopifyではテーマ開発用ツールとして [theme-kit](https://github.com/Shopify/themekit) が提供されており、 Shopifyで編集したテーマファイルをダウンロードしたり手元のエディタで編集したものをアップロードすることが出来ます。
3736

3837
これに近い体験が、コンテンツの管理でも出来ないものでしょうか?
3938

4039
### 既存の解決策
4140

4241
コミュニティを [検索してみると](https://community.shopify.com/c/forums/searchpage/tab/message?advanced=false&allow_punctuation=false&filter=location&location=category:en&q=markdown)、markdownで編集出来るようなアプリをリリースしたというコメントは散見されるものの、デッドリンクとなっているなど、2020年時点でも使える解決策は見つかりませんでした。
4342

44-
幸いShopifyには [Admin API](https://shopify.dev/docs/admin-api) を始めとする、多種多様なAPIが公開されています。
45-
また、リッチエディタで保存された文言は、内部的にはHTMLで保存されているようです。
43+
幸いShopifyには [Admin API](https://shopify.dev/docs/admin-api) を始めとする、多種多様なAPIが公開されています。 また、リッチエディタで保存された文言は、内部的にはHTMLで保存されているようです。
4644

47-
商品情報編集やページ・ブログ記事の更新までAPI経由で操作が可能なので、theme-kitよろしくcontent-kitのようなツールが書けそうです。
48-
(と言うか、この記事は [content-kitと名付けたその自作ツール](https://github.com/kogai/k9bookshelf/blob/main/content/README.md) で更新しています)
45+
商品情報編集やページ・ブログ記事の更新までAPI経由で操作が可能なので、theme-kitよろしくcontent-kitのようなツールが書けそうです。 (と言うか、この記事は [content-kitと名付けたその自作ツール](https://github.com/kogai/k9bookshelf/blob/main/content/README.md) で更新しています)
4946

5047
## ツールの構成
5148

@@ -54,24 +51,21 @@ Shopifyで編集したテーマファイルをダウンロードしたり手元
5451
- [Private App](https://help.shopify.com/en/manual/apps/app-types#private-apps) でショップへのアクセス権限を取得
5552
- [Admin API](https://shopify.dev/docs/admin-api)
5653
- [GraphQL API](https://shopify.dev/docs/admin-api/graphql/reference/common-objects/queryroot/index)
57-
- GraphQLのクエリファイルから以下のツールでクライアントを生成
54+
- GraphQLのクエリファイルから以下のツールでAPIクライアントを自動生成
5855
- [https://github.com/Yamashou/gqlgenc](https://github.com/Yamashou/gqlgenc)
5956
- [https://github.com/99designs/gqlgen](https://github.com/99designs/gqlgen)
6057
- [REST API](https://shopify.dev/docs/admin-api/rest/reference)
6158
- ページとブログの更新はGraphQL APIでサポートされていないのでREST APIも併用
6259

63-
Shopifyはドキュメントが非常に充実していて、 [GraphiQLアプリ](https://shopify.dev/tools/graphiql-admin-api) によるインタラクティブな試行環境もあるので、
64-
特に詰まることもなく開発出来ました。
60+
Shopifyはドキュメントが非常に充実していて、 [GraphiQLアプリ](https://shopify.dev/tools/graphiql-admin-api) によるインタラクティブな試行環境もあるので、 特に詰まることもなく開発出来ました。
6561

66-
ページやブログはREST APIの [Goクライアントライブラリ](https://github.com/bold-commerce/go-shopify) でサポートされていませんでした。
67-
この辺りはShopifyアプリではあまり取り扱われないリソースなのかも知れません。
62+
ページやブログはREST APIの [Goクライアントライブラリ](https://github.com/bold-commerce/go-shopify) でサポートされていませんでした。 この辺りはShopifyアプリではあまり取り扱われないリソースなのかも知れません。
6863

6964
### 困ったこと
7065

71-
基本的に開発のための環境は揃いきっているので、困ったことはそれほどありませんでした。
66+
Shopifyには開発のための環境は揃いきっているので、困ったことはそれほどありませんでした。
7267

73-
唯一困ったのは、テーマファイルや他のツール(テーマや書誌情報の規格化されたデータファイルの取り込みツールなど)を同じレポジトリで管理している都合上、
74-
[bazel](https://bazel.build/) でビルドをしているのですが、GraphQLクライアントの生成ツールが依存している `*.gotpl` などのファイルの依存関係が自動生成できなかったことです。
68+
唯一困ったのは、テーマファイルや他のツール(テーマや書誌情報の規格化されたデータファイルの取り込みツールなど)を同じレポジトリで管理している都合上、 [bazel](https://bazel.build/) でビルドをしているのですが、GraphQLクライアントの生成ツールが依存している `*.gotpl` などのファイルの依存関係が自動生成できなかったことです。
7569

7670
Shopify関係ないですね。
7771

@@ -83,14 +77,12 @@ Shopify関係ないですね。
8377

8478
マーチャントとしてPrivate Appで好きにカスタムしながらショップを運営するのは結構楽しいです。
8579

86-
アプリストアに出品されないような一般化しづらい要望を(自分で)すくえるのがいいですね。
87-
流行りのノーコードとは真逆の使い方ですが。。。
80+
アプリストアに出品されないような一般化しづらい要望を(自分で)すくえるのがいいですね。 流行りのノーコードとは真逆の使い方ですが。。。
8881

8982
バイナリを [Releaseページ](https://github.com/kogai/k9bookshelf/releases) に置いておくので、良かったら試してみて下さい。
9083

9184
(HTMLとMarkdownの相互変換で微細な差異が生じることがあります)
9285

9386
---
9487

95-
次回は [ShoheiTai](https://qiita.com/ShoheiTai) さんの「Shopifyアプリの選定・運用ノウハウとか」です。
96-
お楽しみに!
88+
明日は [kskinaba](https://qiita.com/kskinaba) さんの「Ruby:Shopify GraphQL Admin API の使い方」です。 お楽しみに!

0 commit comments

Comments
 (0)