はてなキーワード: サクラエディタとは
意識低い企業内研究者です。プログラミングはサブウエポン。だけど趣味でも勉強してる。
働き方改革のせいで早く帰れって言われて、酒のみながら今これを書いてる。
C言語とかC++は・・・これで作らないといけないものが今の所ないし、これでお金を稼ぐのはハードルが高いし、
WindowsのAPIを使って複雑なプログラムを作りたいわけじゃないのでwhileとかifとか基本的な構文だけ覚えるだけで満足。
組み込みプログラミングではC言語はいまだに現役。お金も普通に稼げると思うよ!次代のCOBOLと化しそうで怖いとこはあるけど。
Javaは・・・使える人が多いからあえて今から学習しなくてもいいような気がする。
文字列の結合だけでもダメやり方と良いやり方があるらしくて、何かPHPのようにその言語特有のセオリーみたいなのを覚えるのが面倒くさそうなので入門の時点で学習するのをやめた。
セオリーとかあるかもしんないけど速度とか気に揉むまえに書いて測れ。たいていは杞憂か、あるいはCPUパワーで殴れるから。
Goは・・・HTTP/2が使えるから学習してる。他の言語だとnghttp2をインストールしないといけないようなのでGo便利だと思ってる。
ライブラリの選択肢が多すぎるのでこういうのが作りたいってときにこれを使うのがいいよっていうのが知りたい。
GUI作るのにライブラリありすぎてどうやって選べばいいのかさっぱりわかんない。
Goでデータベース扱うならこれを使え、だけどMySQLしか使わないならこれを使え、あっSQLiteならこっちのライブラリ使うと便利みたいなこういう情報が欲しい。
GoでGUIつくるの?あんまり普通じゃない気がする。軽量プロセスのうまみがそんなない(詳しい人に否定されそうだけど)
普通にC#(mono/.net)かwebアプリにするかで良くないか?
ただ、言語をあれもこれも覚えるのって僕は意味があるのかなという思いもある。
広く浅く学習するより、狭く深くいきたいとおもうけど、paizaでCランクしか取れない。
twitterで有名な人てやっぱりSランクとか余裕なのかな、こういうのもいろんなプログラマーに聞いてみたい。
一応著名なプログラマーをTwitterでフォローしてるけど、ご飯の画像を載せてたり、若者の僕には通じない寒いギャク連発してたり、ロリっぽい画像をRTしてたりと、twitterはメインの情報収集としては利用してない。
twitterやってるプログラマーって勉強会とかオフ会に参加してるようなリア充の人ばっかりなので、肩身が狭いから自分からリプは送ったりはしない。
ファンがたくさんいるのに最近ニコ生配信してくれないchokudai先生みたいに、アルゴリズムを学ぶのがいいのかな。
アルゴリズムは使うものだ書くものではない!高階関数とかテンプレートプログラミングとかその辺勉強するといい。
あと計算が制限時間内に終わるなら総当たりが最速で品質も高いぞ。
どうしてVimかというとプラグインが多いしIDEっぽくできるから。
Vimってハードル高いイメージあったけど、入門記事がたくさんあるので助かっている。
NetBeansが重すぎるんだよ。補完ボックスが表示されるの遅すぎて警告メッセージが出た。補完ボックスが表示されるまで7秒ぐらい経過すると警告メッセージが表示されたと思う。
Vim知らない。Linux使うならVimかemacs使えるだろみたいな雰囲気あるけど、GUIならgedit, CUIならnanoでいいよね。
パソコンのスペックもどのくらいのものを用意したらいいのかわからない。
10年前のVistaが搭載されていた頃の家電量販店で一番安かったCeleron 1コア メモリ1GB グラボなしノートだからプログラミングに向いてないのかもしれない。
VirtualBox上のubuntuでMySQLをコンパイルすると2時間20分ぐらいかかった記憶がある。
CPUが1コアなのでコンパイル中にそれ以外の作業なんて重くてできない。
スペックにお金をかけることで時間の節約ツールの選択肢が増える
EclipseなどのIDEが支障なく使えるレベルのスペックってどのくらいするんだろう。
3年前のCore i7, SSD, 8GB。最近はもっぱらJupyter。
Pythonは・・・・機械学習する上で避けて通れないけど、今のPCだと無理。
Pythonはいいぞ、機械学習だけじゃなく計算系はエクセルじゃなくてJupyter使う。でも周りはエクセルつかってる、勿体ない。
使ってないけど最先端の研究では機械学習使って当たり前感があってそろそろヤバい。
僕は中学生の頃、いじめにより心の余裕なんてなかったから勉強どころではなかったけどもっと英語の勉強しておけばよかったと後悔している。
迷宮にいる感じ。
なんとなく、プログラミングじゃないほうがいい気がするなあ。
C言語とかC++は・・・これで作らないといけないものが今の所ないし、これでお金を稼ぐのはハードルが高いし、
WindowsのAPIを使って複雑なプログラムを作りたいわけじゃないのでwhileとかifとか基本的な構文だけ覚えるだけで満足。
Javaは・・・使える人が多いからあえて今から学習しなくてもいいような気がする。
文字列の結合だけでもダメやり方と良いやり方があるらしくて、何かPHPのようにその言語特有のセオリーみたいなのを覚えるのが面倒くさそうなので入門の時点で学習するのをやめた。
Goは・・・HTTP/2が使えるから学習してる。他の言語だとnghttp2をインストールしないといけないようなのでGo便利だと思ってる。
ライブラリの選択肢が多すぎるのでこういうのが作りたいってときにこれを使うのがいいよっていうのが知りたい。
GUI作るのにライブラリありすぎてどうやって選べばいいのかさっぱりわかんない。
Goでデータベース扱うならこれを使え、だけどMySQLしか使わないならこれを使え、あっSQLiteならこっちのライブラリ使うと便利みたいなこういう情報が欲しい。
ただ、言語をあれもこれも覚えるのって僕は意味があるのかなという思いもある。
20の言語でHello World出来るより、1つの言語でいろんなアルゴリズムを知っている方がすごいと思う。
コミュ症がフランス語や英語やドイツ語覚えても、使う機会がないとまったく価値がないと思う。
広く浅く学習するより、狭く深くいきたいとおもうけど、paizaでCランクしか取れない。
twitterで有名な人てやっぱりSランクとか余裕なのかな、こういうのもいろんなプログラマーに聞いてみたい。
一応著名なプログラマーをTwitterでフォローしてるけど、ご飯の画像を載せてたり、若者の僕には通じない寒いギャク連発してたり、ロリっぽい画像をRTしてたりと、twitterはメインの情報収集としては利用してない。
twitterやってるプログラマーって勉強会とかオフ会に参加してるようなリア充の人ばっかりなので、肩身が狭いから自分からリプは送ったりはしない。
ファンがたくさんいるのに最近ニコ生配信してくれないchokudai先生みたいに、アルゴリズムを学ぶのがいいのかな。
コードを写経しても覚えられないし、仕組みは理解したけど自力でコードが書けない。
どうしてVimかというとプラグインが多いしIDEっぽくできるから。
Vimってハードル高いイメージあったけど、入門記事がたくさんあるので助かっている。
NetBeansが重すぎるんだよ。補完ボックスが表示されるの遅すぎて警告メッセージが出た。補完ボックスが表示されるまで7秒ぐらい経過すると警告メッセージが表示されたと思う。
パソコンのスペックもどのくらいのものを用意したらいいのかわからない。
10年前のVistaが搭載されていた頃の家電量販店で一番安かったCeleron 1コア メモリ1GB グラボなしノートだからプログラミングに向いてないのかもしれない。
VirtualBox上のubuntuでMySQLをコンパイルすると2時間20分ぐらいかかった記憶がある。
CPUが1コアなのでコンパイル中にそれ以外の作業なんて重くてできない。
スペックにお金をかけることで時間の節約ツールの選択肢が増える
EclipseなどのIDEが支障なく使えるレベルのスペックってどのくらいするんだろう。
ノートでCore i3、メモリ4GBにランクアップしたらいけるのかな。
他人がどんなスペックのPCで何のツール使ってプログラミングしているか知りたい。
Pythonは・・・・機械学習する上で避けて通れないけど、今のPCだと無理。
あと、クレジットカード持てないのでAWS上で機械学習するのだけは遠慮したい。
過大請求されるの怖いし、トラブルが起きた時に英語でコミュニケーション出来ないから。
僕は中学生の頃、いじめにより心の余裕なんてなかったから勉強どころではなかったけどもっと英語の勉強しておけばよかったと後悔している。
迷宮にいる感じ。
20代の数年間SIで働いた。1年以上前に退職して今は別業界にいる。
今日、Evernoteを整理していたら「退職理由、SIの嫌な点」というメモが発掘された。退職直前のかなりストレスがたまっていた時期に書き殴った文章だった。学生の頃の私は絵を書いたりしていて、ものづくりで暮らしたいな〜などと思って始めたプログラミングが楽しかったので安易に受託開発業を選んでしまったが、その後悔が如実に表れていた。
一部自分でも覚えていない話もあったがコンテンツとしては面白かったし、今でもシステムインテグレーター業界で消耗する若者を減らしたいとは思うので公開してみる。
以下、同メモに加筆・修正したものなのでファンタジーだと思って読んでくれ。
受注した時点で売上がおよそ確定するので、後はその予定工数に収めて納品できれば御の字という考え方。よくある話だが、見積がおかしくても顧客と対等な関係が築けていないから追加請求もできない。時間(工数)をかければ良い成果物ができるかもしれないがそれを説明して顧客に嫌な顔をされたくないから、限られた工数の中での最善を尽くす。最善を尽くす、聞こえは良いが要は手を抜く。
つまり、どう頑張っても売上は同じなのだから、良いもの・価値を生むものを作ろうと考えない人が多い。社内で開発者と呼ばれる人間もそうだし、マネジメント層はそういうものづくり志向を持った人をリスク扱いすることもある。
これが諸問題の根源で、いかに述べるような組織・プロジェクトが出来上がっていく。
マニュアル作業の正確さをかたくなに信じてる人だらけで、ITとは何なんだと考えさせられる。
私は定型作業を効率化しようとjsやrubyでスクリプトを書いたりしていた。テストデータを開発用DBに突っ込んだり、テキスト処理して整形したり、Excelからコード生成したりするよくあるやつ。
あるとき上司に肩越しに自分の作業を覗かれて「何やってるの?」と聞かれ、そういうスクリプトを作ってると答えたら、工数とリスクの話をされた。曰く「そのスクリプト作るのに何日かかるの?工数に乗ってないよね?」「スクリプトのテストもちゃんとしないと結果が正しいって保証できなくない?」と。この時はイラッとして「30分でできる数十行のスクリプトだし自分の作業工数内で完結する。むしろ後工程や別の人でも同じことを再現性できて楽になる」とか真面目に説明してプログラムも見せたが、読もうとはせず(読めないので)1時間無駄にした。
前述したようなビジネスモデルだから、営業力と、予定工数で無難にプロジェクトを終えるマネジメント力が大事。IT企業だが開発者は自社で持たない。不況の時に待機コストが発生するリスクがあるし、自社で抱えるより単価の安い開発者が人材派遣系の企業や下請けにいっぱいいるから。
社長があるとき社内広報で「技術は買うものだ」と言っていた。文脈で明らかに技術=技術者のことだったので、使い捨ての人売り業と揶揄されていることへの自覚が無いと思う。
そういう人が集まっているor残っている組織なので開発者はほとんどいない。20〜30人ぐらいの課に1人ぐらいの割合でstaticおじさんがちらほらいるぐらい。大体20代からプロジェクトリーダーという立場をやり始め、だんだん大型の案件を扱えるようになっていき、後は出世ゲーム。部長のお気に入りが課長になり、部門長のお気に入りが部長になる。その繰り返し。
開発案件でのBP(ビジネスパートナー、委託先、派遣、下請け)比率は自分の周りだと1:5ぐらいが多い。プロパー社員一人が5人の開発を仕切る、みたいな形。案件規模によりだいぶ差があると思う。この比率が高い=マネジメント力のある組織と考える会社はこの数字を上げようと必死で、比率の低い組織は評価が下がる。
私は開発が好きだったのでエンジニアとして生きていきたい、というようなことを評価面談の度に伝えているが、その度に会社の目指す方向を説かれてモチベーションが下がる。
上述の通り、案件で接する開発者は基本的に社外の人間なのだが、彼らの技術力と意識の高さにはものすごいばらつきがある。言われたものはなんでもこなせる人、何でこの歳まで技術者やれてるんだと疑う人、このプロジェクトはおかしいと良い意味で騒ぐ人、何も意見を言わない人、CっぽくJavaを書く人、人当たりは良いが技術力がいまいちな人、すぐ休む人、バグやミスを隠す人…etc。
まぁ色んな人がいるのはどの業界のどの職種も同じだが問題は質だ。私の主観になるが本当にエンジニアとして尊敬できるレベルの人は1%いるかいないか。というのも、ほとんどの技術者は長年SIやその周辺企業と付き合ってきているので同じ体質に染まっているのだ。顧客が良いといえば良いという態度(この場合の顧客は私が所属する企業)、請負の場合は工数を超えない範囲で手を抜く姿勢、その他諸々。技術力だけをひたすら磨き続けてきたという人はごく一部だけだったし、そんな人でもGitHubアカウント持ってない・ブログやってない・OSSに貢献したことない、といった具合でクローズドな世界で生きている。
そうした技術者とやっていく中で最も厄介なのが教育コストだ。案件のあるなしで人が都度入れ替わり、新しい人が来るたびに同じシステム・技術要素の説明をして何とかやる気が出るようモチベートして、というのを繰り返すのに疲れた。私の会社固有の変なルールの説明はてきとうにしておいて、私は技術が好きな仲間が欲しかったので今のシステムの課題と技術面での改善や展望をよく話す。が、あまり食いつかれることはない。これは私の問題だが、そうした期待と落胆のループも疲弊の一因だ。
ある時、一つの課に6年近くいるというBPと一緒に仕事をする機会があった。その課にはプロパーの技術者が長いことおらず、彼がその課の技術的中心を担っているという話だった。抜けられると途端に色んなものが崩壊するからという理由で、その人の派遣元にはかなり高額の単価を支払っていたと聞いた。課員が口をそろえて「あの人はすごい」「何でもできる」というので初めはかなり期待していた。
だが、拍子抜けした。あまりにも仕事が雑なのだ。コミットされたコードはTODOコメントだらけだし、バグがあまりにも多かった。一度も実行されずにコミットされ、他の人がチェックアウトした時点で判明したバグなんかもあった。それでも声が大きく、プロパーが技術を知らないのをいいことに自分のブランディングに完全に成功していた。客先にも顔を出し、信頼を得ているらしかった。「自分は設計が得意でテスト以降の工程には興味が無い」と言っていた。確かに彼が関わった各システムには独特の概念が埋め込まれた設計があったが、その複雑な設計は保守性が低く、他の開発者が触ると容易にバグを引き起こしていた。
また、彼はJavaの有名なフレームワークであるStrutsを拡張したいわゆるオレオレフレームワークを開発しており、それの出来は悪くなかったと思う。そのフレームワークに欠けているものをうまく補うような形になっていた。だがフレームワークのバージョンを上げると壊れるというのが残念な点で負債になりかけていた。
私は異動したが、彼は今でもそこにいると聞いた。
(最低限のものしか作らないから)安くて早い!という触れ込みで売っているので、テストの工数が異常に少ないことも多い。特にテストコードを書くなんてもってのほか。そういう世界でやってきた人ばかりなので、30や40超えたマネジメント側は「テストコードって何?」状態だ。大型の改修案件が来た時にはコア機能だけでもテストを書いていこうと見積段階から社内で提案したが「顧客に『そんなメリットあるなら何で今までのプロジェクトではやってないの?』って問われるから、絶対言うなよ」と拒否された。
保守案件をやっていた頃、時間を捻出してコソコソとテストコードを書いたりしていた。その案件を離れてしばらく後、ある時リポジトリを覗いたら私が書いたテストコードがばっさり消えていて驚いた。コミットログから課内のstaticおじさん的な人が消したとわかったが、そのコミットコメントが「現在使用していないコードを削除」だった。これはもう問う気も失せて何も言えなかった。
先述したようにテストがそもそもないプロジェクトが基本なのでリファクタできないのだが、たとえテストがあったとしても勝手なリファクタは許されない。ソースコードは顧客の持ち物なので同意なしに改変することはいわば契約違反なのだ。たとえ内的品質が向上してコスト削減に繋がるとしても、そのためにお金を支払う顧客はまずいない。
私がいたどの案件にもコードレビューがなかった。リーダーと開発者数人という構成の場合、まず開発者は全員下請けでリーダーは技術の心得がない場合が多い。そうなると彼らの成果物の良し悪しを図るのは目に見えるシステムの挙動と実施されたテスト結果のExcel報告書だけになる。これが非常に非効率で、少しコードを読めばわかる明らかなバグや仕様理解の齟齬が頻発していた。特に受入試験と呼ばれるリリース直前の顧客側での最終確認や本番稼働中におけるhotfixは全機能をきちんとテストせずにデプロイされることが多く、そのhotfixがさらなるバグを引き起こしたりもしていた。
そもそもテストを書けという話だがテストが無いプロジェクトに足すのはかなり大変なので、レビューサイクルをきちんと回すだけでもかなり変わる。実際、私が入った案件ではすべてのコミットに目を通すようにし、明らかな問題は都度指摘することで品質の向上に繋がった。欲を言えば他の開発者にもレビューしてもらいたいが、下請けの彼らの工数を増やすことは嫌がられる。
無難にプロジェクトをこなすことと新しい技術を試すことの両立こそ技術者の腕の見せどころだと思っているが、ほとんどの場合それは許されなかった。新規にせよ継続にせよ案件を受注する段階で営業やマネジメント層と顧客間で「今回は過去に実績のあるこの技術でやります」という契約が結ばれているからだ。その技術(言語やフレームワーク)がいかに古く、保守性も将来性もないものだとしても受注できればよいし、その技術のサポート切れか何かの拍子で再度リプレイス案件でも受注できればさらにラッキーぐらいの考えでいる。
また横に倣えが加速してさらに悪い事に、同じアーキテクチャ・ネットワークを再利用するために既存のサーバに新システムも相乗りすればよいという発想も珍しくない。「資産の再利用によりコスト削減」という触れ込みだったが、ただでさえスケールしない低スペックのオンプレミスサーバ上で複数のアプリケーションサーバを運用した結果、予想通り耐障害性が下がった。
また、Oracleのライセンスが高いという理由で一つのDBインスタンス上に10数個のシステムが同時稼働しているなんてこともあった。1つのシステムが高負荷なクエリを投げたせいで関連する全システムが共倒れになったこともあったがOracleのバグとして報告していた。
新人の頃にOJTでstaticおじさんの下に付いたことがあった。そのとき担当したのはPerlでデータ連携用のバッチを書くという開発業務だったのだが、最悪の思い出だ。
まずプログラム構造仕様書というのを書かされた。メソッド単位でのモジュールを全てExcel上に記述し、処理の順番と内容を説明するという謎資料だった。あまりに意味がわからなかったので「UMLのクラス図を書けばよいのですか?」と聞いたら「Perlにクラスなんて必要ない。構造化プログラミングを研修でならってないのか」と返ってきた。「俺が前に書いたPerlのバッチがあるから参考にしろ」と言われ、あるリポジトリをチェックアウトして見てみると1ファイル4,000行の.plがいくつか並んでいた。その時の私は何もわかっていなかったのでそういうものかと思ってしまったが後で調べて明らかにおかしいと気づいた。
また、そのプロジェクトのメイン言語はJavaで、Eclipseを使っていたのでPerl用プラグインを入れてコーディング・デバッグをしていたらやめろと言われた。理由は「Eclipse上で動くPerlが信用できない。サクラエディタで書いてプリントデバッグすれば充分だ」と言われた。その時の私は何もわかっていなかったので、プラグインの品質が悪いとかそういう話かと思い「じゃあvimで書きます」と言ったら「サクラエディタにしろと言っただろ!」と一喝され、vim vs サクラエディタという史上類を見ないエディタ論争が起きた。
SI業界の中では高いのかもしれないが決してよくはない。4年目(たぶん25歳)ぐらいで残業込みで年収400万にやっと届いたがそこからほとんど変わっていない。30歳の先輩に聞いたところ「500万前後、残業してない場合の月の手取りは未だに20万切ることがある。残業抜きでは新婚生活が厳しい」と言っていた。いわゆる年功序列がきっちりしていてこのまま続けてもしばらくは給与が伸びないということがわかった。
個人での貢献で差がつくのは±10万程度。その程度ならいっそ無くてもいいのでは、と思う。というかそもそも生産性をきちんと評価する制度が存在しない。これはどの組織でも難しい問題だと思うが、形骸化した評価制度で上司の気に入った人間にS評価を付けているだけならいっそ止めたほうが時間の無駄にならなくてよい。
会社から貸与されるノートPCは低スペックすぎて開発には使い物にならない。なので開発者は基本的にデスクトップを使用せざるを得ないのだがこれもメモリ4G、1.2GHz程度で大したマシンでもない。本当に開発する気がない。
いつの間にかどこかで意思決定がされていて、関与する機会がほとんどない。だがほとんどの社員がそれで良いと思ってる。失敗しても自分が決めたことじゃないから上層の責任だ、そう言えるので楽だから。
情報共有をしない、というか意図的にしないようにしているとまで感じる。連絡はメールと添付ファイルベースで行っているし、共有のファイルサーバなんてのもあったが一部のフォルダは権限を持った人間しか見られない。何で他の部や課が行った過去の見積や提案資料が自由に見られないんだよ。
ソースコードのリポジトリも同様。外部に公開しないのはまだわかるが、プロジェクト外にすら基本は公開していない。別に奪われて困る大した技術もない。
会社が用意した提案資料共有サイトみたいなのもあったが、それに至ってはもっとひどい。課長以上もしくは部長から承認を与えられた者のみ閲覧可能。共有とは。
どうでもいいことを決めるにも承認や根回しや説得が必要になる。それがプロジェクトの利害関係者ならまだわかるものの、まったく関わっていない上長(課長や部長、時には部門長)を通さないと進まないという異常さ。
利益率向上のためにコスト削減ということがしきりに言われており、過剰なコスト削減対応が生産性の低下を招いている。たとえば顧客に見せる資料以外は白黒で印刷しろ、みたいなルール。色がないために情報が伝わりにくい。というかそもそも印刷せずに各自のノートPCで見ろという話だが、先述したようにノートPCは低スペックすぎるので多くの社員がデスクトップを使っている。ITとは。
本当に無駄としか思えない承認・申請フローの煩雑さに加え、使っているシステムの使い勝手も悪く、ひどい日は一日がそうした事務作業で終わる。しかもそのシステムは自社で以前開発したものだというから泣けてくる。こんな作業が定常的に発生するのでいっそ事務員を派遣で雇うべきという提案が何度もされたが、課の予算をオーバーするから無理だという回答しか返ってこない。
表向きは社員の健康促進という触れ込みで残業時間削減を全社的に取り組んでいる。残業減らせと声をかけただけでは誰も帰らないので、勤怠システムと入退館管理システムを監視し、削減できていない組織や人間の評価を下げるようになった。
その結果、サービス残業が復活した。30時間を超えると部長に説明しないといけない、50時間を超えるとその上へ…みたいなループ。表向きの残業時間削減・コスト削減としては成功したかもしれないが、社員の残業時間を管理するとかいう無駄な仕事を増やしたし、管理される社員のストレスとサービス残業に繋がったので下策だと思う。
他人の残業時間をExcelにまとめる仕事があって、そこに給与が発生してると思うと泣きたい。
そもそも無駄な作業や工数至上主義で作業効率が悪いから残業しているので、残業が少ない奴が偉いと一斉に舵取りしただけでは生産性をちゃんと評価できていないことに変わりはない。一昔前の残業多い奴は頑張ってて偉い、というのと本質レベルで何も変わっていない。
マックでも良いけど、惰性で窓。
どこ行っても書くから、軽量(1kg未満)・小型(11.6インチ)なやつ。
タブレットや2 in 1みたいな、キーボードと本体をBluetoothで接続するのはダメ。
UTF-8のプレーンテキストが望ましい。Shift_JISは亜種あって困る。
どうしてもリッチなドキュメントが必要な時はOffice Online、Google Document使う。
縦書で出力する時はVerticalEditor使ってる。
ローカルは64GBのSSD。扱うファイルがほとんどプレーンテキストだからこの容量で済む。
物理メディア(USBメモリ、外付けHDD)より、大手各社が運用するサーバーの方が相対的に信頼性高い。
ローカル、クラウドの2箇所に同じデータがあるようにしている。
本当は3箇所(ローカルとクラウド2つ)に保存しておくと安全だけど面倒だからやってない。
留年した上に、色々とどん底だったので引きこもりがちになった。
暇だったので、ウェブサービスでも作ろうと思いたった。
どうにか形になったので、誰かの参考になればと思い、その経緯を書いてみる。
■出来上がるまでのあらすじ
ウェブサービスを作るには、プログラムが書けないとダメらしいので勉強する事に。
主にPHP,ruby,pythonなんかがメジャーらしく、最近ではrubyが人気だと知る。
Rubyを勉強しようかと思ったけれど、PHPのほうがオススメとどっかのブログに書いてあったのと教科書がたくさんあったのでPHPを勉強することに。
「よくわかるPHP」みたいな入門書で一ヶ月くらい勉強して、ある程度は書けるようになった。
本格的なウェブサービスを作るにはフレームワークを使えと書いてあったので、cakePHPを勉強した。
開発環境にXAMPPというのをインスコしようとしたけれど、上手く行かず、結局レンタルサーバー上で作る事に。
HTMLとかCSSとか、1から勉強するといつまでも終わらない気がしたので、フリーのテンプレートを探した。
http://cakephp.seesaa.net/article/20616700.html
ここのサイトは無料で商用化だったので、それをちょっとだけ変更して使った。
考えていたウェブサービスはTwitterのつぶやきを自動回収して検索できるというもの。
自動回収するには、プログラムを定期的に動かす必要があり、cronと言うらしい。
LINUXとかの知識が必要と書いてあったが、LINUXなんてわからないし、勉強しようにも空いているパソコンなんてないので焦る。
その後、レンタルサーバーによってはcronの機能を提供しているという情報を得る。
借りていたXサーバーにもその機能はあったので、書いたPHPプログラムを走らせてみたら、無事動いた。
後は、簡単にDBの仕組みと検索とページネーションというのを勉強した。
検索とページネーションを実現するのが、難しくてモチベーションが下がったけれど、プラグインという便利なものがあったのでそれを利用したらなんとかできた。cakePHPとかフレームワークはプラグインが充実していると後で知る。
このまま公開しようかと思ったけれど、セキュリティ関係が怖かったので一通り勉強した。
ゆーすけべーさんのサイトに「安全なWebアプリケーションの作り方」がオススメと書いてあったので、読んで実践した。
■完成
そして、なんとか完成したのが
@ごちです
というウェブサービス。
Twitterから食事の記録が簡単にとれるというウェブサービスです。はっきり言ってウェブサービス(笑)程度の出来ですが、自分としては頑張ったつもりです。
製作期間は一ヶ月くらいです。
ずっと家にいて、試行錯誤していたので作業時間は一日8時間くらいです。
多分、一流のプログラマなら半日もかからないで出来るレベルでしょうが、自分では思ったより早く出来たような気がしています。
これは上にも書いた通り、無料テンプレートを使ったのでほとんど勉強していません。
ただ、テンプレートをいじくるのにも最低限の知識は必要なので「HTML&CSS辞典」みたいなのを買ってきてわからない事はその都度調べていました。
・PHP
『よくわかるPHPの教科書』というので勉強した後、『パーフェクトPHP』で勉強した。
あと、プラグインなんかについてはその都度、グーグル先生に聞いたり、プログラマのブログを参考にさせてもらいました。
こことか、
http://torhamzedd.halteria.com/2012/01/cakephp20search-plugin2.html
こことか、
http://libro.tuyano.com/index2?id=734001(cakePHPに関しては、ここが1番わかりやすかった。個人的に)
『よくわかるPHPの教科書』で最低限のものを勉強した後、グーグル先生を使って独学。
「安全なWebアプリケーションの作り方」を読んで、自分の書いたプログラムをチェックしました。
フレームワークを使えば、(ある程度はフレームワーク側で処理してくれるので)初心者でも比較的簡単にセキュリティ対策ができるようです。
■偉そうにアドバイスなんかしてみる。
アドバイスなんて出来る立場じゃないけど、プログラムは最低限のものが書けて読めれば後は他力本願でなんとかなると思います。
難しそうな事があれば、ライブラリやフレームワークに頼ればなんとかなります。
あとは、集めてきたライブラリなんかを切り貼りすればどうにかなりました。
後はわからない事はグーグル先生か、質問サイトで聞けば教えて貰えます。
ただ、配列や変数などのプログラムの基本的な仕組みを理解しないとOKwavweとかヤフー知恵袋でも解答をもらえないような意味不明なエラーが出ます。
基本的な文法エラーは
http://jp.piliapp.com/php-syntax-check/
こういうサイトでチェックしていました。
エディタやなんかはvimとか高級な奴は多機能過ぎて意味不明だったので「サクラエディタ」を使っていました。
デプロイ(プログラムをウェブ上に公開して使えるように準備することらしいです)も自動化するべきらしいのですが、普通にFFFTPで手動でデプロイしていました。
まったくプログラムがわからない状態から初めて一ヶ月ほどでそれっぽいものが出来ました。
ネットの世界には自分みたいな初心者にもわかりやすく解説してくれている先輩たちがたくさんいます。
最低限のことは勉強する必要がありますが、後はグーグル先生や先輩のサイトに頼れば思ったより早くいろんなものが出来ると思います。
なにより、自分の書いたプログラムが動いているを見るとすごく感動します。
あ、よければ@ごちです使ってやってください。
http://d.hatena.ne.jp/yamasawa8911/20120519/1337407233
だそうなので、俺が思うところを書いておきます。
基本的にMacのほうが羨ましいとは思うけれども(まあ、MacBookとかが欲しいんだよね、きっと)、でもきっとMacなんてフルスペックで使えるわけない。
周りの子に自慢したいとかいうのであるならば、あるいはどうしてもiOSアプリが作りたいというんだったら、それしか選択肢がないけれども、そうじゃないんだったら辞めましょう。
あとWindowsも、Windowsアプリとか、C#をいじりたいんです!っていう話であるならば、それに固辞するのも結構ですけど、そうじゃなくて、ITに行きたいなら、Windowsを捨ててLinuxにしましょう。
自分はGentooが好きですけど、ハードコアすぎるので、Ubuntuのほうがいいかと思う。
Linuxとか難しいんじゃないの……とか思うかもしれないですけど、Ubuntuは素晴らしいです。
Ubuntuは、知り合いの絵師のパソコンに入れたら、わりと好評でちゃんと使っていたので、それなりにパソコンが使えるならば、ちゃんと使えます。
プログラミング言語関係は、そのOSに依存するような環境を使いたいというわけではないのなら、Linuxにしておいたほうが、無難に使えます。
CとJavaでもいいとは思うんだけど、どちらもコンパイルが必要だし、コードを書くのに、ある程度の量(書きたいときに気軽に書くという感じではない、という意味)が必要なので、もう一つ言語を覚えた方がいいです。
PHP、Ruby、Python、Perl、Clojure、Haskell、お好きな言語をどうぞ。
ただ、PHPはどちらかといえばWebアプリケーションよりかな?という気がするので、PerlかRubyかPythonがいいかとは思いますが、お好みで。
自分はPythonのほうが好きですけど、Rubyのほうが割と見つけてもらえる確率は高いかもしれません。
あと、パブリックマンも「Railsでいこう!」というブログ名だったので、尊敬する人にあわせるならRubyのほうがいいんじゃないかと。
こわいおじさんににらまれたいならPerlのほうがいいでしょう。
ちなみに、Ruby on Railsは、割とWebサービスを作るのが楽になります。Herokuとかありますしね。Webアプリケーション周りということだったら、ついでにそのプログラミング言語で使われているメジャーなフレームワークとか調べながら勉強するといいかもしれません。
で、上記を踏まえて、エディタをちゃんと使いましょう。
パワーが有り余っているなら、総合開発環境であるところのEclipseでもいいんだろうとは思うんですけど、それはおっくう、というのならば、ちゃんとエディタの使い方を覚えましょう。
もう既にUbuntuを入れていると思うので、EmacsかVimを使いましょう。Vimのほうが好きではあるんですけど、キーバインドや、その他の癖を考えるとEmacsのほうがいいかなあという気がします。
Ubuntuを入れたなら、Geditというエディタも、Windowsのメモ帳の非じゃないくらい極まったエディタなので、それでもいいです。Windowsがそんなに好きなら、サクラエディタを使うといいでしょう。
あなたはどうやら貧乏だけれども、インターネットは使えているようなので、英語を読む練習をするといいです。
英語なんて全くわからない?ノープロブレム。そんなの適当でいいです。「なんとなくこういう意味かなー」とか、あるいは英語を読むだけでクラクラしない程度でいいと思います。
英語を読めると便利です。少しだけ多くの解説が読めるからです。
あと、英語が読めると「pdf Orailly」という魔法の言葉が使えたりするんですけど、何に使うかは想像におまかせします。
で、上記を踏まえてなんですが、コードを書きましょう。
コードなんて書いてなんぼです。「如何に優秀なハッカーになるべきか」という記事はゴロゴロありますが、そんなのは気休めに読むべきで、まずはコードを書きましょう。
なんだかんだいって、コードを書くのは経験がモノをいいます。量を書きましょう。そして躓きましょう。最初から質なんて無理です。
躓いたら、なんで躓くのか考えましょう。また、「こんなところが、コードを書く点で不満だなあ」と思うことがあれば、それも考えていきましょう。
偉い人がいろんなソリューションを考えてくれています。最初からそのソリューションがなぜ素晴らしいかなんて理解できないとは思います。躓いて始めて「ああ、だからこういう開発手法がいるんだ」ということを理解できるでしょう。
ついでに、コードで躓いたら、その躓いたところを、Twitterアカウントに積極的に発信していきましょう。
そのついでに、そのプログラミング言語を学んでいるTwitterアカウントをフォローしましょう。
あなたの呟いていることによっては、その人は興味を持ってくれるでしょうし、場合によっては手助けをしてくれるかもしれません。
あなたがサービスを立ち上げたら、積極的にRTをしてくれるかもしれません。
だいたいなれてきたところで、自分が作りたいものを作ってみましょう。そして公開してみましょう。できるならGithubで。
Githubに載せる理由は、ソースコードを公開したほうが、突っ込まれる率が高くなり、それに応じて勉強になるというところと、あとはGitというバージョン管理システムの勉強をしていたほうが、のちのちに便利だからです。SVNとかありますが。
あと、コードの引き写しに関しては、ブログに書くか、あるいはコードの断片を載せるという意味で、Gistに載せるという点もありますが、その辺りはご自由に。
VPSを借りてみましょう。あなたが貧乏だというのはわかっています。VPSとは、仮想専用サーバーのことです。
別に最初っから何でも揃ってるようなホスティングサービスでもいいんですが、サーバーを一から立てるという作業は、勉強にもなります。下手な技術書より余程勉強になったりします。
最初から借りると宝の持ち腐れとなると思うので、一つのWebサービスでもいいので、それを自分のマシン内でのみ見られるようなったら、借りるというのは一つの手だと思います。
VPSがつらいというのならば、Herokuとかもありかもしれないです。
コードを書くのが辛いなら、コードを読みましょう。人のコードはアイデアの山です。
自分の場合は、割と実例が無いと、挙動がピンとこなかったりするので、コードを読むことのほうが多いです。
特に、その言語で有名なライブラリとかいいかもしれません。ガンガン読みましょう。
あとは若さでなんとかなるでしょう。
ついでに、この文章を「テメーはなんにもわかってねえんじゃボケ」という言い方をして修正してくれる人もいると思うので、そういう人のアドバイスも真摯に受けとりましょう。
http://anond.hatelabo.jp/20090618012903
こちらの元増田です。
はてなのお作法みたいなものがよく分からないけど、
各記事にトラバ返ししたほうがいいのかな…。
http://anond.hatelabo.jp/20090618014439
こういうのはだいたいが運なんだろうな。
次の仕事が面白いかどうかなんかは入ってみないとわからないことあるだろうな。
やっぱり運なんですかねー。
楽しそうな人もいるんですよね。
(社交辞令かもしれませんが)うちに来ないか、と誘われたりもしたんですが、
「そこで役に立てなかったら自分だけじゃなく引っ張ってくれた彼の顔も立たない」っていう不安が
強かったんですよね。
その人は僕の現場での仕事っぷりをそれなりに評価してくれてたようでありがたかったんですが、
逆に誰も僕を知らないところでどこまでやれるかを試したい気持ちも少なからずあったのかも。
http://anond.hatelabo.jp/20090618020443
運なのはまったく同意。
そうであるならどんどん次にいくしかない。
自分で道を切り開くしかないってことも分かってるつもりなんですが、
あんまりジョブホッパーみたいなことをやっていて、飽きっぽい根なし草みたいに思われても
まずいかな、とも思ったりしています。
できれば腰を据えて開発に専念できる会社に身を置きたいと思っているので…。
数か月前に経験したばかりの転職活動は、楽しくもなかなか体力・精神力の要るものだったし。
でも、踏ん切りをつけるなら早めのほうがいいですよね。
http://anond.hatelabo.jp/20090618023021
確かに「メールに書いてあったんだから」的な考えはお花畑だったと反省すべきだと思います…。
外に出してる情報は景気良さげなものばかりなもんで…
美辞麗句並べてた社長も僕がどんなことやってるのか把握してなさげです。
実際(そこに参画していない僕が勝手に想像すると)魅力的な案件に携わってる人もいるようなので、
やはり運に依るところも大きいんですかね。
http://anond.hatelabo.jp/20090618190513
IT戦士すげえなあって思う。
やっぱりIT業界の人から見ても、
あれって上澄みなの?
いちおうIT業界の末席を汚す身としても、すっげぇ上澄みにみえてしまいます。
僕もブログで技術的なエントリ書いてはてブで「これはすごい」タグつけられたいお!
http://anond.hatelabo.jp/20090618191639
と思っている俺みたいな三下から見ても
「こいつらクズだろ」
あるあるあるあるwwww
だから、自分の立ち位置がすごく不安定なものに感じてしまいます。
現場で活躍するためにスーパーエンジニアのエントリを参考に腕を磨くぜ!と思っていても、
http://anond.hatelabo.jp/20090618215310
あくびが出るような単純なCOBOLプログラムばっか書くような所に来てしまった……。
「内職する」「ツール作成に血道をあげる」
参考にさせていただきます。
内職はちょろちょろやってるんですけどねー。
いかんせん、数行のソース修正に対してコーディング以外にやることが多すぎる…。
Eclipseよりサクラエディタより、Excel読み書きしてる時間が多いです…。
飲み会の席で「○○君は技術力あって凄い助かる!」としか言われないような人間になれるぞ!
まあそれでも突き進むのが真のプログラマーだな。
真のプログラマー道、突き進みたいと思います。
オレは ようやく のぼりはじめた ばかりだからな
この はてしなく遠い プログラマー坂をよ…
さて、明日もjspにlogic:equalタグを埋め込む仕事が始まるお!
現場のリーダーが、既存のソースがそうなってるからなるべく合わせろって!
こんな愚痴エントリにコメントいただきありがとうございました。
次は明るい話題を提供できるよう頑張りたい所存です。
当方Web屋、小さい会社でデザイン、HTML&CSSコーディング、暇あればPHPやってます。
新卒入社1年なるしそろそろまたスキルアップにとCGアーツ協会のWebデザイン検定3級取得に次いで
噂のWebデザイン技能検定(今期で4回目の開催)こっそり受けて来たよ。
Web上の過去問を見てこれは無勉でも受かるなと思ってすぐに申し込んで
前日薄っぺらい参考書をさっと眺め意気揚々と突撃。
これはもしかすると落ちたかも分からんね。
実技
・Windows(XPSP2)かよ
学科
総合的な敗因はどうみてもネットも含め便利ツールに頼り過ぎてた。
学科はともかく実技はそれが顕著で隣の人の作業速度に付いてけず序盤頭真っ白、回答よく見直す暇なく終了
何度試行錯誤のショートカットキーを試みて失敗したか。
ああもうやだやだ。
3Kだの7Kだの言われるプログラマー1年目のオレが
プログラミング言語の種類にはC、VB、JAVA、Delphi、PHP、Perlとか無数にあるが
どれでもいいからひとつ好きなの選んで学べ。
どれにしようかと迷うぐらいならCかJAVAやっとけ。
いきなり難しいことしようとは考えず、入門書通りに文字を表示したり
掛け算したりそういうのを確実にやれ。
FizzBuzzっていう基礎さえできてれば屁をこく方が難しいプログラミングがある。
1からどんどん数を増やしていくプログラミングだ。
3の倍数になった場合は数字の変わりに「Fizz」と表示させて
5の倍数になった場合は数字の変わりに「Buzz」と表示させる。
3と5の公倍数になった場合は数字の変わりに「FizzBuzz」と表示させるシンプルなプログラムだ。
プログラミングできるって言っておいてこれもできない奴が結構いるわけだ。
とりあえず入門書買って順々に進んで行け。
大抵のサイトはやり方と簡単な説明だけで詳細な説明が載ってないから本は買え。
そして一気にやろうとするな。先週やったことを30分でもいいから今週にもしろ。
あと、目標を立てろ。1日10ページとか1章とかそんなんでいいから
そして最後の5分は今日やったことをノートでもブログにでも書け。
本とかの練習問題では目標タイムとか書いてあるからそれを守るように解いていけ。
時間を多めにとってある入門書の練習問題程度で目標タイムに届かなかったら前の章からやり直せ。
仕事は生産性が非常に大切だ。 仕事遅いのにできる人より残業して給料貰ってる汚い大人にはなるなよ。
とりあえず基礎だ基礎。
普通なら応用に進むのが普通だろうと思うが、これからプログラマになるわけだから
環境を変えてやってみるのもいいと思う。基礎さえ確実にマスターしておけば
応用的なものはその都度調べることの繰り返しで結構覚えれるもの。
ここからはメモ帳からサクラエディタや秀丸エディタに変えてプログラミングしてみたり
EclipseやVisual Studioを使ってこういったツールが非常に便利であることを体験しろ。
仕事はこういったツールがないとやっていけない。
そして意外とこういったツールを使いこなせていないプログラマが沢山いる。
使いこなすことによって仕事量が増えるだけでなく、ミスも減らすことができる。