アマゾンのウェブサービスAWSで格安のWindowsサーバーを利用できるようになりました。最近久しぶりにAWSのLightsailの画面をみたら、なんとWindowsの文字があるではありませんか!しかも月10ドルから始められるとのこと。これなら年間でも120ドルで、Windows Server OS付きのサーバーを30万円くらい出してハードウェアで買うよりも圧倒的に安いです。 実際に試してみたのですが、10ドルのコースはメモリーが512MBしかついていないので遅くてちょっと使う気になりません。次に安いコースは月に17ドルでメモリーが1GBです。これも試してみましたがやはりちょっと遅いです。結局標準的なコースは月30ドルのコースで、メモリーも2GBついています。このコースはMS SQL Server 2016 Expressがついてきます。いままでC#やVB.NETとLINQを使ってシステムを構築してきた人には、既存のシステムを活かすうえでも十分に選択肢になるのではないでしょうか? 私の事務所では自作のC#で作ったお客様情報の管理システムがもうかれこれ7-8年動いているのですが、これを機会にオンプレミスのサーバーではなくて、稼働が99.999x%保証されているクラウドのサーバーに移行してみようか検討しています。
Category: システム開発
ウェブサービスを作って公開するところまでこぎつけました。一つのサービスをインターネットで公開できるところまで行くのには、結構な時間と努力がかかります。平日は出勤前の1日1-2時間、土日は合計で7時間くらいやるとして、1週間で15時間、1ヶ月で60時間、最初の頃はそのプログラミング言語の知識レベルもそれほどでもないので時間がかかります。私の場合は、サーバー側とスマートフォン側でそれぞれ3ヶ月はかかったので全部で6ヶ月はかかりました。このウェブサービスだけで合計で360時間はかかっています。それ以前の別の色々な技術の学習にも相当時間を使っていますが、ここにはカウントされていません。 使った言語は、サーバー側では流行りのライトウェイト言語であるPythonを使いました。フレームワークはPythonのでは一番(?)メジャーと思われるDjangoを使いました。Pythonは比較的習得しやすい言語で、モジュールも多く揃っています。最近流行りの人工知能に使う有名なモジュールがPythonで書かれていると言うこともあり、Pythonの本も多く出ています。Djangoはとてもよくできたフレームワークでとてもわかりやすいです。MVCがきちんと別れているので、将来の仕様変更があってもメンテはしやすいのではないかと思います。 プログラムを覚えてウェブサービスを公開するまでには、とても多くのマスターすべきことがあります。この他に、実際にウェブサービスをスマートフォンで使えるようにするには、サーバー側のプログラムを書くだけではなく、スマホ側のプログラミングも必要です。通常これはSwiftと言うiPhone専用の言語や、Androidという専用の言語を使います。私は今回はAndroidの方は諦めて、iPhone用の方だけ書いています。SwiftはDjangoなどのライトウェイト言語に比べて、変数には型指定をしなくてはいけないし文法が厳密です。最初は走らせる前からエラーが出まくるので大変なのですが、実際にコンパイルして動くようになった段階では正体不明のエラーがでる割合が減るので、トータルでは時間効率は良いように感じます。 その他に、サーバーを動かすのにはLinuxと言うOSを使うことが一般的です。私は最初はマシンが手元にある方がメンテナンスが簡単だと思ったので、事務所のMacMiniをサーバーに使う方針でした。でもHerokuとAWSというクラウドのサーバーを試して、その快適さと便利さにびっくりして、AWSを使うことにしました。サーバーも普通にハードを買ったら一つで10万円、2つ揃えたら20万円はかかりますが、AWSならLightsailと言うサービスが月500円から使えます。スピードも十分に速いのでとても快適です。MacMiniは買ってしまったのにほとんど使っていないので、勿体無かったなと思っていますが、事務所のファイルサーバーのバックアップか何かに使おうと思います。 (尾瀬 至仏山 後ろは福島県の飯豊山?) よく、20時間使えば大抵のことは概略くらいはマスターできると言いますが、これはある程度は本当だと思います。20時間使えば、Pythonをインストールして簡単なプログラムが動くところまではできるようになると思います。そして、次に20時間を使えばDjangoのチュートリアルをやって、簡単なウェブサイトが動くようになるところまでは行けると思います。Swiftは20時間では本当に簡単なことしか出来ないともいますが、それでもplaygroundという簡易の実行環境で、雰囲気を掴めるとこくらいまでは行けると思います。 でも、ウェブサービスはこれらを全部使うので、それら全部に20時間が必要です。その他にもデータベースとかデザインとか、実は細かいそれらの技術の多くの技術が全部必要になるので、それらが組み合わされないと動くものにはなりません。それなりに数百時間は必要だと思います。 ただそれでも、技術はやっていれば誰でもそれなりにできるようになると思うのですが、一番難しいのは何を作るかですよ。誰かに使ってもらえなければ、結局何を作っても意味がないです。何を作るかは商品設計そのものなので、世の中で誰がどのようなことに困っていて、それを今の技術を使ってどう解決するかを見極めなければなりません。つい、自分のアイディアが良いと思って固執してしまいがちです。そこが難しいんですよね。そこが。
最近、Node.jsと言うものを触ってみました。まだ、触り始めたばかりではありますが、サーバー側もJavaScriptで動かすと言うのは面白いアイデアではあるなと思いました。 本は私の好きな「クジラ飛行机」さんの「いまどきのJSプログラマーのためのNode.jsとReactアプリケーション」を買いました。この方の本は、出てくるサンプルもきちんと動くし、面白いので、楽しめるし勉強になるのです。 Node.jsとReactをちょっとやってみようと思ったきっかけは、takuyaさんと言うエンジニアの方のブログで面白い記事を読んだからです。 「Markdownエディタを作って月15万円稼ぐまでにやったこと — Inkdrop アイデア探しから最初の売り上げ、集客して成長させるまでの道のり」 この方は、ご自分でMarkdownエディタを作って売ってらっしゃるのですが、この方の採用している技術がReactです。そっか、Node.jsとかReactとかもう十分に実用の段階に入っているんですねー、なんて今更?気づいて、では触ってみようと思った次第です。 Node.js/JavaScriptのいいところはフロントエンドでもJavaScriptを触るので、使う言語が同じになることで、これでフロントエンドも頑張ろうと言うハードルがかなり下がります。Paythonなどの別の言語でサーバー側を書いていると、ブラウザー側でJavaScriptを触るのに言語を思い出さなくてはいけないので、心理的なハードルが一段あるような気がするのですが、その億劫感が無くなります。 あと、これは私の感覚が古いのかもしれないのですが、Pythonでは変数に型指定をしないのでバグが混ざりそうで不安になります。JavaScriptではいちいち変数を宣言する必要があるので、それだけでも少し安心して懐かしい感じがしてしまいます。
人に使ってもらえるウェブサービスを作れるようになるまでは長い道のりです。作るのには技術を覚えたり、実際にコードを書いたりと、結構長い時間がかかります。以前に、簡単なことは20時間あれば出来るようになるというようなタイトルの本がありましたが、実際に動くサービスを作るには、プログラミングを覚えるところから始めるとしたら300時間くらい(一日3時間として100日)くらいは最低限必要と覚悟しておいた方がいいでしょう。多分、実際にはもっともっと必要で、実際にちゃんと動くサービスを世の中に公開してみようとしたら、ちょっとしたものでもきっと1000時間くらい(1日3時間で300日)はかかります。 しかし、それでもプログラミングは、身につけたらその時間を超えてあまりある価値があると思われます。1000時間くらい使ったとしても、元はきっととれてます。ソフトウェアは問題解決の魔法のツールです。どんな大量の計算も高速で、あっという間に、正確無比にやってのけます。近年、騒がれているFintechも、大きな視点でいうと効率化が可能な銀行など金融機関の業務を、安価で大量に正確に処理できるITの技術で置き換えようというものです。ソフトウェアが書けるということは、この魔法のような力を身につけることを意味するのです。 しかも世の中のITの技術の進歩はすごいものがありますから、上手くその技術に乗って使えればアイディア次第で十分に面白いものを作れると思います。ソフトウェアは問題解決のツールです。 今回は会計に関係するウェブサービスを一つ作って世の中に提供してみるまでの経過とポイントと思われるものを簡単にまとめて見ました。 技術を選ぶ・覚える 覚える技術もたくさんあります。沢山あるように見えますが、使っていれば自然に覚えます。とりあえず始めましょう。 とりあえず今の主流なやり方でウェブサービスを作ろうとすると、最低限、サーバー周りでLinux、データベースの使い方(MySQLかPostgreSQL)、サーバーサイドで使う言語(PHP、Ruby、Python、Javaのどれか一つ)、スマートフォンで使えるようにするなら、AndroidかSwift、ウェブ・ブラウザーならHTMLとJavaScript(またはjQuery)を覚える必要があります。 C#とWindows Serverという組み合わせも選択肢としてはありますが、Windows Serverでのサービスを不特定多数の世の中に提供するとライセンス料がかかります。以前デルの人にも手伝って調べてもらったことがあったのですが、どのライセンスが必要でいくらかかるのかわかりにくかった印象があります。しかも、最初は利益が出るかどうかわからないサービスを始めるのに最低でも何10万円ものサーバーライセンスを使うのは、ちょっと現実的ではない気がしました。 しかし、今はAWSでMS SQL ServerとWindows Serverの組み合わせがクラウドで使えます。何十万円というサーバーのハードウェア本体とライセンス料を一括で払う必要がないのでリスクは大分減りましたが、それでも他のLinux OSとデータベースの組み合わせに比べるとずいぶん高い感じがしました。これもそんなに少数派にならなくて良いので、素直にメジャーな流れに合わせておきましょう。 その他に、今はサーバーを自分で買わずにクラウドで使うのが主流です。私はHerokuとAWSを使ったことがありますが、AWSはとても使い勝手が良いように思います。サーバーではE2とストーレッジとなるs3があります。E2はWebサーバーとして使えますが、その他にデータベースをインストールすることもできますし、画像ファイルなどを保存するストーレッジとしても使えます。最近AWSはLightsailという軽量のサーバーを提供し始めました。5ドルで20ギガのSSDのサーバーを使えるのですが、ものすごく早いです。自分で数十万円のハードを買うよりSSDですのでよっぽどスピードが早いです。ですので、最初はLightsailで始めるのが良いと思います。 しかも、インスタンスを何個も立ち上げては消去できるので、インストールに失敗した場合にも、すぐにやり直すことができます。ウェブ・サービスを立ち上げる過程で、サーバーにプログラムを追加していくうちに、エラーを吐いてどうにもならなくなってしまうことがよくあります。新しいサービスを開発するときはどうしてもこのような過程はいくつも通らなくてはならないと思うのですが、サーバーをハードで買ってきてしまうと、一からインストールし直すことになってしまい、時間ばかりかかってしまい、とても大変になってしまいます。モジュールのインストールからやり直しなんてことを何度もやってしまうと、時間ばかりがかかってしまい、スピードが重要なスタートアップ時には自殺行為です。サービスが立ち上がることは、個人の力でもう不可能になってしまうと思います。 私が覚えた言語は、 VB.NET C# Python3 SWIFT Java JavaScript HTML SQL OS周りの使い方も覚える必要があります。 Windows IIS Linux ツール Django Git Subversion その他、きれいな読みやすいコード、メンテナンスのしやすいコードの書き方など。 よく、Rubyがいいか、PHPがいいかなんて論争をやっていますが、私は、RubyやPHP、Pythonであればどれでもいいと思います。RubyにはRubyOnRailsという素晴らしいフレームワークがあります。PHPにはCakePHP、PythonにもDjangoなど数多くの良いフレームワークがあります。どれを使ってもちゃんと動くものはできると思いますが、開発の際にはエラーにぶち当たり続けるので、文献が多いものがいいと思います。日本ではRubyな比較的メジャーですが、海外ではPythonやPHPの方が圧倒的にメジャーです。英語が読めるなら日本であまりメジャーでないけどPythonとDjangoの組み合わせが良いと思います。そのほかに、SQLAlchemyというとても使いやすいORマッピングのツールもDjangoと同時並行で利用できます。 そんなことよりは、Javaなどの静的型付け言語を使うのか、RubyやPythonなどの動的型付け言語を使うのかをよく検討した方がいいと思います。こっちの方がよっぽど後々のインパクトが大きいです。静的型付け言語はコンパイルの段階でエラーを検出してくれるので、バグが早期に発見しやすく、結果としてバグの少ないソフトウェアが作りやすいと思います。PHPやRubyなどのスクリプト言語は手軽に始められるので最初は早いのですが、ソフトウェアを書く時間の半分以上がバグをとる時間だとすると、バグを早期に発見してくれるJavaなどの静的型付け言語の方が結局は効率が良いということも言えるのではないかと思います。 開発の体制 一人よりも複数人がいいように思います。税理士業務をやっていても思うのですが、不在時の突発的な事項に対するバックアップ体制やチェックなど、二人以上の方がサービスに安定感があり、私の経験としては結果的により良いサービスが提供できているように感じます。ソフトウェアも同じだと思うので、何もかも一人でやろうとせずに上手く役割を分担させた方が、良いものがより早く提供できるのではないかと思います(想像です)。 システムは開発していると細かく手がかかります。一人でやっているとそういう細かいところが面倒くさくなってきてしまうので、そういう飽きを防止したり、お互いにサポートしあえるためにも一人アシスタント的な人に手伝ってもらうのが良いのではないかと思いました。 私の考えではアシスタントになっていただこうという人が、最初からそれほど詳しくなくても構わないと思っています。やっているうちに覚えてくるので、なんとかなります。それよりは、人件費が高いからとか、十分な知識のある人が採用できないからといって、ずっと一人でやっていってしまう方が問題だと思います。ずっと一人でやっていってしまうと、ローンチ出来たかも知れないサービスが結局、開発の途中で頓挫してしまい公開できずに終わってしまうという結末になりがちです。余計高くつく事になりかねません。 何を作るか これが一番難しいです。そのうち、まとめて書きたいと思います。
Lightsailというアマゾンのクラウド・コンピューティングのサービスがすごいです。一ヶ月たった550円(5ドル)なのですが、作れるデータベースの数にも制限がなさそうだし、名前も自由につけられます。ですので、ハードを一台丸ごと自分で買うかレンタルするのと同じです。私は今まで予算をケチって事務所にサーバーを置いてきましたが、年に1回くらいビルメンテのための停電があったりして、その度に再起動をしてIPアドレスを割り振り直してなってやってめんどくさかったのですが、こんなこと全く意味がなくなってしまいました。 Lightsailを使えば、電源が落ちることはまずありません。データがなくなることもほとんどないでしょう。事務所なんかにコンピュータの実物を置いておくよりよっぽど安全です。 s3というデータを保存するサービスもすごいです。1Gあたり一月2円なので、100G使うようなデータ量でも月200円です。そのほかにGlacierというもっと安いサービスもあります。これはデータを取り出すのに3〜12時間かかりますが、料金自体はさらに安くて1Gあたり0.5円です。100ギガでも月50円。データの取り出しをするときにさらに若干料金がかかるようですが、10Gまでは無料枠が使えるようなので、通常の事務に使うようなデータの大きさでしたらほとんどお金はかかりません。無視できる範囲でしょう。 ウェブサーバーに限らず普段使うエクセルやワードなどのデータももう事務所に置いておく時代ではないのかもしれません。サーバーもデータがあって、外付けのHDDにバックアップをとってなんてやってても大きな地震や火事になってしまったら終わりです。 その他にクラウドでのデータの保存の仕方としては、githubやドロップボックスなど色々考えられます。githubでもドロップボックスでも両者でファイルの変更履歴が保存できます。 色々研究したいと思います。
今日は、アマゾンのクラウドのコンピューターのインフラであるAWSを色々と触りそれなりに収穫もあり勉強になりました。 AWSには数多くの様々なサービスがあるのですが、今回触ったのは画像などのファイルを保存できるファイルサーバのようなS3というものです。 今日はiPhoneから、領収書や請求書などの画像をアップしたりダウンロードできたりするアプリのプログラミンをしていたのですが、反応がすごく速いので、色々なウェブサイトで反応が遅いのは通信の問題ではなくて、サーバーの反応速度の問題ということがよく実感できました。 またファイルの耐久性がイレブン・ナインというそうで99.9999999%なんだそうです。最初は何のことか?と思ったのですが、ファイルが複数の場所にあるサーバーにバックアップされていたり、冗長化されているのでまずファイルが失われることは無さそうです。もちろん中小企業の実際に買えるサーバーと比べても信頼性が段違いです。 それから、もう一つ。去年2016年の11月に新しくできたサービスなのですが、アマゾンLightsail。こちらは月5USDと定額でAWSが使えます。データベースもつけるようなので是非そのうち試してみたいと思います。 クラウドの世界も進歩しています。AWSはこの他にも色々な種類のサービスのがあります。私の事務所のコンセプトの一つが「きれいな帳簿でお客様の商売を元気にする」ですから、これらの新しいサービスを取り入れて何か新しいサービスを提供できないかなと今日は色々考えていました。
プログラミング言語としてはPythonとJavaではJavaの方が、作ったサービスは圧倒的に安定しています。実行する前にコードから実行ファイルをコンパイルするので、文法や型のチェックも行われバグも出にくいです。またPythonは実行時にファイルを読み込んで解析するのに対して、Javaは実行する前にコードをコンパイルして中間ファイルを作るので、スピードも速いらしいです。Pythonをやっていて速度で問題を感じたことはありませんが、事前の文法チェックが無いので、実行して初めて引数が足りてなかったなどの文法に誤りがあったことがわかることがあります。 文法チェックができるかどうかは、結局バグの多さに影響するので、コードの品質は最初からPythonやRubyなどの動的型付け言語に比べてJavaの方が圧倒的に上にナルト思います。ですので、Javaで既にWebサービスをサクサク作れるスキルのある方は、あえてPythonなんかを始めてみる必要など無いように思います。 こう考えるとPythonに比べるとJavaの方が品質的には圧倒的に上に見えるのですが、世の中ではPythonやRubyが人気です。なんとなくJavaやRubyが新しくて、Javaが古くてダサいもののようにも感じられます。世の中の多くのIT関連のスタートアップはPythonやRubyを使っています。言語のランキングでもPythonは着実に順位をあげています。 求人情報やIT関係の雑誌なんかを読むと部外者でもわかるのですが、有名どころのスタートアップのfreeeやCookpad、snapmartなどもサーバー側はRubyで開発しているようです。 そういう多くのスタートアップで、何故そうなのを考えてみたのですが、多分最近よく言われるリーンスタートアップと関係があるのかなと思いました。VCなどから出資を受けているところは、VCから開発言語についてもなんらかの助言を受けるのでは無いかと思います。そういうところがRubyなんかを使っているのは理由があると思うのです。 考えてみたのですが、一番大きな理由はきっとITサービスやアプリは、出してみない「当たる」かどうかわからないからでは無いかと思いました。よくある話は、一生懸命作ってみたけど、そんなサービスは誰も必要としてなかったとか、既にそんなサービスあったとかいう話です。つまり最初から当たることの方が珍しいので、いくつも素早く作ってマーケットでどんどん試せるスピード感のある言語の方がいいということです。 結局、自社でのITサービスの開発は何が難しいかというと、多大なコストをかけて投資をしても、誰にも必要とされず投資が無駄になってしまいガチだということです。私も、税理士・会計士という立場で開発に大金をつぎ込んで経営が苦しくなってしまう会社を沢山みてきました。 これはあくまで私の想像なのですが、Javaなんぞで作ると一つのアプリを作るのに時間がかかりすぎるので、世の中のニーズが無いとわかった時には傷が大きくなりすぎてしまっていると、世の中のITサービス企業を経営するような人達は考えているということなのかも知れません。 最近、今更なのですがJavaのJSFを触ってみています。Javaでもそんなにコーディングに時間がかかるようには感じません。以前はデータベースとクラスインスタンスの相互の変換やhtmlとして表示する部分の実装が大変だったのかも知れませんが、今のJPAやJSFは十分に簡単なように感じました。 コードは一度書かれると何年も使われるものです。使われるコードでしたら5年どころか10年くらいもざらに使われます。ですので、言語選択の際にメンテナンスのしやすさや機能の追加しやすは実はとても重要なファクターです。コードは機能が追加されていくごとにだんだん複雑になっていきます。型チェックが厳密にされる静的型付け言語の方がコードの規模が大きくなっていくにつれてどんどん有利になっていきます。IDEなんか使っても、静的型付け言語のIDEはEclipseでもNetBeanでもインスタンス名の後にドットを打つと、ちゃんと入力候補が出てきます。PythonのPycharmではそこまでよくできていません。動的型付け言語なので原理的にも無理なのかも知れません。 PythonやRuby、PHPなどの一瞬手軽にできるように見える軽量言語よりも、最近のJavaは、静的型付け言語のメリットがあるので、長い目ではもちろん有利で、短期的にもそれほどデメリットが無いのでは無いかと感じているところです。結構大手がRubyを使っていますが、コードが複雑化していくと、機能の拡張やメンテがこれからどんどん大変になって、開発効率が急激に落ちていくかも知れません。そこはテストなどのノウハウを使って上手にできているのかも知れません。 でも、これからのスタートアップはコードがどんどん複雑化していきそうならJavaなどの動的型付け言語を使う方が競争的にも有利に立てるかも知れないと思いました。
Herokuを使ってサービスを作ると、どうしてもストーレッジの問題にぶつかります。Herokuはいいと思うのですが、ストーレッジがないのです。実は知られているようで、結構な数の人が知らなかった落とし穴でもあるようなのですが、Herokuでは画像が保存できません。OSとPythonやRubyなどの言語とデータベースは提供してくれるのですが、画像は保存できないのです。私はこれを知らなかったので、かなりびっくりしてしまいました。。 そこで仕方がなくAWSを始めることにしたのですが、このAWSのs3というサービスがかなり良いので、かえってよかったと思っているところです。 ご存知の方も多いと思いますが、HerokuはPaaSと呼ばれるWebサービスの一種で、ハードディスクのサーバーと、UbuntuなどのOS、それにデータベースやPythonなdの言語、各種のライブラリをまとめて提供してくれます。 私は開発環境がMacなので、自分のところのサーバーもMacでやれば、本番と開発環境が一緒なのでやりやすいのではないかと、色々迷っていました。パーミッションなどの扱いやすさは、手元で実際にいじれる実機のサーバーの方がわかりやすいですし、コストも実際にサーバー機を買ってしまってもそれほどのものではありません。ですが、Herokuなどのクラウドを使うと、12factor.netなどに書いてある設計上のデザインパターンに自動的に従うことになると言うのに惹かれてHerokuでやってみることにしました。やはりサービスが段々大きくなっていった時にメンテナンスが楽な方がいいですものね。それとやっぱり自己流でやるよりは、信頼性と実績の面からもで世の中で通用しているものでやってみる方が良いのかなと思いました。 s3の良いところは、まず、値段です。1GBあたりの料金は一月で約3円。データが100GBでも月300円です。私の事務所では領収書の画像データを仕訳データに翻訳して、画像と仕訳を一緒に整理して保存するサービスを提供しようと思っていますが、iPhoneで撮影した写真だとデータのサイズは約3MBです。ですので300枚保存してこれでやっと1GBで、これで、3円です。100GB使おうと思ったら、30,000枚の写真データを保存することが出来ますが、これで小さい会社なら20社分は行けるのではないでしょうか? 次に、信頼性。これは、Amazonの説明によると99.999999999%の信頼性があるのだそうです。 小数点以下に、9が9個つくので、データが消失する可能性は、1000万分の1と言うことでしょうか。自分のところでサーバーを持ってデータを保存するより、よほど高い信頼性です。使わない手はないですね。 その他、Pythonのboto3をはじめ、RubyやJava、.NETなどの他、おそらく、ほとんどの言語でファイルや閲覧権限等を簡単に操作できるモジュールが用意されています。プログラムの側から簡単にファイルをアップしたりダウンロードできたりするのです。ここだけ見ても、自分でファイルの保存や権限の設定をプログラム的に作るよりよほど簡単で確実です。ソフトウェアの世界に限りませんが、「巨人の肩に乗る」と言う言葉があります。 こう言う新しいもの(全然新しくないけど)はお金を出してもどんどんやってみる方がいいですね。
PyCharmは買う価値があるでしょうか。 使って1ヶ月くらいが経ちますが、私は買ってよかったです。多分、この1ヶ月でも十分に元は取れています。その前は、3−4ヶ月はAtomを使っていたのでよくわかります。やっぱり効率性が劇的に上昇しています。もう、PythonをやるのにAtomには戻れません。どうせプログラミングをするなら、良いツールを使うほうがいいです。効率性が素晴らしい。 Atomとは色々違うのですが、まず、デバッグが出来るようになるのが大きいです。Atomで作った場合は、Atomはエディタですから、直接実行することは出来ません。ターミナルから実行して、エラーが出たら、エラーのログをみて何が悪かったかを解析しなくてはいけません。 PyCharmならブレークポイントを設定できます。エラーが出る場所で、ブレークポイントで実行を停止して、各変数にどのような値が入っているかを確認できます。私が知っている範囲では、Atomのプラグインでは逆立ちしてもそんなことは出来ません。 PythonやRubyなどのスクリプト言語は静的型付け言語に比べて、文法チェックが事前にないところが弱点だと思っているのですが、PyCharmはインスタンスが割り当てられていない変数などに赤の波線を引いてくれます。これで実行する前にある程度のバグの元は潰してくれるんですね。 名前をまとめて変えてくれるリファクタリングの機能もあります。個人的に気に入っているのは、ある変数にマウスのポインタをあてると、同じスペルの変数が全部ハイライトされます。これが、コードの流れを追う時にとても楽になるので助かります。 この他にもテストなど、まだわかっていない機能が色々ある様です。 確かに、最初は有料のツールは躊躇すると思います。なので、最初の数ヶ月をAtomでやって、PythonやらDjangoなどのフレームワークをやっぱり自分ががちゃんと使うと言うことがわかってから買うのでも遅くはないと思います。それに、Atomなどのエディタで開発すると、その手作り感で、どの様に動くのかわかリます。それからPyCharmなどのIDEに移行するのでも遅くはないと思います。 ちなみに私は、もう、Atomに戻ることはなさそうです。
Herokuを使ってWebサービスを作るのは手軽にできると宣伝されていますが、実はかなり高度な知識が必要です。Herokuのアカウント自体は簡単に開けられるかもしれないけど、実際にサービスを公開するには、Linuxやデータベース、RubyやPythoなどの言語で一通りのコードがかけること、HTMLやCSS,JavaScripなど、広範囲の知識が必要です。これをさらに、iPhoneやAndroidなどの端末で使えるようにしようとすると、SwiftやAndroidなどの端末側のプログラミング言語の知識も必要になります。 さらに、Herokuの場合は、解説がほとんど英語なので、英語が結構得意でないと、解説を読むこと自体が億劫になってしまいます。もしくは、それを上回る熱意とか根性が必要でしょう。 最近、Herokuでは画像ファイルが保存できないことを発見したと書きましたが、Herokuでやることで、ソフトウェアが他の環境にデプロイしやすくなるなど、設計上のメリットがあることがわかったので、最近の定番っぽいAWSのS3(Amazon Web Serviceの中のストーレッジの機能)ではどうやるのかを調べてみました。 ジャジャーン。 A file is selected for upload by the user in their web browser; JavaScript is then responsible for making a request to your web application on Heroku, which produces a temporary signature with which to sign the upload request; The temporary signed request is returned to the browser in … Read More “HerokuとAWSのS3を使ってWebサービスを作るには” »