2019-12-25に投稿

書いた本が出版されました「個人開発のための Webサービス公開マニュアル」

12/25に僕が書いた本が出版されました。「個人開発のための Webサービス公開マニュアル」という書籍が秀和システムさんより発売です。

個人開発のための Webサービス公開マニュアル | Amazon

どういった内容か

カバーにも書かれている通り、自分で何かしらのサービスを開発後、どうすればいいか分からない方のために、サービスのデプロイ方法とリリースに関連する色々なことを解説しています。

そのため、サービスの作り方についての解説はありません。ただ、ちょうど利用できる開発物がなくても書籍の内容を試せるようにGitHub上にサンプルプログラムを公開しています。

以下は大まかな内容です。詳しくは公式ページに細かい目次も載っています。

個人開発のための Webサービス公開マニュアル - 秀和システム あなたの学びをサポート

Git、GitHubの利用について

デプロイするためには開発したプログラムをサーバー上のものと同期させる必要があります。そのためにGitHubを利用してリモートリポジトリに登録し、各環境でそれを利用できるようにするための解説を行っています。

デプロイ方法

開発したサービスをHeroku、AWS(Amazon Web Services)、GCP(Google Cloud Platform)にデプロイするための一通りの流れを解説しています。利用しているサンプルアプリケーションはPHP + Laravel、Ruby on Rails、Nuxt.js + Firebaseの3種類です。

最初に企画を聞いた時、なるほどと共感しました。というのも色々な記事やマニュアルを見ながらはじめてサービスを開発する、というのも結構大変です。せっかくそこまでやったのに、いざデプロイしようとするとそこにLinuxというまた新たな種類の厚い壁が立ちはだかっており、調べてみても何がなんだか分からず挫折する……ということはわりとあるのではないかと元々感じていました。もちろん頑張ってやればできるのですが、最初はハマったりすることも多くかなり大変で、初めての人には酷すぎるのでは……と思わされる側面もあります。それを解決できる書籍があるのであればたしかに有益そうだという共感はできました。

もちろん最近はHeroku等のようにインフラを理解していなくても簡単にサービスをリリースする方法もあるため、その代表の一つとしてHerokuも書いておきました。他は書籍を読んだ中で色々各々がもっと良いものはないのかなと探してみて、また気になったものを見つけて調べていく、という流れができると良さそうかなと思いました。

リリース後のこと

デプロイして一般公開した後に、導入しておいた方が良いサービスや、やっておいた方が良いことを思いつく限り書いています。

あくまでも僕の経験にともなった内容ですので、このあたりを知り尽くしている人からすると物足りないのかもしれません。しかし自分自身いくつもサービスをリリースしてきた中で「もっと早く知っておけばよかった」と思ったことがたくさんありました。そういうものをとにかく書いているので、初めての人は一読していただけると、同じようにもっと早く知りたかった、ということを減らすことができ、何も知らないよりは効率的なリリースができるのではないかと思います。

書いていないこと

他にも色々と書いておきたいことはあったのですが、基本的に仕事の時間以外でなんとか時間を作って必死に書いていたため、十分な時間がなく全てを書くことはできませんでした。かといってゆっくり時間をかけて全部を書き切ろうと思うと、情報の鮮度が失われてしまいます。実際に、書いている間にLaravelのバージョンが6になってしまったり、AWSのコンソールが変わってしまったりしていました。

恐らく本当に全部をきっちり最適な期間で書こうと思うと、専業で本を書いているくらいの感じでないと厳しそうな気がしました。とはいえそうすると執筆者にもそれなりの固定収入が必要になってくると思うのですが、出版社側が全ての本に対してそのように収益を約束することは難しいと思いますし、現実的ではなさそうだなと思いました。なかなかこのあたりは業界の色々な苦悩が入り混じっていそうに感じました。

ですのでできることとしては、やはり時間を決めて可能な範囲でしっかりできることを思い切りやる、というところなのかなと思いました。そんな感じで書いていたので、書けなかったものもありました。

その他のデプロイ方法

今回はHeroku、AWS、GCPのデプロイ方法のみになります。他にも簡単な方法やはやりの方法があり、例えばGCPでいえばGAEやCloud Run、AWSでいえばECSなども書ければ本当は良かったのかなと思いました。また、Nuxt.jsの場合はNowあたりも書きたいと思ったのですが、丁度NowにNuxt.jsはデプロイできない、からできそう、に変わった時期だったのもありますし、単純に時間がなかったというのもあり書くことができませんでした。

このあたり、ゲームの追加アイテムのような感じで、有料記事とかで書けたら面白いのかもしれませんね。たまたまなんですがこのCrieitの有料記事機能がある程度完成しそうになっていますし。

Dockerを使ったローカル開発

ローカル開発についても書いているのですが、このあたりは各々の読者によって使っているOSもバージョンも違いますし、あらゆるものを想定して書く、ということがさすがに不可能でした。

そのため環境に関係なく利用できるDocker(もしくはVirtualBox等)によるローカル環境構築も解説できればと思いましたがさすがにDocker自体の説明から始めるのはちょっと厳しそうでしたし時間も足りなそうでしたので断念しました(Dockerのインストール自体も古いOSなどを考慮すると解説すべき内容が増えてしまいそうでしたし)。

今後こういった場合はVSCode Onlineのようなものがしっかり整って、それを利用してもらう想定で解説できるようになっていくと、誰でも環境の違いに関係なく一つの説明ですむため良さそうかなと思いました。

細かいエラーの対処方法

サンプルプログラムをデプロイできるようにするところまでは頑張ってきっちり書いており、実際に編集の方にも試して頂けたのですが、自分で作ったアプリケーションの場合は使っているライブラリやそれに伴う設定方法が異なっていたりするため、それらによってエラーが出る箇所や状況が異なっていたりします。そういったものを解決する細かい方法などはやはり書けていません。

このあたりのエラー対応方法やそれに対応する姿勢なども書ければよかったのですが、このあたりはエラーメッセージを読みながら実際に試行錯誤していく必要があります。たまたま執筆時の確認中に見つけたものなどは書いたりはしているのですが。

思ったこと

今更当たり前の話だとは思うのですが、本にはページ数に限りもありますし、前述の通り書ける量にも限りがあります。一つの本でプログラミング言語もフレームワークもインフラもデザインもマーケティングもあらゆることを詳細まで学べる書籍というのは存在しません。

そのため一つの本を読み、その中で気になったことがあってもっと詳しく知りたい、と思ったらインターネットで調べたり、またそれについてもっと詳しく書かれている本を別途読んでみたりして歩みを進めていくものなのだなぁと感じました。本は情報であり、かつ多くの横道がある道なのだと。ボリュームに違いがあるとは言え、このあたりはブログの記事などと同じ様な側面を持っていますね。

その他

あとはどういった経緯で本を書くことになったのか、ということあたりも来月あたりに書こうかなと思っています。もし気になったら Twitterでフォロー していただいたり、このCrieitというサービス内には色々なところにRSSがあったりしますので、RSSリーダーを利用されている方は購読したりしてみていただければと思います。

他にも記事投稿リクエストボードなんかもあったりしますので、もし本を読んでもうちょっとこのあたりも知りたい、ということがあればお気軽に投稿してみてください。

↓気になったら是非購入してみてください

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント