A parallel to serial input converter like the 74HC165 is cheap, available and uses 3 lines to interface as many of these chips as you need (they cascade). Lots of examples (code and circuits) on how these are used. Each chip takes 8 bits in parallel and squirts them out as a serial stream that you can assemble into a byte at the Arduino end. Datasheet here http://www.nxp.com/documents/data_sheet/74HC_HCT165.pdf
The reverse comms is done using the 74HC595 chip.