プログラムにタイピングの早さは必要なのか? 初心者におすすめのプログラム書き方
タイピングの早さの必要性
twitterでタイピングを練習している方を多く見受けられ、プログラミングにおいて、タイピングの早さって大事なのではと思っている方も多いと思います。
結論から言うと、必須ではありません。
むしろ、遅くても全然大丈夫です。
弊社の社長は、IT業界40年以上の大ベテランで、某大手の学校で講師もしていた程のキャリアを持っています。
じゃあ、タイピングは滅茶苦茶、早いねと思われるかもしれませんが、ぶっちゃけ滅茶苦茶、遅いです。
タッチタイピングはおろか、人差し指2本でコーディングしています。
私が分からないことを聞きに行く時は、言うからちょっと代わりに書いてとよく言われます。
開発速度は?と言うと早いです。
開発しよとしているシステムのプロートタイプを荒削りではありますが、土日間でだいたい作ってしまいます。
私の10倍ぐらい早いですね😨
つまり、プログラムを組む際には、書く速さより考える速さの方が大事だと分かりますね。
とは言った物の、タッチタイピングが出来るに越したことはないですけどね😅
もちろん、両方出来るのが最強なんですけどね。
プログラムを書く速度は考える速さへの依存が大きいです。
続きを読むgo-sqlite3をちょっこと触る
プログラミング言語の基礎を学んだ後に、次のステップとして触るのがデータベースになります。
今あるソフトウェア開発でデータベースを扱うのが大半だと思います。
今回は、データベースのテーブル作成・データの挿入・データの参照まで軽く書いて見ました。
ドライバーはmattnさんのgo-sqlite3を使わせて頂きました。
先ずは、sqliteからダウンロードしましょう。
ドライバーはGitHubから、直接ダウンロードするのも良いですが、dosプロンプトを開いてコマンドを叩けば落とせるので試してみて下さい。
コマンド
go get github.com/mattn/go-sqlite3
でダウンロード出来るはずです。(便利ですね~)
今回使うドライバーはgcc(C言語のコンパイラ)が必要なのでそちらもダウンロードします。
データベースを確認する為に、DB Browserも一応、入れておきます。
長くて申し訳ありませんが、これで準備は出来ました。
goソース
データベースのデータを格納する為の構造体を用意してあげましょう。
構造体とデータベースの型はきちんと合わせてあげましょう。
メインでデータベースを開きます。
コメントでも書いてありますが、必ずデータベースを閉じるようにしましょう。
あとは、関数を読んでいるだけになります。
crateTable
sql文を用意して、Execで実行してあげるだけです。
DB Browserで作れているか、一応、確認。
実行前
作れていますね。
これは、crateTablel関数を呼び出しただけの動作なので、二回目以降は同じテーブルは付く無いので注意してください。
insertDB
こちらも、テーブルを作成する時と、全く同じですね。
ちゃんと挿入されていますね。
今回は*で検索していますが、本番ではちゃんとカラム名を指定してあげましょう。
Scanで、構造体にデータを挿入してあげます。
あとは、配列に入れて、その配列をデバック用にoutputしています。
配列に入れることで、行単位でデータを取れるので、後々楽だったりします。
実行結果 (省きましたが、insertをもう一回走らせています)
DB Browser
dosプロンプト上だと、レコードが上手くとれていませんね。
DB Browserだと上手く表示出来ているんですけどね。
原因として考えれるのは、sqliteがDATETIME型をサポートしていないので、TEXT型で入れてstring型で受け取ってあげるのが良いかもです。
データベースもいろんな選択肢がありますが、シンプルながら一連の基礎まで使えるsqliteを採用しました。
実際、sqliteはスマホゲームや、比較的軽いデータを扱うwebサービスでも採用されていますので、機能としては十分だと思います。
金融関係だと、Oracleがまだ、主流らしいですけが、まだ触ったことないのでそこら辺は分かりません
web系で、サーバサイドを考えている方はSQLは必ず通る道です。
Goだけやってればいいとは限らないのがツライところですね
最近では、javaScriptのnode.jsでサーバサイドもやってしまうと言った動きもあるそうなので、フロントエンドの方も「ちょっと、node.jsでサーバサイドやってみて」と無茶振りされるかもしれないので、データベース周りは知ってて損は無いと思います。
jsonファイルでテーブル作成 Tabulatorが高性能で便利過ぎる
サーバサイド側から、jsonファイルを渡してあげたところで、またテーブルを作成する処理がなかなか面倒ですよね。
そんな時にTabulatorがかなり便利です。
Tabulatorを使うと、ソート機能やデータの変更も容易に可能になります。
また、ajaxも対応しているので、動的にテーブルをの変更なども可能になります。
ダウンロードは公式サイトから、行って下さい
Tabulatorを使う際には、jQueryが必要になるので、jQueryもダウンロードして下さい。
現在、3.5.0にバージョンアップしてありますが、仕様の変更を確認していない為、3.4.1を使用しています。
また、重くなってしまうので、min版をダウンロードすることをおすすめします。
javaScript :tabulator.js
HTML:sample.html
結果
こんな感じに出来ます。
ソートはも出来、カラー・プログレスバーなども表示し、editor:trueで編集も可能になります。
比較的、簡単に実装出来るので、おすすめです。
また、Tabulatorの公式サイトもサンプルをかなり置いてくれているので、かなり良心的で分かりやすいです。
サーバサイドでの処理ですが、テーブルの行(row)単位でデータを取れるので、変えたいところの行のデータを、サーバサイドに送って、データベースのUPDATEも簡単にできます。
javaScriptはかなりのライブラリーがあるので、探すのは大変ですが、その反面、面白さもありますね。
jsファイルをコマンドプロンプト(dosプロンプト)で実行
ほとんどコンパイル言語しか触ったことないので、javaScriptになかなか慣れないでいます。
GoやJAVA見たいにdosプロンプトで実行・デバックをしたいと思い至った次第です。
まず、超簡単なjsファイルを用意
file: dos.js
dos.js実行
consoleオブジェクトが無いとのエラーが発生
いろいろと調べた結果、consoleを使うのには、どうやらnode.jsが必要らしい。
私は、Bracketsをインストールした時に一緒にnode.jsも自動にインストールしてくれていたらしく、新たにインストールする必要はありませんでした。
無い方は、こちらから、ダウンロードして下さい。
node dos.jsで実行
今度はきちんと出力してくれましたね。
もちろん、Hello Worldも出力出来ます。
dosプロンプト画面
ちゃんと、Hello Worldが出力されていますね。
ブラウザ側では、デベロッパーツールから、デバック確認が出来るのでそちらで確認しましょう。
htmlソースと確認画面も載せておきます。
HTML:dos.html
右上のボタン → その他ツール → デベロッパー ツール
consoleボタンをクリック
Hello Worldが確認できますね。
また、ファンクションキーがある方は、F12キーだけで、デベロッパーツールが開けるので、そちらを使うことをオススメします。
こんな、面倒なことしなくても良くない?と思うかもしれませんが、デバック作業はかなり大事なことなので、上手く処理が行かない時は、consoleを是非、活用しましょう
fmtパッケージだけで、なんでも簡単にstring型に変換
Goは型のある言語で、型を意識して書かないといけません。
関数を使いたい時など、引数でstring型にしていされていて、あれ?使えない...って時がよくありませんか?私はよくあります。
通常だと
結果
になります。
Sprintfを使うと、
結果
int型から、string型に変換されていますね。
fmtパッケージだけで済むのが嬉しいですね。
また、int型だけではなく、interfeceやdate型にも対応できるので、string型に変換する時に困った時は、大体、Sprintfで解決できます。
また、前に”,”を付けたいなど、いわゆるカンマ編集なども容易に出来るのがいいですね。
一応、date型も変換出来るか見てみましょう
結果
大丈夫そうですね。
Sprintfは結構、使える関数なので、ぜひ活用してみて下さい。
私事ですが、最近、推しのエンジニアさんがいるので、勝手に紹介させて頂きます。
名前はmattnさんです。
GitHubやブログ・Twitterを結構、頻繁に更新して下さるので、とてもお世話になっております。
また、みんなのGo言語などの技術書の執筆などもしていますので、ぜひ手にしてみて下さい。
twitter・ブログURLも一緒に貼っておきます。
twitter
ブログ
関数の引数・戻り値が多い場合は、メソッドを使おう
こんにちは、こんばんは、138nonoです。
goを作る時に、ついつい引数・戻り値が多くなってしまう時はありませんか?
若輩の私はよくあります。
そんな時、使うのがメソッドです。
メソッドの使い方は、こんな感じです。
結果
関数の前に構造体を渡してあげるだけで、結果も戻ってくれます。
構造体を使うことによって、簡単にオブジェクト指向になります。
勿論、引数・戻り値も設定してあげることが出来ます。
関数だけでもシステムとしては成り立ちますが、コードの可読性、つまり、保守・運用性に欠ける場合があります。
場合に合わせて、関数かメソッドを使うかを適切に決めましょう。
1人で全てやってしまう、システムなら、良いですが、現在はチームで作るシステムが普通になっています。
また、少し時間が経つと、自分のコードを忘れてしまうこともよくあります。
(私自身、見返すとクソコードやなぁとよく思います…)
最初は難しいですが、慣れて来たら、誰かに見せる意識でコードを書くを書くのが良いと思います。