エンジニアが発信する【MySQL】の記事を集めました

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【MySQL】

2011年07月04日

Accessを上手に使おう おおまかな方向性

前回
・Accessでシステムを作成する際、なるだけ別のシステムに移行しやすい形を取ろう。
・既に構築してしまっているなら、外の動きを変えずに別のシステムに移行しやすい形に修正しよう。
と書きました。別のシステムに移行しやすい、とはどういうことでしょう?

ガラパゴスって言葉、たまに耳にしませんか?日本の携帯市場はガラパゴス化が進んでいて、等々。要するにある意味閉鎖された市場で他所とは違う方向性や技術革新が進んでいったような場合を指している訳ですが、Accesssが実はガラパゴスそのものだといえます。
データベースというものであれば一般的にOracleやSQL Server,DB2などがあります。フリーのものではPostgreSQLやMySqlなど。それぞれと比べてもAccessは一線を画しています。見方を変えれば、Accessでデータベースが分かった気になっていても、実はAccessという閉じられた世界のローカルルールだった、というものはいくつもあります。

長々と書きましたが、別のシステムに移行しやすい、ということはガラパゴス化、つまりAccessでしか通用しない表記を避け、一般的なデータベースと処理等をそろえる形にする、ということです。


具体的に見ていきましょう。Accessにはいくつかのオブジェクトがあります。2003の場合
・テーブル
・クエリ
・フォーム
・レポート
・ページ
・マクロ
・モジュール
があります。

私自身、レポートやページをほとんど使わないのでここに関していいことが書けるかどうかは分かりませんが、簡単に書いておきます。

・データベースに関して
  対象:テーブル、クエリ
  やること:クエリは参照系のみとし、更新系のクエリ(Insert,Update,Delete)は廃止する。
・処理に関して
  対象:モジュール、マクロ、フォーム、(一部、クエリ)
  やること:マクロはモジュールに移行する。
       フォームでは項目との連結など、データベースと直接関わるような定義をせず、イベントに任せる。
・出力に関して
  対象:レポート、ページ、(一部、フォーム)
  やること:他社製のツール検討や、Excel、Wordなどのファイルも検討する。

きわめて簡単な方向性はこのくらいでしょうか。

   

  • なうで紹介
  • mixiチェック
  • ツイートする

2011年01月27日

MacBook Air 1400/11.6 MC505J/A にRuby on Railsの環境

生まれて初めてMacbookを手に入れました。
いやー、UIが凄くいい!

・・・という訳で、早速開発マシンにしてみました。
買ったmacにはrubyやらjavaやらが既に入っていたので、IDEであるNetBeansを入れてみました。

NetBeansはこちらから

ここから落として、普通にインストール。
Javaのプラットホームを選ばずの利点は大きいなーと思いつつこの辺りはさくさく進みました。
Railsは2.3.5が入ってたのですが、僕は2.3.8なので若干アップデートを行いました。

で、ちょっとハマったのがSVN。
svn+sshでハマって、Twitterで騒いでいたら

PPKの鍵ファイルをmacで使う方法

のページを二人から教えてもらいました。(二人とも同じページだったので、有名なぺーじなのかも・・・。)
PPKはmacでは使えないんですね。。。OpenSSHというのを学びました。
お二人ともありがとうございます!


この辺りで、ターミナルの表示の仕方やDockの使い方になれ始めてきた。
ターミナルがどこにあるか分からない時はいちいち検索して出してました・・・。
ついでにSpacesの使い方もここでマスター。
一気にMacBookが使いやすくなっていきました。
(画面の小ささなんて、Spacesを駆使すればほとんど気になりません。操作が若干増えるけど。。。)

で、次はMysqlをインストール。
これもTwitterで教えてもらったページを参考にやってみたのですが・・・。

このページ です。

これはうまくいかず。
Mysqlのインストールはうまくいったのですが、まず起動しない。

mysqlの公式ページ

から5.5.8の64bit版をDLL。
はじめはtarを落として、しばらく放心していたがDMGを落とすと楽な事に気づいて落とし直し。
インストール自体は簡単にいったが、、、StartupItemやprefPaneがうまくできず。
意味も分からなかったが、、、

StartupItemは起動時の実行スクリプトが入っている模様。
>sudo vi /etc/hostconfig
で初期起動させるかどうかを設定できるものらしい。
(実態は/Library/StartupItems/に格納されている。)

prefPaneは「システム環境設定」のUIで扱えるようにするためのものらしい。
正直あまり必要ない気がした。

で、ハマったのが、、、
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
UIからたたかれているコマンドがこれっぽいのだが、、、だめだ。
動かん。
で、仕方ないのでいろいろ調べていると(中身を追うと)
/usr/local/mysql/support-files/mysql.server
なので
>sudo /usr/local/mysql/support-files/mysql.server start
とうってみる。
に実態発見。
MySQLCOMを直接たたくとログがどこに出てるか分からず苦戦だけど、このコマンドならログがコンソールに出るので対応がしやすい。
で、エラーの原因は・・・。
default-character-set=utf8
でした。
会社でMysqlの5.5から設定が変わるという周知までもらっていたのにやってしまった・・・。
参考はこのページ がいいかも

サーバー側の設定は
character-set-server=utf8
になってるので、みんなも注意してください。
あと、Mysqlを32bitのDMGでインストースした場合は起動する場所がおかしいのか、うまく起動されません。

/etc/my.cnf

/usr/local/mysql/support-files/my-medium.cnf
をコピーして
[mysql.server]
basedir=/usr/local/mysql
と記載してあげるとうまくいきます。
初期起動の位置がなぜか固定されないため、cd /usr/local/mysqlまで移動しないとキックできませんでした。
(これは、上記のcnfへの記載で解消されます。)

で、、、
これでMysqlとは接続できたのですが、、、Railsからができない。。。
gem installで失敗する件はXcodeを入れたら解決したのですが・・・(未だになぜXcodeが必要なのかは謎。)

gem install mysqlは未だに未解決!

なのです。
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
を行っても、gemが入ってマイグレーションに失敗します。
これ、解決できる人いたら教えてください。
(これで失敗したので、Mysqlを32bit版に入れ直したのですが、結果は一緒でした・・・。)

以下、ログ。
分かる人がいたら是非!
(とりあえず、sqlite3を入れて凌ぎました。この辺の記事が欲しい人がいれば書きますが、sqlite3は超簡単なのでほとんどいらないだろう・・・。)
rake aborted!
uninitialized constant MysqlCompat::MysqlRes
/Users/atsushi/.gem/ruby/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:440:in `load_missing_constant'
/Users/atsushi/.gem/ruby/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in `const_missing'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:9:in `define_all_hashes_method!'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/mysql_adapter.rb:68:in `mysql_connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `send'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:223:in `new_connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_new_connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:188:in `checkout'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `loop'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:184:in `checkout'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:183:in `checkout'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:98:in `connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:440:in `initialize'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:in `new'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:401:in `up'
/Users/atsushi/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/migration.rb:383:in `migrate'
/Users/atsushi/.gem/ruby/1.8/gems/rails-2.3.8/lib/tasks/databases.rake:112
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `invoke_task'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `top_level'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
悲惨です。
まぁ、何はともあれいったん環境は作成完了。
思ったより使いやすいぞ、mac!

この記事も初めてmacで書いてますが、普通に書けます。(デスクトップには劣るけど、それはしゃーない。)
ってことで、こんな記事を読んでくれてありがとう。
そして、救世主求む!



P.S.
あと、謎なのが
.bashrc
これがホームにないし、作っても呼ばれない。

仕方なく、 /etc/bashrcに以下の二行を追加。
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
これでホームに.bashrcがおける。
どこかのサイトに書いてあったのですが、どこか忘れました・・・。
同じテーマの最新記事
  • なうで紹介
  • mixiチェック
  • ツイートする

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【MySQL】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA