データベースのスキルは必須だが
ショッピングサイト、在庫管理システム、株式売買システムといったITシステムの情報を一元的に記録・管理するのがデータベース(DB)です。DBはRDBMS(Relational DataBase Management System)と呼ばれるソフトウェアで構築されることが多く、DBのデータの登録・参照にはSQLと呼ばれる問い合わせ言語を用います。一般的に、ITシステムを開発するためにはプログラミング言語のほかに、DBやSQLに関するスキルも必要になります。
しかし、このDBやSQLが意外と曲者で、ITの初学者だけでなく、プロジェクト管理を担うようなベテランにも、苦手意識を持っている人が多いと言います。
SQLの文法がよくわからない
SQLに対して初心者が抱く最初の悩みは、文法に関するものでしょう。SQLは集合指向言語とも言われ、JavaやPythonなどのプログラミング言語とはまったく異なる文法であるため、取っつきにくい側面があります。
そのような場合は、まず「SQLは手続き型プログラミング言語とはまったく違う言語だ」と認識することが大事です。そして、文法からはいったん離れて、DBの表(テーブル)を組み立てるイメージを持つところから始めましょう。紙、またはExcelの画面の上に、SQLで最終的に得たい表の絵を描き、その表を作るためにはどの表からデータを持ってくればよいかを考えます。そんな訓練を繰り返すことで、集合指向の考え方を習得できます。
SQLは書ける。でも処理が遅い
SQLの読み書きができても、今度は性能面でつまづくこともよくあります。「検索対象のカラムにはインデックスが張られているのに、処理が遅いのはなぜ?」といった悩みです。
RDBMSは多くの機能を持つ高度なシステムですが、ブラックボックスのまま使っていたのでは十分な恩恵は得られません。しくみをよく理解してこそ機能を最大限に活かせる効果的な使い方ができます。インデックスが効かないことに悩んでいるなら、「インデックスを作成するとなぜ高速にアクセスできるのか」そのしくみを知ることで、インデックスが効かない原因を推測できるようになるはずです。
SQLか、O/Rマッパーか
前述のとおり、ITエンジニアのすべてがDBやSQLを使いこなせるわけではありません。そのため、リーダークラスの方々は「次の開発案件では、チームメンバーにSQLを書かせるべきか、O/Rマッパーを使わせるべきか、どっちがいいのか?」のような悩みを抱えたことはないでしょうか? SQLを使えば効率よくDBにアクセスする性能のよいシステムを構築できるかもしれませんが、SQLの学習コストがかかります。一方、O/Rマッパーを使えば、従来のプログラミング言語と似た使い方でDBにアクセスできるため学習コストは低くなりますが、SQLを直接使う場合に比べれば性能は落ちます。
でも、よく考えてみてください。そもそも一人の人間に思想の違う言語(手続き型言語とSQL)の両方を使わせるという考えに無理があるのかもしれません。きっちり分担できるのであれば、それが一番効率がよいとも言えそうです。
発想の転換が解決の糸口に
このように、悩みの多くは従来の考え(たとえば、手続き型言語の考え方)に固執するあまり、袋小路に入っていることも少なくありません。書籍『SQLの苦手を克服する本』では、先に挙げたDBやSQLの課題に関して、発想の転換を促し、具体的な解決の糸口を提案しています。過去に一度でもDBやSQLにつまづいた経験をお持ちの方にぜひ読んでほしい本です。読む方の技術レベルや立場に合わせた問題解決のアイデアやヒントが見つかるでしょう。